주 콘텐츠로 건너뛰기

Sampler 옵션 지정

패키지 버전

이 페이지의 코드는 다음 요구사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하는 것을 권장합니다.

qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1

옵션을 사용하여 Sampler 프리미티브를 커스터마이즈할 수 있습니다. 이 섹션에서는 Qiskit Runtime 프리미티브 옵션을 지정하는 방법에 초점을 맞춥니다. 프리미티브의 run() 메서드 인터페이스는 모든 구현에서 공통이지만, 옵션은 그렇지 않습니다. qiskit.primitives.BackendSamplerV2qiskit_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를 지정하는 우선순위는 다음과 같습니다.

  1. PUB에서 shots를 지정하면 해당 값을 사용합니다.
  2. run에서 shots 키워드 인수가 지정되면 해당 값을 사용합니다.
  3. twirling이 활성화되어 있으면(기본값 True), twirling 옵션으로 지정된 num_randomizationsshots_per_randomization의 곱이 사용됩니다.
  4. sampler.options.default_shots가 지정되면 해당 값을 사용합니다.

따라서 가능한 모든 위치에서 shots가 지정된 경우, 가장 높은 우선순위를 가진 값(PUB에서 지정된 shots)이 사용됩니다.

참고

PUB 및 run에서 지정된 shots가 더 높은 우선순위를 갖지만, twirling이 활성화된 경우 num_randomizationsshots_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

회로당, 구성당 사용할 총 shots 수.

선택지: 정수 >= 0

기본값: None

default_shots API 문서

dynamical_decoupling

동적 디커플링 오류 완화 설정을 제어합니다.

dynamical_decoupling API 문서

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 API 문서

environment.job_tags

태그 목록.

선택지: None

기본값: None

environment.log_level

선택지: DEBUG, INFO, WARNING, ERROR, CRITICAL

기본값: WARNING

environment.private

선택지: True, False

기본값: False

execution

execution API 문서

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

작업 실행 시간을 초 단위로 제한합니다. 자세한 내용은 최대 실행 시간 가이드를 참조하세요.

선택지: [1, 10800] 범위의 정수(초)

기본값: 10800(3시간)

max_execution_time API 문서

simulator

백엔드 시뮬레이션 시 전달할 옵션

simulator API 문서

simulator.basis_gates

선택지: 언롤할 기저 게이트 이름 목록

기본값: Qiskit Aer 시뮬레이터가 지원하는 모든 기저 게이트 집합

simulator.coupling_map

선택지: 방향이 있는 두 큐비트 상호작용 목록

기본값: None(연결 제약 없음, 완전 연결을 의미)

simulator.noise_model

선택지: Qiskit Aer NoiseModel 또는 그 표현

기본값: None

simulator.seed_simulator

선택지: 정수

기본값: None

twirling

트월링 옵션

twirling API 문서

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-runtime v0.42.0 이상을 사용하는 경우 분수 게이트와 호환됩니다.
Dynamical decoupling

호환되지 않는 기능:

  • 동적 회로
Fractional gates

호환되지 않는 기능:

  • 게이트 트월링

qiskit-ibm-runtime v0.42.0 이상을 사용하는 경우 동적 회로와 호환됩니다.

Gate twirling

호환되지 않는 기능:

  • 분수 게이트
  • 스트레치

기타 참고사항:

  • 게이트 트월링은 동적 회로에 적용할 수 있지만 조건 블록 내부의 게이트에는 적용할 수 없습니다.
  • 측정 트월링은 터미널 측정에만 적용할 수 있습니다.
  • 측정 트월링은 store 명령어와 호환되지 않습니다.
  • 비 Clifford 얽힘 게이트에서는 작동하지 않습니다.

다음 단계

권장 사항