옵션 소개
Qiskit Runtime 프리미티브를 필요에 맞게 사용자 정의하기 위해 옵션을 사용할 수 있습니다.
구조
프리미티브를 호출할 때 옵션 클래스 또는 딕셔너리를 사용하여 옵션을 전달할 수 있습니다. resilience_level과 같이 자주 사용되는 옵션은 첫 번째 수준에 있습니다. 다른 옵션은 execution과 같은 카테고리로 그룹화됩니다. 옵션을 다음 형식으로 지정하세요: options.option.sub-option.sub-sub-option = choice. 예를 들어: options.dynamical_decoupling.enable = True.
기본값
옵션의 값을 지정하지 않으면 Unset의 특수 값이 지정되고 서버 기본값이 사용됩니다. 따라서 코드 버전에 관계없이 기본값은 동일합니다.
각 프리미티브의 "options" 가이드에 있는 "옵션 클래스 요약" 섹션의 표에 기본값이 나열되어 있습니다.
옵션 설정
프리미티브가 구성되기 전에 옵션 클래스의 인스턴스 또는 딕셔너리로 프리미티브에 전달할 옵션을 정의할 수 있습니다. 프리미티브는 해당 옵션의 복사본을 만들며, 이는 원래 딕셔너리나 옵션 인스턴스를 변경해도 프리미티브가 소유한 옵션에는 영향을 미치지 않음을 의미합니다.
또한 프리미티브가 구성된 후에도 옵션을 변경할 수 있습니다. 애플리케이션에 가장 적합한 워크플로를 사용하세요.
- 프리미티브 초기화 중 또는 초기화 후에 사용 가능한 옵션을 확인할 수 있습니다.
- 옵션의 값을 지정하지 않으면
Unset의 특수 값이 지정되고 서버 기본값이 사용됩니다. options속성은dataclassPython 타입입니다. 내장asdict메서드를 사용하여 딕셔너리로 변환할 수 있습니다.
options 클래스
프리미티브 클래스의 인스턴스를 생성할 때 options 클래스의 인스턴스를 전달할 수 있습니다. 그 옵션은 run()을 사용하여 계산을 수행할 때 적용됩니다. 옵션을 다음 형식으로 지정하세요: options.option.sub-option.sub-sub-option = choice. 예를 들어: options.dynamical_decoupling.enable = True.
전체 클래스 세부 정보는 SamplerOptions 또는 EstimatorOptions를 참조하세요.
다음 예제는 Estimator 프리미티브를 사용하지만, 다른 프리미티브의 구문도 유사합니다.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
딕셔너리
프리미티브를 초기화할 때 딕셔너리로 옵션을 지정할 수 있습니다.
다음 예제는 Estimator 프리미티브를 사용하지만, 다른 프리미티브의 구문도 유사합니다.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
초기화 후 옵션 업데이트
자동 완성을 활용하려면 _primitive_.options.option.sub-option.sub-sub-option = choice 형식으로 옵션을 지정하거나, update() 메서드를 사용하여 일괄 업데이트를 할 수 있습니다.
프리미티브를 초기화한 후 옵션을 설정하는 경우에는 프리미티브의 옵션 클래스(EstimatorOptions 또는 SamplerOptions)를 인스턴스화할 필요가 없습니다.
다음 예제는 Estimator 프리미티브를 사용하지만, 다른 프리미티브의 구문도 유사합니다.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
다음 단계
- 오류 억제 및 오류 완화를 구성하는 방법에 대한 자세한 내용을 확인하세요.
- Estimator 옵션에 대해 더 알아보세요.
- Sampler 옵션에 대해 더 알아보세요.
- Executor 옵션에 대해 더 알아보세요.