Přeskočit na hlavní obsah

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:

  1. Pokud PUB specifikuje shots, použij tuto hodnotu.
  2. Pokud je klíčový argument shots zadán v run, použij tuto hodnotu.
  3. Pokud je povoleno twirling (ve výchozím nastavení True), použije se součin num_randomizations a shots_per_randomization, zadaný jako možnosti twirling.
  4. 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).

poznámka

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

Dokumentace API default_shots

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

Dokumentace API 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

Dokumentace API 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)

Dokumentace API max_execution_time

simulator

Možnosti předávané při simulaci backendu

Dokumentace API simulator

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

Dokumentace API 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-runtime v0.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

Doporučení