Lumaktaw sa pangunahing nilalaman

Pagtukoy ng mga Opsyon ng Sampler

Mga bersyon ng pakete

Ang code sa page na ito ay binuo gamit ang mga sumusunod na kinakailangan. Inirerekomenda naming gamitin ang mga bersyong ito o mas bago.

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

Maaari mong gamitin ang mga opsyon upang i-customize ang Sampler primitive. Ang seksyong ito ay nakatuon sa kung paano tukuyin ang mga opsyon ng Qiskit Runtime primitive. Bagaman ang interface ng run() na pamamaraan ng mga primitive ay pare-pareho sa lahat ng implementasyon, hindi ganoon ang mga opsyon. Tingnan ang kaukulang mga reperensya ng API para sa impormasyon tungkol sa mga opsyon ng qiskit.primitives.BackendSamplerV2 at qiskit_aer.primitives.SamplerV2.

Itakda ang mga opsyon ng Sampler

Maaari kang magtakda ng mga opsyon kapag sinisimulan ang Sampler, pagkatapos masimulan ang Sampler, o maaari mong i-update ang mga opsyon pagkatapos masimulan ang Sampler. Para sa mga tagubilin sa paggamit ng mga pamamaraang ito, tingnan ang paksa na Panimula sa mga opsyon.

Bukod dito, maaari mong itakda ang halaga ng shots sa pamamaraang run(), ayon sa inilalarawan sa susunod na seksyon.

Pamamaraan ng Run()

Ang mga halagang maaari mong ipasa sa run() ay ang mga tinukoy sa interface lamang, iyon ay ang shots. Isinusulat nito ang anumang halagang itinakda para sa default_shots para sa kasalukuyang run.

# 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')>

Mga espesyal na kaso

Shots

Ang pamamaraang SamplerV2.run ay tumatanggap ng dalawang argumento: isang listahan ng mga PUB, kung saan ang bawat isa ay maaaring tumukoy ng partikular na halaga ng shots para sa PUB, at isang keyword na argumento ng shots. Ang mga halagang shots na ito ay bahagi ng interface ng pagpapatakbo ng Sampler, at hiwalay sa mga opsyon ng Runtime Sampler. Mas mataas ang kanilang priyoridad kaysa sa anumang halagang itinukoy bilang mga opsyon upang sumunod sa abstraction ng Sampler.

Gayunpaman, kung ang shots ay hindi tinukoy ng anumang PUB o sa run keyword na argumento (o kung lahat ay None), ang halaga ng shots mula sa mga opsyon ang gagamitin, lalo na ang default_shots.

Upang ibuod, ito ang pagkakasunod-sunod ng priyoridad para sa pagtukoy ng shots sa Sampler, para sa anumang partikular na PUB:

  1. Kung ang PUB ay tumutukoy ng shots, gamitin ang halagang iyon.
  2. Kung ang keyword na argumento ng shots ay tinukoy sa run, gamitin ang halagang iyon.
  3. Kung ang twirling ay pinagana (True bilang default), ang produkto ng num_randomizations at shots_per_randomization, ayon sa tinukoy bilang mga opsyon ng twirling, ay gagamitin.
  4. Kung ang sampler.options.default_shots ay tinukoy, gamitin ang halagang iyon.

Kaya, kung ang shots ay tinukoy sa lahat ng posibleng lugar, ang isa na may pinakamataas na priyoridad (shots na tinukoy sa PUB) ang gagamitin.

tala

Kahit na ang shots na tinukoy sa PUB at sa run ay may mas mataas na priyoridad, mabibigo ang trabaho kung ang twirling ay pinagana at ang produkto ng num_randomizations at shots_per_randomization ay mas maliit kaysa sa halaga ng shots. Sa sitwasyong ito, hindi makapag-allocate ang SamplerV2 ng mga shots sa mga tinukoy na num_randomizations.

Halimbawa:

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')>

Mga available na opsyon

Ang sumusunod na talahanayan ay nagdodokumento ng mga opsyon mula sa pinakabagong bersyon ng qiskit-ibm-runtime. Upang makita ang mas lumang mga bersyon ng opsyon, bisitahin ang reperensya ng API ng qiskit-ibm-runtime at pumili ng nakaraang bersyon.

default_shots

Ang kabuuang bilang ng shots na gagamitin bawat circuit bawat configuration.

Mga pagpipilian: Integer >= 0

Default: None

Dokumentasyon ng API ng default_shots

dynamical_decoupling

Kontrolin ang mga setting ng pagbabawas ng error ng dynamical decoupling.

Dokumentasyon ng API ng dynamical_decoupling

dynamical_decoupling.enable

Mga pagpipilian: True, False

