QDK로 오류 수정을 시작하세요

Microsoft 퀀텀 개발 키트(QDK)에는 QEC(양자 오류 수정) 프로토콜을 개발하고 테스트하는 Python도구가 포함되어 있습니다. 모듈을 qdk.ec 사용하여 오류 수정 코드를 분석하고, 실행 가능한 프로토콜을 빌드하고, 프로토콜 선언의 유효성을 검사하고, 회로 오류를 연구합니다. qdk.simulation를 사용하여 이러한 프로토콜을 통해 논리 프로그램을 실행합니다.

QDK 오류 수정 도구를 이해하세요

QDK 오류 수정 워크플로는 다음과 같은 패키지 및 모듈을 사용합니다.

Component 그걸 사용해
qodec 코드, 명령 집합, 가젯, 계층 및 완전한 QEC 프로토콜을 정의하고 저장합니다.
qdk.ec 코드 및 가젯을 분석하고, 기준 qodecs를 빌드하고, 수식을 파생시키고, 프로토콜 선언을 감사하고.
qdk.simulation QIR를 통해 Quantum Intermediate Representation(qodec) 프로그램을 실행하고 디코더를 적용합니다.
qdk.simulation.decoders 기본 제공 syndrome 디코더를 선택하거나, 프레임을 추적하거나, 선택적 deq 디코더에 연결합니다.
qdk.qre 내결함성 리소스 추정을 위해 QEC 모델의 공간, 시간 및 오류 비용을 추정합니다.

A qodec 는 실행 가능한 QEC 프로토콜에 대한 공식적인 설명입니다. 하나 이상의 레이어를 통해 논리 명령어를 물리적 회로에 연결합니다. qodec 패키지는 이 데이터 모델과 그 YAML 표현을 정의합니다. qdk.ec 모듈은 모델에서 사실을 파생시키고 해당 선언이 회로와 일치하는지 확인합니다.

자세한 내용은 qodec개요를 참조하세요.

qdk.qre 모듈은 용도가 다릅니다. 오류 수정 체계의 리소스 비용을 모델화합니다. 가젯을 정의, 검사 또는 실행 qodec 하지 않습니다. QDK의 양자 리소스 예측에 대한 자세한 내용은 Microsoft Quantum 리소스 예측기란?을 참조하세요.

qodec 프로토콜 구성 요소 이해

다음 구성 요소는 qodec 프로토콜을 정의하고 해당 실행을 지원합니다.

Component Description
코드 코드 공간을 정의하는 안정자 및 논리 연산자의 정적 집합입니다.
명령어 집합 qodec 계층이 지원하는 논리적 또는 물리적 작업입니다.
가젯 다음 하위 계층에서 작업을 통해 명령을 구현하는 회로입니다.
계층 한 명령 집합에서 하위 수준 명령 집합으로의 매핑입니다.
인코딩 가젯 경계에서 논리 블록과 회로 큐비트 간의 연결입니다.
확인 선언된 관계가 성립할 때 0과 같아야 하는 패리티 수식입니다.
표시값 회로 결과 및 프레임 기호를 논리적 결과 또는 플래그에 매핑하는 수식입니다.
Flag 명령이 수락 조건을 충족하는지 여부를 보고하는 이름이 지정된 판독값입니다.
해독기 증후군 증거를 사용하여 교정 및 논리적 결과를 유추하는 구성 요소입니다.

qodec에는 여러 계층이 포함될 수 있습니다. 최상위 계층은 인코딩된 블록에 대한 논리 작업을 정의할 수 있습니다. 위쪽 계층의 가젯은 다음 하위 계층의 명령어를 호출할 수 있습니다. 아래쪽 계층에는 시뮬레이터가 실행하는 실제 작업이 포함됩니다.

예제 프로토콜 워크플로

