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:
- Kung ang PUB ay tumutukoy ng shots, gamitin ang halagang iyon.
- Kung ang keyword na argumento ng
shotsay tinukoy sarun, gamitin ang halagang iyon. - Kung ang
twirlingay pinagana (True bilang default), ang produkto ngnum_randomizationsatshots_per_randomization, ayon sa tinukoy bilang mga opsyon ngtwirling, ay gagamitin. - Kung ang
sampler.options.default_shotsay 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.
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
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)
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-runtimev0.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
- Suriin ang gabay na Panimula sa mga opsyon.
- Hanapin ang karagdagang detalye tungkol sa mga pamamaraan ng
SamplerV2sa reperensya ng API ng Sampler. - Magpasya kung anong mode ng pagpapatakbo ang gagamitin sa pagpapatakbo ng iyong trabaho.
- Matuto tungkol sa pamamahala ng noise gamit ang Sampler.