Sampler 옵션 지정
패키지 버전
이 페이지의 코드는 다음 요구사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하는 것을 권장합니다.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
옵션을 사용하여 Sampler 프리미티브를 커스터마이즈할 수 있습니다. 이 섹션에서는 Qiskit Runtime 프리미티브 옵션을 지정하는 방법에 초점을 맞춥니다. 프리미티브의 run() 메서드 인터페이스는 모든 구현에서 공통이지만, 옵션은 그렇지 않습니다. qiskit.primitives.BackendSamplerV2 및 qiskit_aer.primitives.SamplerV2 옵션에 대한 정보는 해당 API 참조를 확인하세요.
Sampler 옵션 설정
Sampler를 초기화할 때, 초기화 후, 또는 Sampler가 초기화된 후에 옵션을 업데이트할 수 있습니다. 이러한 기법을 사용하는 방법은 옵션 소개 주제를 참조하세요.
또한 다음 섹션에서 설명하는 바와 같이 run() 메서드에서 shots 값을 설정할 수 있습니다.
Run() 메서드
run()에 전달할 수 있는 값은 인터페이스에 정의된 것, 즉 shots뿐입니다. 이는 현재 실행에 대해 default_shots에 설정된 값을 덮어씁니다.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d8286680bvlc73d1vmu0', 'sampler')>
특수한 경우
Shots
SamplerV2.run 메서드는 두 가지 인수를 받습니다. PUB별 shots 값을 지정할 수 있는 PUB 목록과 shots 키워드 인수입니다. 이 shots 값들은 Sampler 실행 인터페이스의 일부이며, Runtime Sampler의 옵션과는 독립적입니다. Sampler 추상화를 준수하기 위해 옵션으로 지정된 값보다 우선합니다.
단, PUB나 run 키워드 인수에서 shots가 지정되지 않은 경우(또는 모두 None인 경우), 옵션의 shots 값이 사용되며, 특히 default_shots가 사용됩니다.
정리하면, 특정 PUB에 대해 Sampler에서 shots를 지정하는 우선순위는 다음과 같습니다.
- PUB에서 shots를 지정하면 해당 값을 사용합니다.
run에서shots키워드 인수가 지정되면 해당 값을 사용합니다.twirling이 활성화되어 있으면(기본값 True),twirling옵션으로 지정된num_randomizations와shots_per_randomization의 곱이 사용됩니다.sampler.options.default_shots가 지정되면 해당 값을 사용합니다.
따라서 가능한 모든 위치에서 shots가 지정된 경우, 가장 높은 우선순위를 가진 값(PUB에서 지정된 shots)이 사용됩니다.
PUB 및 run에서 지정된 shots가 더 높은 우선순위를 갖지만, twirling이 활성화된 경우 num_randomizations와 shots_per_randomization의 곱이 shots 값보다 작으면 작업이 실패합니다. 이 시나리오에서 SamplerV2는 지정된 num_randomizations에 shots를 할당할 수 없습니다.
예시:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d82868ugbeec73alfa80', 'sampler')>
사용 가능한 옵션
다음 표는 최신 버전의 qiskit-ibm-runtime의 옵션을 설명합니다. 이전 옵션 버전을 보려면 qiskit-ibm-runtime API 참조를 방문하여 이전 버전을 선택하세요.
default_shots
dynamical_decoupling
동적 디커플링 오류 완화 설정을 제어합니다.
dynamical_decoupling.enable
선택지: True, False
기본값: False
dynamical_decoupling.extra_slack_distribution
선택지: middle, edges
기본값: middle
dynamical_decoupling.scheduling_method
선택지: asap, alap
기본값: alap
dynamical_decoupling.sequence_type
선택지: XX, XpXm, XY4
기본값: XX
dynamical_decoupling.skip_reset_qubits
선택지: True, False
기본값: False
environment
environment.job_tags
태그 목록.
선택지: None
기본값: None
environment.log_level
선택지: DEBUG, INFO, WARNING, ERROR, CRITICAL
기본값: WARNING
environment.private
선택지: True, False
기본값: False
execution
execution.init_qubits
각 shot마다 큐비트를 기저 상태로 초기화할지 여부.
선택지: True, False
기본값: True
execution.rep_delay
측정과 이후 양자 회로 사이의 지연 시간.
선택지: backend.rep_delay_range로 제공된 범위 내의 값
기본값: backend.default_rep_delay로 지정된 값
execution.meas_type
선택지: classified, kerneled, avg_kerneled
기본값: classified
max_execution_time
simulator
백엔드 시뮬레이션 시 전달할 옵션
simulator.basis_gates
선택지: 언롤할 기저 게이트 이름 목록
기본값: Qiskit Aer 시뮬레이터가 지원하는 모든 기저 게이트 집합
simulator.coupling_map
선택지: 방향이 있는 두 큐비트 상호작용 목록
기본값: None(연결 제약 없음, 완전 연결을 의미)
simulator.noise_model
선택지: Qiskit Aer NoiseModel 또는 그 표현
기본값: None
simulator.seed_simulator
선택지: 정수
기본값: None
twirling
트월링 옵션
twirling.enable_gates
선택지: True, False
기본값: False
twirling.enable_measure
선택지: True, False
기본값: False
twirling.num_randomizations
선택지: auto, 정수 >= 1
기본값: auto
twirling.shots_per_randomization
선택지: auto, 정수 >= 1
기본값: auto
twirling.strategy
선택지: active, active-circuit, active-accum, all
기본값: active-accum
experimental
실험적 옵션(사용 가능한 경우).
기능 호환성
특정 런타임 기능은 단일 작업에서 함께 사용할 수 없습니다. 선택한 기능과 호환되지 않는 기능 목록을 보려면 해당 탭을 클릭하세요.
Dynamic circuits
호환되지 않는 기능:
- 동적 디커플링
기타 참고사항:
- 게이트 트월링은 동적 회로에 적용할 수 있지만 조건 블록 내부의 게이트에는 적용할 수 없습니다. 측정 트월링은 터미널 측정에만 적용할 수 있습니다.
qiskit-ibm-runtimev0.42.0 이상을 사용하는 경우 분수 게이트와 호환됩니다.
Dynamical decoupling
호환되지 않는 기능:
- 동적 회로
Fractional gates
호환되지 않는 기능:
- 게이트 트월링
qiskit-ibm-runtime v0.42.0 이상을 사용하는 경우 동적 회로와 호환됩니다.
Gate twirling
호환되지 않는 기능:
- 분수 게이트
- 스트레치
기타 참고사항:
- 게이트 트월링은 동적 회로에 적용할 수 있지만 조건 블록 내부의 게이트에는 적용할 수 없습니다.
- 측정 트월링은 터미널 측정에만 적용할 수 있습니다.
- 측정 트월링은
store명령어와 호환되지 않습니다. - 비 Clifford 얽힘 게이트에서는 작동하지 않습니다.
다음 단계
- 옵션 소개 가이드를 검토하세요.
- Sampler API 참조에서
SamplerV2메서드에 대한 자세한 내용을 확인하세요. - 작업을 실행할 실행 모드를 결정하세요.
- Sampler로 노이즈 관리에 대해 알아보세요.