일반적인 워크플로에는 6단계가 있습니다. 다음 단계에서는 qdk.ec 모듈의 함수 및 클래스를 사용합니다.

  1. 코드를 정의합니다. qodec.Code 안정화 장치 및 논리 Pauli 연산자를 만듭니다.
  2. 코드를 분석하세요. CodeProfile 클래스를 사용하여 논리 연산자를 검사하고, 증후군을 계산하고, 코드 거리를 계산합니다.
  3. qodec를 빌드하거나 로드합니다. build_qodec 함수를 사용하여 기준 프로토콜을 만들거나 YAML에서 기존 qodec을 로드합니다.
  4. 프로토콜을 완료하고 검증합니다. filled 함수를 사용하여 지원되는 점검 및 판독 식을 파생합니다. audit 함수를 사용하여 일관되지 않거나 불완전한 선언을 찾습니다.
  5. 회로 오류를 분석합니다. GadgetProfile 클래스를 사용하여 논리 작업, 오류 효과 및 가젯 거리를 검사합니다.
  6. 논리 프로그램을 실행하세요. 또는 코드를 (으)로 컴파일합니다. QIR 및 qodec을 qdk.simulation.run_qir에 전달한 다음 디코더 및 노이즈 모델을 선택합니다.

다음 코드는 이 워크플로의 기본 개체를 보여 봅니다.

import qodec
from qdk import ec
from qdk.simulation import run_qir

code = qodec.Code(
    "C4",
    stabilizers=["X_0 X_1 X_2 X_3", "Z_0 Z_1 Z_2 Z_3"],
    x=["X_0 X_1", "X_0 X_2"],
    z=["Z_0 Z_2", "Z_0 Z_1"],
)

code_profile = ec.CodeProfile(code)
print("Code distance:", code_profile.distance())

protocol = ec.build_qodec(code, strategy="bare-css/v1", strict=False)
print(ec.audit(protocol))

# Compile a logical program to QIR before you call run_qir.
# results = run_qir(qir, qodec=protocol, shots=100)

이 예제의 bare-css/v1 전략은 플래그 큐비트 없이 간단한 기준 프로토콜을 만듭니다. 워크플로를 검사하는 데 도움이 되지만 내결함성 가젯을 보장하지는 않습니다. 프로토콜 구현을 선택하기 전에 가젯 거리 분석을 사용하세요.

프로토콜 유효성 검사를 오류 분석과 분리

프로토콜 감사 및 거리 분석은 QEC 프로토콜의 다양한 측면을 평가합니다.

  • 프로토콜 검사는 오류가 발생하지 않을 때 선언된 프로토콜이 회로 및 수식과 일치하는지 확인합니다.
  • 거리 분석은 감지되지 않은 논리적 실패를 일으킬 수 있는 허용 가능한 오류 또는 회로 오류의 최소 수를 결정합니다.

audit 함수를 사용하여 노이즈리스 일관성을 확인합니다. 감사는 코드 대수, 명령 선언, 가젯 작업, 검사, 판독값, 플래그, 프레임 관계 및 qodec 개체 간 참조를 확인합니다.

문제가 없다고 보고하는 감사 결과는 내결함성을 보장하지 않습니다. 회로는 오류 없이 올바른 논리 동작을 구현할 수 있으며 하나의 물리적 결함이 발생한 후 실패할 수 있습니다. 코드를 분석하려면 CodeProfile.distance 메서드를, 각 회로 구현을 분석하려면 GadgetProfile.distance 메서드를 사용합니다.

시끄러운 시뮬레이션에 프로토콜을 사용하기 전에 프로토콜 감사를 실행하고 코드 및 가젯 거리를 분석합니다.

건설 전략을 선택

이 함수는 build_qodec 두 가지 베이스라인 CSS 생성 전략을 지원합니다.

Strategy Description
flagged-css/v1 플래그가 지정된 CSS 구성을 사용하고 코드 거리에서 플래그 수를 선택합니다. 이 전략은 기본값입니다.
bare-css/v1 플래그 큐비트를 사용하지 않고 플래그 수를 선택하는 거리 계산을 건너뜁니다. 검토 및 초기 개발에 사용합니다.

두 전략 모두 다음과 같은 논리적 지침을 만들려고 합니다.

  • prepare_z_all
  • prepare_x_all
  • syndrome
  • measure_z_all
  • measure_x_all
  • h_all
  • cx_all

모든 코드가 모든 후보를 지원하는 것은 아닙니다. 기본 설정 strict=True에서는 build_qodec이(가) 명령을 빌드하고 확인할 수 없을 때 오류를 발생시킵니다. build_qodec를 사용하면 strict=False는 지원되는 지침을 유지하고 건너뛴 각 지침을 qodec 메타데이터에 기록합니다.

다음 작업 선택

전체 워크플로를 따르는 완전한 Notebook은 리포지토리의 QDK를 참조하세요.