Estimator로 노이즈 관리 구성
패키지 버전
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하는 것을 권장합니다.
qiskit-ibm-runtime~=0.47.0
노이즈를 관리하는 방법에는 여러 가지가 있으며, 일반적으로 오류가 발생하기 전에 방지하기 위해 다양한 오류 완화 및 오류 억제 기법을 사용합니다. 이러한 기법은 보통 전처리 오버헤드를 유발합니다. 따라서 결과를 완벽히 하는 것과 Job이 적절한 시간 내에 완료되도록 하는 것 사이의 균형을 달성하는 것이 중요합니다.
Estimator는 다음과 같은 노이즈 관리 기법을 지원해요. 각 기법에 대한 설명은 오류 완화 및 억제 기법을 참조하세요. 이러한 기법을 활성화하는 예시는 사용자 지정 노이즈 관리 설정 섹션을 참조하세요.
동적 디커플링
활성화 방법: options.dynamical_decoupling.enable = True
API 참조: DynamicalDecouplingOptions
주요 옵션: sequence_type
Pauli 트월링
활성화 방법: options.twirling.enable_gates = True
API 참조: TwirlingOptions
주요 옵션: num_randomizations, shots_per_randomization
TREX
ZNE
활성화 방법: options.resilience.zne_mitigation = True
API 참조: ZneOptions
주요 옵션: noise_factors, extrapolator
PEA
활성화 방법: (ZNE도 함께 활성화해야 함) options.resilience.zne_mitigation = True 및 options.resilience.zne.amplifier = "pea"
API 참조: ZneOptions
주요 옵션: noise_factors, extrapolator
PEC
복원력 수준
resilience_level은 오류에 대한 복원력을 얼마나 구축할지를 지정합니다. 높은 수준은 더 긴 처리 시간을 대가로 더 정확한 결과를 생성합니다. 복원력 수준은 Primitive 쿼리에 노이즈 관리를 적용할 때 비용/정확도 트레이드오프를 구성하는 데 사용할 수 있습니다. 노이즈 관리는 관련 Circuit 모음 또는 앙상블의 출력을 처리하여 결과의 오류(편향)를 줄입니다. 오류 감소 정도는 적용된 방법에 따라 다릅니다. 복원력 수준은 사용자가 자신의 애플리케이션에 적합한 비용/정확도 트레이드를 추론할 수 있도록 노이즈 관리 방법의 세부적인 선택을 추상화합니다.
이를 감안하면, 각 수준은 다양한 시간-정확도 트레이드오프를 실험할 수 있도록 양자 샘플링 오버헤드 수준이 증가하는 방법 또는 방법들에 해당합니다. 다음 표는 각 Primitive에 대해 어떤 수준과 해당 방법이 사용 가능한지 보여줍니다.
| 복원력 수준 | 설명 | 기법 |
|---|---|---|
| 0 | 완화 없음 | 없음 |
| 1 [기본값] | 최소 완화 비용: 읽기 오류와 관련된 오류 완화 | 트월된 읽기 오류 소거 (TREX) 측정 트월링 |
| 2 | 중간 완화 비용. 일반적으로 Estimator의 편향을 줄이지만 제로 편향이 보장되지는 않습니다. | 수준 1 + 제로 노이즈 외삽 (ZNE) 및 게이트 트월링 |
복원력 수준은 현재 베타 상태이므로 샘플링 오버헤드와 솔루션 품질은 Circuit마다 다를 수 있습니다. 새로운 기능, 고급 옵션 및 관리 도구는 순차적으로 출시될 예정입니다. 특정 노이즈 관리 방법이 각 복원력 수준에서 적용된다는 보장이 없습니다.
복원력 수준으로 Estimator 구성
복원력 수준을 사용하여 노이즈 관리 기법을 지정하거나, 사용자 정의 노이즈 관리 설정에 설명된 대로 기법을 개별적으로 설정할 수 있어요.
복원력 수준에 추가하여 수동으로 지정하는 옵션은 복원력 수준에 의해 정의된 기본 옵션 세트에 추가로 적용됩니다. 따라서 원칙적으로 복원력 수준을 1로 설정하고 측정 완화를 끌 수 있지만, 이는 권장하지 않습니다.
예를 들어, 복원력 수준을 0으로 설정하면 zne_mitigation이 꺼지지만, estimator.options.resilience.zne_mitigation = True는 해당 값을 재정의합니다.
예제
다음 코드는 resilience_level 2를 설정하여 ZNE, TREX 및 게이트 트월링을 활성화합니다.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
사용자 정의 노이즈 관리 설정
Estimator 옵션을 사용하여 개별 노이즈 관리 방법을 켜고 끌 수 있습니다.
- 모든 옵션이 모든 유형의 회로에서 함께 작동하는 것은 아니에요. 자세한 내용은 기능 호환성 표를 참조하세요.
qiskit-ibm-runtimev0.50.0에서 도입된 새로운 클라이언트 측 Estimator를 사용하는 경우, PEA와 PEC를 사용하려면 별도의 노이즈 학습 작업이 필요해요. 자세한 내용은 서버 측에서 클라이언트 측 Sampler 및 Estimator로 마이그레이션을 참조하세요.
여러 옵션을 사용하는 전체 예제
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
모든 오류 완화 끄기
모든 오류 완화를 끄는 방법은 Estimator 옵션 가이드의 모든 오류 억제 및 완화 끄기 섹션을 참조하세요.
다음 단계
- IBM Quantum Learning의 비용 함수 강의에서 오류 완화를 사용하는 예제를 살펴보세요.
- 오류 완화 및 오류 억제 기법에 대해 자세히 알아보세요.
- Estimator 옵션을 살펴보세요.
- 작업을 실행할 실행 모드를 결정하세요.