Skip to main content
IBM Quantum Platform

특별히 조정된 지침

기본적으로, IBM® 양자 컴퓨터의 양자 게이트 및 판독 작업은 일반적인 사용 사례 전반에 걸쳐 최적의 성능을 발휘하도록 보정되어 있습니다. 그러나 일부 워크로드의 경우, 매개변수가 다르게 조정된 명령어를 사용할 때 더 나은 성능을 발휘하기도 합니다. 예를 들어, ( MidCircuitMeasuremeasure_2 )는 회로 중간 지점에서의 측정에 특화된 판독 연산이며, 속도가 느린 cz 게이트는 일부 오류 완화 워크플로의 결과를 개선할 수 있습니다.

특별히 조정된 지침은 두 가지 형태로 제공되며, 각각 다른 방식으로 접근할 수 있습니다:

  • 서명이 다른 명령어들은 기본 보정 과정에서 표준 명령어와 함께 보정되므로, 다른 명령어와 마찬가지로 회로에 추가할 수 있습니다. 이러한 것들은 대개 measure_2.과 같은 접미사로 식별됩니다.
  • 대체 보정 방식은 기본 보정의 일부를 다르게 조정된 매개변수로 대체합니다. 백엔드를 불러올 때 calibration_id 를 전달하여 하나를 선택합니다.

IBM 양자 컴퓨터의 보정 방법에 대해 알아보려면 ‘모니터링, 보정 및 벤치마킹’을 참조하십시오.


서명이 다른 지침

이 명령어들은 표준 명령어 세트와 호환되도록 조정되어 있으므로, 이를 지원하는 백엔드를 불러오기 위해 별도의 조치를 취할 필요는 없습니다. 이를 사용하려면 회로에 해당 명령어를 qiskit-ibm-runtime 추가하십시오.

명령어
설명
일반적인 사용 사례
Qiskit에서 사용하기
프로세서 제품군
measure_2더 짧은 측정 펄스회로 중간 측정MidCircuitMeasure (버전 v0.43.0 이상)헤론, 나이트호크 r2
reset_2다음과 같은 더 짧은 조건부 리셋 펄스를 사용하는 measure_2회로 중간 큐비트 리셋MidCircuitReset (버전 v0.49.0 이상)왜가리
measure_reset이러한 measure 측정 역시 큐비트를 초기화합니다*큐비트의 측정 및 초기화MeasureReset (버전 v0.50.0 이상)헤론, 나이트호크 r2
measure_reset_2이와 measure_2 같은 짧은 측정 역시 큐비트를 초기화합니다*회로 실행 도중 큐비트의 상태를 측정하고 초기화하기name="measure_reset_2" ( v0.50.0 이상) MeasureReset 으로 초기화헤론, 나이트호크 r2
xslow지속 시간이 연장된 비트 플립(X) 게이트선택 후 처리 및 오류 완화. 이는 사후 선택 단계에서 해당 x_pulse_type 옵션의 기본값입니다XSlowGate (버전 v0.50.0 이상)모두

* 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)
Note

모든 QPU에서 대체 보정 기능을 사용할 수 있는 것은 아닙니다.

게이트 보정 속도 저하

슬로우 게이트 보정은 게이트 cz 속도를 기본 보정값보다 느리게 조정합니다. cz 게이트 속도를 늦추면 오차 완화 기능이 포함된 대규모 관측량 추정 워크플로우의 성능이 향상될 수 있지만, 회로의 총 소요 시간이 늘어남에 따라 추가적인 비결합 현상이 발생하기도 합니다.

Heron 프로세서에서는 2단계 시스템( TLS ) 바이어스 제어의 두 가지 모드를 통해 저속 게이트 보정 기능도 사용할 수 있습니다:

  • DC TLS 바이어스는 최상의 순간 성능을 발휘하도록 최적화되어 있습니다. 기본 보정 설정에서는 DC TLS 바이어스를 사용합니다.
  • AC TLS 바이어스는 TLS 바이어스를 조절하여 시간이 지남에 따라 디바이스 오류를 안정화시키며, 이를 통해 긴 워크플로우 동안 디바이스의 노이즈 모델을 안정적으로 유지합니다. 자세한 내용은 『 고전적 검증 없이 관측 가능한 추정(Observable Estimation in the Absence of Classical Verification)』의 “잡음 안정화(Noise stabilization)” 항목을 참조하십시오.

Nighthawk 프로세서는 TLS 바이어스를 사용하지 않으므로, 느린 게이트 보정이 한 번만 수행됩니다.

보정 ID
프로세서 제품군
TLS 바이어스
권장 대상
없음 (기본 보정)모두DC (헤론)일반적인 용도. 특히 피크드 회로(peaked circuits)나 SQD, SKQD 워크플로우와 같이 비트스트링을 전통적인 방식으로 정제할 수 있는 워크로드와 오류 검출 기능이 포함된 워크로드에 권장됩니다.
slow_gates_dc왜가리유통 센터대규모 관측값 추정 워크플로우, 특히 제로 노이즈 외삽법(ZNE)과 같은 휴리스틱 오차 완화 기법을 사용하는 워크플로우.
slow_gates_ac왜가리AC장시간 세션 동안 안정적인 오류 발생률을 요구하는 워크플로우. 확률적 오차 증폭(PEA) 및 확률적 오차 상쇄(PEC)와 같이 노이즈 학습이 포함된 워크플로우에 적극 권장합니다.
slow_gates나이트호크적용할 수 없습니다.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")
Tip

를 사용할 때는 워크플로우에 포함된 모든 작업을 단일 세션으로 제출하여 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 예정인 백엔드와 동일한 보정 설정을 사용하는 백엔드를 기준으로 회로를 트랜스파일하십시오.


다음 단계

권장사항
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.