Default: False

dynamical_decoupling.extra_slack_distribution

Mga pagpipilian: middle, edges

Default: middle

dynamical_decoupling.scheduling_method

Mga pagpipilian: asap, alap Default: alap

dynamical_decoupling.sequence_type

Mga pagpipilian: XX, XpXm, XY4 Default: XX

dynamical_decoupling.skip_reset_qubits

Mga pagpipilian: True, False Default: False

environment

Dokumentasyon ng API ng environment

environment.job_tags

Listahan ng mga tag.

Mga pagpipilian: None

Default: None

environment.log_level

Mga pagpipilian: DEBUG, INFO, WARNING, ERROR, CRITICAL

Default: WARNING

environment.private

Mga pagpipilian: True, False

Default: False

execution

Dokumentasyon ng API ng execution

execution.init_qubits

Kung ire-reset ang mga Qubit sa ground state para sa bawat shot.

Mga pagpipilian: True, False

Default: True

execution.rep_delay

Ang pagkaantala sa pagitan ng isang pagsukat at ng kasunod na quantum circuit.

Mga pagpipilian: Halaga sa hanay na ibinibigay ng backend.rep_delay_range

Default: Ibinibigay ng backend.default_rep_delay

execution.meas_type

Mga pagpipilian: classified, kerneled, avg_kerneled

Default: classified

max_execution_time

Nilimitahan ang tagal ng pagpapatakbo ng isang trabaho, sa mga segundo. Tingnan ang gabay na maximum na oras ng pagpapatakbo para sa mga detalye.

Mga pagpipilian: Integer na bilang ng mga segundo sa hanay na [1, 10800]

Default: 10800 (3 oras)

Dokumentasyon ng API ng max_execution_time

simulator

Mga opsyon na ipapasa kapag sini-simulate ang isang backend

Dokumentasyon ng API ng simulator

simulator.basis_gates

Mga pagpipilian: Listahan ng mga pangalan ng basis gate na ia-unroll

Default: Ang hanay ng lahat ng basis gate na sinusuportahan ng Qiskit Aer simulator

simulator.coupling_map

Mga pagpipilian: Listahan ng mga directed na dalawang-Qubit na interaksyon

Default: None, na nangangahulugang walang mga hadlang sa koneksyon (buong koneksyon).

simulator.noise_model

Mga pagpipilian: Qiskit Aer NoiseModel, o ang representasyon nito

Default: None

simulator.seed_simulator

Mga pagpipilian: Integer

Default: None

twirling

Mga opsyon ng twirling

Dokumentasyon ng API ng twirling

twirling.enable_gates

Mga pagpipilian: True, False

Default: False

twirling.enable_measure

Mga pagpipilian: True, False

Default: False

twirling.num_randomizations

Mga pagpipilian: auto, Integer >= 1

Default: auto

twirling.shots_per_randomization

Mga pagpipilian: auto, Integer >= 1

Default: auto

twirling.strategy

Mga pagpipilian: active, active-circuit, active-accum, all

Default: active-accum

experimental

Mga eksperimental na opsyon, kapag available.

Compatibility ng mga feature

Ang ilang mga feature ng runtime ay hindi maaaring gamitin nang magkasama sa isang trabaho. I-click ang naaangkop na accordion para sa listahan ng mga feature na hindi tugma sa napiling feature:

Mga dynamic na circuit

Hindi tugma sa:

  • Dynamical decoupling

Iba pang mga tala:

  • Maaaring ilapat ang gate twirling sa mga dynamic na circuit, ngunit sa mga gate lamang na hindi nasa loob ng mga conditional block. Ang measurement twirling ay maaari lamang ilapat sa mga terminal na pagsukat.
  • Tugma sa mga fractional gate kapag gumagamit ng qiskit-ibm-runtime v0.42.0 o mas bago.
Dynamical decoupling

Hindi tugma sa:

  • Mga dynamic na circuit
Mga fractional gate

Hindi tugma sa:

  • Gate twirling

Tugma sa mga dynamic na circuit kapag gumagamit ng qiskit-ibm-runtime v0.42.0 o mas bago.

Gate twirling

Hindi tugma sa:

  • Mga fractional gate
  • Mga stretch

Iba pang mga tala:

  • Maaaring ilapat ang gate twirling sa mga dynamic na circuit, ngunit sa mga gate lamang na hindi nasa loob ng mga conditional block.
  • Ang measurement twirling ay maaari lamang ilapat sa mga terminal na pagsukat.
  • Ang measurement twirling ay hindi tugma sa instruksyon ng store.
  • Hindi gumagana sa mga non-Clifford entangler.

Mga susunod na hakbang

Mga rekomendasyon