주 콘텐츠로 건너뛰기
이 프로젝트는 베타 단계입니다. 버그를 발견하셨나요? GitHub 이슈 만들기. 질문이나 아이디어가 있으신가요? Discussions에서 질문하기 — 피드백을 기다립니다!
이 페이지의 번역 품질은 어떻습니까?

특별히 캘리브레이션된 명령

기본적으로 IBM® 양자 컴퓨터의 양자 게이트와 판독 연산은 일반적인 사용 사례 전반에서 최적의 성능을 내도록 캘리브레이션되어 있어요. 하지만 일부 워크로드는 파라미터를 다르게 조정한 명령을 사용하면 더 나은 결과를 얻을 수 있어요. 예를 들어 MidCircuitMeasure(measure_2)는 회로 중간 측정에 맞춰진 판독 연산이고, 더 느린 cz 게이트는 일부 오류 완화 워크플로의 결과를 개선할 수 있어요.

특별히 캘리브레이션된 명령은 두 가지 형태가 있으며, 접근 방법이 서로 달라요.

  • 서명이 다른 명령은 기본 캘리브레이션에서 표준 명령과 함께 캘리브레이션되므로, 다른 명령과 마찬가지로 회로에 추가하면 돼요. 보통 measure_2처럼 접미사로 구분해요.

  • 대체 캘리브레이션은 기본 캘리브레이션의 일부를 다르게 조정한 파라미터로 대체해요. 백엔드를 가져올 때 calibration_id를 전달해 선택해요.

IBM 양자 컴퓨터가 캘리브레이션되는 방식은 모니터링, 캘리브레이션, 벤치마킹을 참조하세요.

서명이 다른 명령​

이 명령들은 표준 명령 세트와 함께 캘리브레이션되므로, 이를 지원하는 백엔드를 가져오기 위해 특별히 해야 할 일은 없어요. 사용하려면 해당하는 qiskit-ibm-runtime 명령을 회로에 추가하세요.

명령설명일반적인 사용 사례Qiskit에서 사용프로세서 계열
measure_2더 짧은 측정 펄스회로 중간 측정MidCircuitMeasure (v0.43.0 이상)Heron, Nighthawk r2
reset_2measure_2를 사용하는 더 짧은 조건부 리셋 펄스회로 중간 큐비트 리셋MidCircuitReset (v0.49.0 이상)Heron
measure_resetmeasure처럼 측정하면서 큐비트도 리셋함*큐비트를 측정하고 리셋MeasureReset (v0.50.0 이상)Heron, Nighthawk r2
measure_reset_2measure_2처럼 더 짧게 측정하면서 큐비트도 리셋함*회로 중간에 큐비트를 측정하고 리셋name="measure_reset_2"로 MeasureReset을 초기화 (v0.50.0 이상)Heron, Nighthawk r2
xslow지속 시간이 늘어난 비트 플립(X) 게이트사후 선택 및 오류 완화. 사후 선택 패스의 x_pulse_type 옵션 기본값임All

. | XSlowGate (v0.50.0 이상) | All |

* Heron 프로세서에서는 리셋이 측정 결과에 따라 조건부로 수행돼요. Nighthawk r2 프로세서에서는 리셋이 무조건 수행돼요.

이 명령들은 모든 백엔드에서 지원되지는 않으므로, 사용하기 전에 백엔드가 지원하는 명령을 확인하세요.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>")

print(backend.supported_instructions)

특정 명령을 지원하는 모든 백엔드를 찾으려면 다음을 사용하세요.

service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)

instruction_signatures를 사용해 이러한 특별히 캘리브레이션된 명령의 서명을 확인하세요.

print(backend.configuration().instruction_signatures)

대체 캘리브레이션​

대체 캘리브레이션은 기본 캘리브레이션의 일부를 다르게 조정한 파라미터로 대체해요. 각 대체 캘리브레이션에는 캘리브레이션 ID가 있으며, 사용 가능 여부는 QPU에 따라 달라요.

대체 캘리브레이션을 사용하려면 백엔드를 가져올 때 해당 calibration_id를 전달하세요. 백엔드의 타깃, 그리고 이에 따라 트랜스파일러는 해당 캘리브레이션의 명령 속성을 사용하며, 백엔드에서 실행하는 프리미티브 작업도 그 캘리브레이션으로 실행돼요.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")

print(backend.calibration_id)
참고

대체 캘리브레이션은 모든 QPU에서 사용할 수 있는 것은 아니에요.

느린 게이트 캘리브레이션​

느린 게이트 캘리브레이션은 cz 게이트를 기본 캘리브레이션보다 느리게 조정해요. 더 느린 cz 게이트는 오류 완화를 사용하는 대규모 관측값 추정 워크플로의 성능을 개선할 수 있지만, 회로의 전체 지속 시간도 늘어나 결어긋남이 추가로 발생해요.

Heron 프로세서에서는 느린 게이트 캘리브레이션을 두 가지 이준위계(TLS) 바이어스 제어 모드로도 사용할 수 있어요.

  • DC TLS 바이어스는 순간 성능을 최대로 높이도록 최적화되어 있어요. 기본 캘리브레이션은 DC TLS 바이어스를 사용해요.

  • AC TLS 바이어스는 TLS 바이어스를 변조해 시간에 따른 장치 오류를 안정화하며, 긴 워크플로 동안 장치의 노이즈 모델을 안정적으로 유지해요. 자세한 내용은 Observable Estimation in the Absence of Classical Verification의 "노이즈 안정화"를 참조하세요.

Nighthawk 프로세서는 TLS 바이어스를 사용하지 않으므로 느린 게이트 캘리브레이션이 하나뿐이에요.

캘리브레이션 ID프로세서 계열TLS 바이어스권장 용도
없음 (기본 캘리브레이션)AllDC (Heron)일반적인 사용. 특히 피크 회로나 SQD 또는 SKQD 워크플로처럼 비트열을 고전적으로 정제할 수 있는 워크로드와, 오류 검출을 사용하는 워크로드에 권장해요.
slow_gates_dcHeronDC대규모 관측값 추정 워크플로, 특히 영잡음 외삽법(ZNE)과 같은 휴리스틱 오류 완화를 사용하는 워크플로.
slow_gates_acHeronAC긴 세션 동안 안정적인 오류율이 필요한 워크플로. 확률적 오류 증폭(PEA), 확률적 오류 상쇄(PEC)처럼 노이즈 학습이 포함된 워크플로에 적극 권장해요.
slow_gatesNighthawk해당 없음ZNE, PEA, PEC와 같은 오류 완화를 사용하는 관측값 추정 워크플로.

예를 들면 다음과 같아요.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")

# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
팁

slow_gates_ac를 사용할 때는 장치의 노이즈가 안정적인 동안 작업이 실행되도록, 워크플로의 모든 작업을 하나의 세션에 제출하세요.

게이트 지속 시간 확인​

느린 게이트 캘리브레이션은 cz 게이트의 지속 시간을 늘리므로, 기본 캘리브레이션과 지속 시간을 비교해 회로에 미치는 영향을 파악하세요. 백엔드의 타깃을 사용해 특정 큐비트 쌍에 대한 cz 게이트의 지속 시간(초 단위)을 확인할 수 있어요.

default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk

qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)

타깃에는 선택한 캘리브레이션이 반영되므로, 실행하려는 것과 동일한 calibration_id를 사용하는 백엔드를 기준으로 회로를 트랜스파일하세요.

다음 단계​

권장 사항