Zadávání možností Sampleru
Verze balíčků
Kód na této stránce byl vyvinut za použití následujících požadavků. Doporučujeme používat tyto verze nebo novější.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
Možnosti můžeš použít k přizpůsobení primitivu Sampler. Tato část se zaměřuje na to, jak zadávat možnosti primitivů Qiskit Runtime. Ačkoli je rozhraní metody run() primitivů společné pro všechny implementace, jejich možnosti nikoli. Prostuduj si příslušné reference API pro informace o možnostech qiskit.primitives.BackendSamplerV2 a qiskit_aer.primitives.SamplerV2.
Nastavení možností Sampleru
Možnosti můžeš nastavit při inicializaci Sampleru, po inicializaci Sampleru nebo je aktualizovat po inicializaci. Pokyny k použití těchto technik najdeš v tématu Úvod do možností.
Navíc můžeš nastavit hodnotu shots v metodě run(), jak je popsáno v následující části.
Metoda Run()
Jediné hodnoty, které můžeš předat do run(), jsou ty definované v rozhraní, tedy shots. Tímto se přepíše hodnota nastavená pro default_shots pro aktuální spuštění.
# 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')>
Speciální případy
Shots
Metoda SamplerV2.run přijímá dva argumenty: seznam PUBů, z nichž každý může specifikovat PUB-specifickou hodnotu shots, a klíčový argument shots. Tyto hodnoty shots jsou součástí rozhraní pro spouštění Sampleru a jsou nezávislé na možnostech Sampleru Runtime. Mají přednost před hodnotami zadanými jako možnosti, aby byla zachována shoda s abstrakcí Sampleru.
Pokud však shots není zadáno žádným PUBem ani v klíčovém argumentu run (nebo pokud jsou všechny None), použije se hodnota shots z možností, zejména default_shots.
Shrnutí pořadí priority pro zadávání shots v Sampleru pro libovolný PUB:
- Pokud PUB specifikuje shots, použij tuto hodnotu.
- Pokud je klíčový argument
shotszadán vrun, použij tuto hodnotu. - Pokud je povoleno
twirling(ve výchozím nastavení True), použije se součinnum_randomizationsashots_per_randomization, zadaný jako možnostitwirling. - Pokud je zadáno
sampler.options.default_shots, použij tuto hodnotu.
Pokud jsou tedy shots zadány na všech možných místech, použije se to s nejvyšší prioritou (shots zadané v PUBu).
Přestože shots zadané v PUBu a v run mají vyšší prioritu, úloha selže, pokud je povoleno twirling a součin num_randomizations a shots_per_randomization je menší než hodnota shots. V tomto scénáři není SamplerV2 schopen rozdělit shots mezi zadané num_randomizations.
Příklad:
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')>
Dostupné možnosti
Následující tabulka dokumentuje možnosti z nejnovější verze qiskit-ibm-runtime. Chceš-li zobrazit starší verze možností, navštiv referenci API qiskit-ibm-runtime a vyber předchozí verzi.
default_shots
Celkový počet shots k použití na obvod na konfiguraci.
Volby: Celé číslo >= 0
Výchozí: None
dynamical_decoupling
Ovládání nastavení zmírňování chyb dynamického oddělování.
Dokumentace API dynamical_decoupling
dynamical_decoupling.enable
Volby: True, False
Výchozí: False
dynamical_decoupling.extra_slack_distribution
Volby: middle, edges
Výchozí: middle
dynamical_decoupling.scheduling_method
Choices: asap, alap
Default: alap
dynamical_decoupling.sequence_type
Choices: XX, XpXm, XY4
Default: XX
dynamical_decoupling.skip_reset_qubits
Choices: True, False
Default: False
environment
environment.job_tags
Seznam tagů.
Volby: None
Výchozí: None
environment.log_level
Volby: DEBUG, INFO, WARNING, ERROR, CRITICAL
Výchozí: WARNING
environment.private
Volby: True, False
Výchozí: False
execution
execution.init_qubits
Zda resetovat qubity do základního stavu pro každý shot.
Volby: True, False
Výchozí: True
execution.rep_delay
Prodleva mezi měřením a následným kvantovým obvodem.
Volby: Hodnota v rozsahu dodávaném backend.rep_delay_range
Výchozí: Dáno backend.default_rep_delay
execution.meas_type
Volby: classified, kerneled, avg_kerneled
Výchozí: classified
max_execution_time
Omezuje dobu běhu úlohy v sekundách. Podrobnosti viz průvodce maximální doba spuštění.
Volby: Celé číslo sekund v rozsahu [1, 10800]
Výchozí: 10800 (3 hodiny)
simulator
Možnosti předávané při simulaci backendu
simulator.basis_gates
Volby: Seznam názvů bázových hradel k rozvinutí
Výchozí: Sada všech bázových hradel podporovaných simulátorem Qiskit Aer
simulator.coupling_map
Volby: Seznam orientovaných dvouqubitových interakcí
Výchozí: None, což znamená žádná omezení konektivity (plná konektivita).
simulator.noise_model
Volby: Model šumu Qiskit Aer NoiseModel nebo jeho reprezentace
Výchozí: None
simulator.seed_simulator
Volby: Celé číslo
Výchozí: None
twirling
Možnosti twirling
twirling.enable_gates
Volby: True, False
Výchozí: False
twirling.enable_measure
Volby: True, False
Výchozí: False
twirling.num_randomizations
Volby: auto, Celé číslo >= 1
Výchozí: auto
twirling.shots_per_randomization
Volby: auto, Celé číslo >= 1
Výchozí: auto
twirling.strategy
Volby: active, active-circuit, active-accum, all
Výchozí: active-accum
experimental
Experimentální možnosti, pokud jsou k dispozici.
Kompatibilita funkcí
Určité funkce runtime nelze používat společně v jedné úloze. Klikni na příslušnou záložku, kde najdeš seznam funkcí, které jsou nekompatibilní s vybranou funkcí:
Dynamické obvody
Nekompatibilní s:
- Dynamickým oddělováním
Ostatní poznámky:
- Twirling hradel lze aplikovat na dynamické obvody, ale pouze na hradla mimo podmíněné bloky. Twirling měření lze aplikovat pouze na terminální měření.
- Kompatibilní s frakčními hradly při použití
qiskit-ibm-runtimev0.42.0 nebo novějšího.
Dynamické oddělování
Nekompatibilní s:
- Dynamickými obvody
Frakční hradla
Nekompatibilní s:
- Twirlingem hradel
Kompatibilní s dynamickými obvody při použití qiskit-ibm-runtime v0.42.0 nebo novějšího.
Twirling hradel
Nekompatibilní s:
- Frakčními hradly
- Stretches
Ostatní poznámky:
- Twirling hradel lze aplikovat na dynamické obvody, ale pouze na hradla mimo podmíněné bloky.
- Twirling měření lze aplikovat pouze na terminální měření.
- Twirling měření není kompatibilní s instrukcí
store. - Nefunguje s non-Cliffordovými provazači.
Další kroky
- Prostuduj průvodce Úvod do možností.
- Najdi více podrobností o metodách
SamplerV2v referenci API Sampleru. - Rozhodni se, v jakém režimu spuštění chceš spustit svou úlohu.
- Zjisti více o správě šumu s Samplerem.