Skip to main content
IBM Quantum Platform

샘플러 옵션 지정

  • 이 페이지의 코드는 다음 요구 사항을 바탕으로 개발되었습니다. 이 버전 이상을 사용하시기를 권장합니다.

    qiskit[all]~=2.5.2
    qiskit-ibm-runtime~=0.47.0
    

옵션을 사용하여 샘플러 프리미티브를 사용자 정의할 수 있습니다. 이 섹션에서는 ‘ IBM Quantum ’ 기본 옵션의 지정 방법에 대해 중점적으로 다룹니다. 프라이머리 메서드의 인터페이스는 모든 구현체에서 공통적이지만, 해당 메서드의 run() 옵션은 그렇지 않습니다. 및 qiskit.primitives.BackendSamplerV2 옵션에 qiskit_aer.primitives.SamplerV2 대한 자세한 내용은 해당 API 참조 문서를 참조하십시오.


샘플러 옵션 설정

Sampler를 초기화할 때, 초기화 후, 또는 초기화가 완료된 후에 옵션을 설정하거나 업데이트할 수 있습니다. 이 기술들을 사용하는 방법에 대한 안내는 ‘옵션 소개’ 항목을 참조하십시오.

또한, 다음 섹션에서 설명하는 대로 메서드에서 run() 값을 shots 설정할 수 있습니다.

Run() 메서드

에 전달할 수 있는 값은 run() 인터페이스에 정의된 값들뿐입니다. 즉, shots. 이렇게 하면 현재 실행에 default_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)

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)

Output:

<RuntimeJobV2('dab7ld3vpcac73ddek50', 'sampler')>

특수 케이스

SamplerV2.run 메서드는 두 개의 인수를 받습니다. 하나는 PUB 목록으로, 각 PUB는 shots에 대해 PUB 전용 값을 지정할 수 있으며, 다른 하나는 shots 키워드 인수입니다. 이러한 샷 값은 샘플러 실행 인터페이스의 일부이며, 런타임 샘플러의 옵션과는 별개입니다. 이는 Sampler 추상화를 준수하기 위해 옵션으로 지정된 모든 값보다 우선합니다.

그러나 PUB 이나 run 키워드 인자에서 가 명시되지 않은 shots 경우(또는 모두 인 None경우), options의 shots 값이 사용되며, 특히 default_shots가 적용됩니다.

요약하자면, 특정 PUB 에 대해 샘플러에서 샷을 지정할 때의 우선순위는 다음과 같습니다:

  1. PUB 에 촬영 횟수가 지정되어 있다면 해당 값을 사용하십시오.
  2. 에서 키워드 shots 인수가 run 지정된 경우, 해당 값을 사용합니다.
  3. 이 기능이 활성화되어 twirling 있으면, 로 지정된 shots_per_randomizationnum_randomizations 의 곱이 사용됩니다. twirling 옵션
  4. 가 지정된 sampler.options.default_shots 경우, 해당 값을 사용합니다.

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

Note

PUB 및 에 run 명시된 샷이 우선순위가 더 높지만, 가 활성화되어 있고 와 shots_per_randomizationnum_randomizations 곱이 값보다 shots 작을 경우 twirling 작업이 실패합니다. num_randomizations이 시나리오에서는 지정된 대상들 사이에 발사체를 배분할 수 없습니다. SamplerV2

예:

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)

Output:

<RuntimeJobV2('dab7lf3vpcac73ddek8g', 'sampler')>

사용 가능 옵션

다음 표는 최신 버전의 qiskit-ibm-runtime.에 포함된 옵션을 정리한 것입니다. 이전 버전의 옵션을 확인하려면 API 참조 qiskit-ibm-runtime 문서를 방문하여 이전 버전을 선택하세요.

  • 구성당 회로별로 사용할 총 샷 수.

    선택 사항 : 0 이상인 정수

    기본값 : 없음

    default_shots API 문서

  • 동적 분리 오류 완화 설정을 제어합니다.

    dynamical_decoupling API 문서

    • 선택 사항 : True, False

      기본값 : False

    • 선택 사항 : middle, edges

      기본값 : middle

    • 선택 사항: asap, alap 기본값: alap

    • 선택 사항: XX, XpXm, XY4 기본값: XX

    • 선택 사항: True, False 기본값: False

  • environment API 문서

    • 태그 목록.

      선택 사항 : 없음

      기본값 : 없음

    • 선택 항목 : DEBUG, INFO, WARNING, ERROR, CRITICAL

      기본값 : 경고

    • 선택 사항 : True, False

      기본값 : False

  • execution API 문서

    • 각 실행마다 큐비트를 기저 상태로 초기화할지 여부.

      선택 사항 : True, False

      기본값 : True

    • 측정과 그 이후의 양자 회로 사이의 시간 간격.

      선택 사항 : 다음 범위 내의 값 backend.rep_delay_range

      기본값 : 다음에서 지정됨 backend.default_rep_delay

    • 선택 사항 : classified, kerneled, avg_kerneled

      기본값 : classified

  • 작업이 실행될 수 있는 최대 시간을 초 단위로 제한합니다. 자세한 내용은 최대 실행 시간 가이드를 참조하십시오.

    선택 사항 : [1] 에서 10800 사이의 초 단위 정수

    기본값 : 10800 (3시간)

    max_execution_time API 문서

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

    simulator API 문서

    • 선택 사항 : 언롤할 기본 게이트 이름 목록

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

    • 선택 사항 : 방향성 2-큐비트 상호작용 목록

      기본값 : 없음. 이는 연결성 제약 조건이 없음을 의미합니다(완전한 연결성).

    • 선택 사항 : Qiskit Aer NoiseModel 또는 이에 상응하는 모델

      기본값 : 없음

    • 선택 항목 : 정수

      기본값 : 없음

  • 회전 옵션

    twirling API 문서

    • 선택지 : 참, 거짓

      기본값 : False

    • 선택지 : 참, 거짓

      기본값 : False

    • 선택 사항 : auto, 정수 >= 1

      기본값 : auto

    • 선택 사항 : auto, 정수 >= 1

      기본값 : auto

    • 선택 사항 : active, active-circuit, active-accum, all

      기본값 : active-accum

  • 가능한 경우 실험적 옵션.


기능 호환성

특정 런타임 기능은 하나의 작업 내에서 함께 사용할 수 없습니다. 선택한 기능과 호환되지 않는 기능 목록을 보려면 해당 탭을 클릭하세요:

  • 호환되지 않는 항목:

    • 동적 분리

    기타 참고 사항:

    • 게이트 회전 연산은 동적 회로에 적용할 수 있지만, 조건부 블록 내에 있는 게이트에는 적용할 수 없습니다. 측정 회전 기능은 단자 측정에만 적용할 수 있습니다.
    • v0.42.0 이상을 qiskit-ibm-runtime 사용할 경우 분수 게이트와 호환됩니다.
  • 호환되지 않는 항목:

    • 동적 회로
  • 호환되지 않는 항목:

    • 문 돌리기

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

  • 호환되지 않는 항목:

    • 분수 게이트
    • 스트레칭

    기타 참고 사항:

    • 게이트 회전 연산은 동적 회로에 적용할 수 있지만, 조건부 블록 내에 있지 않은 게이트에만 적용할 수 있습니다.
    • 측정 회전 기능은 단자 측정에만 적용할 수 있습니다.
    • 측정 값을 뒤집는 것은 해당 store 지침과 상충됩니다.
    • 클리포드 얽힘이 아닌 얽힘에서는 작동하지 않습니다.

다음 단계

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