Sampler-Optionen festlegen
Der Code auf dieser Seite wurde unter Berücksichtigung der folgenden Anforderungen entwickelt. Wir empfehlen, diese Versionen oder neuere zu verwenden.
qiskit[all]~=2.5.2 qiskit-ibm-runtime~=0.47.0
Sie können die Sampler-Primitive mithilfe von Optionen anpassen. In diesem Abschnitt wird erläutert, wie man die grundlegenden Optionen von „ IBM Quantum “ festlegt. Zwar ist die Schnittstelle der Methode run() der Primitive in allen Implementierungen einheitlich, ihre Optionen sind es jedoch nicht. Informationen zu den Optionen qiskit_aer.primitives.SamplerV2 und qiskit.primitives.BackendSamplerV2 finden Sie in den entsprechenden API-Referenzen.
Sampler-Optionen festlegen
Sie können Optionen bei der Initialisierung von Sampler festlegen, nach der Initialisierung von Sampler oder die Optionen aktualisieren, nachdem Sampler initialisiert wurde. Anweisungen zur Anwendung dieser Techniken finden Sie im Abschnitt „Einführung in Optionen “.
Außerdem können Sie den shots Wert in der run() Methode festlegen, wie im folgenden Abschnitt beschrieben.
Methode „Run()“
Die einzigen Werte, die Sie an übergeben können, sind diejenigen, run() die in der Schnittstelle definiert sind. Das heißt, shots. Dadurch wird jeder für default_shots den aktuellen Durchlauf festgelegte Wert überschrieben.
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Sampler
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_sampler import 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')>
Sonderfälle
Shots
Die SamplerV2.run Methode akzeptiert zwei Argumente: eine Liste von PUBs, von denen jedes einen für „ PUB “ spezifischen Wert für „shots“ angeben kann, sowie ein Schlüsselwortargument „shots“. Diese Schusswerte sind Teil der Sampler-Ausführungsschnittstelle und unabhängig von den Optionen des Runtime-Samplers. Sie haben Vorrang vor allen als Optionen angegebenen Werten, um der Sampler-Abstraktion zu entsprechen.
Wenn jedoch weder in einer „ shotsPUB “-Datei noch im Schlüsselwortargument „run“ angegeben ist (oder wenn alle diese Werte Noneauf gesetzt sind), wird der Wert für „shots“ aus den Optionen verwendet, insbesondere default_shots.
Zusammenfassend lässt sich sagen, dass dies die Reihenfolge ist, in der Aufnahmen im Sampler für eine bestimmte „ PUB “ festgelegt werden:
- Wenn in der Datei „ PUB “ die Anzahl der Aufnahmen angegeben ist, verwende diesen Wert.
- Wenn das
shotsSchlüsselwort-Argument inrunangegeben ist, verwende diesen Wert. - Wenn aktiviert
twirlingist, wird das Produkt ausnum_randomizationsundshots_per_randomization, wie in den Optionentwirlingangegeben, verwendet. - Wenn angegeben
sampler.options.default_shotsist, verwende diesen Wert.
Wenn also an allen möglichen Stellen Schüsse festgelegt sind, wird derjenige mit der höchsten Priorität (die im „ PUB “ festgelegten Schüsse) verwendet.
Obwohl die in der „ PUB “ und in run angegebenen Schüsse eine höhere Priorität haben, schlägt der Auftrag fehl, wenn twirling aktiviert ist und das Produkt aus num_randomizations und shots_per_randomization kleiner als der shots Wert ist. num_randomizationsIn diesem Fall ist es nicht möglich, SamplerV2 die Aufnahmen auf die angegebenen Elemente zu verteilen.
Beispiel:
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Sampler
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_sampler import 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')>
Verfügbare Optionen
Die folgende Tabelle enthält die Optionen aus der neuesten Version von qiskit-ibm-runtime. Um ältere Versionen der Optionen anzuzeigen, besuchen Sie die Seite qiskit-ibm-runtime API-Referenz und wählen Sie eine frühere Version aus.
Die Gesamtzahl der Schüsse, die pro Schaltkreis und Konfiguration verwendet werden sollen.
Auswahlmöglichkeiten : Ganzzahl >= 0
Standard : Keine
Einstellungen zur Minderung dynamischer Entkopplungsfehler steuern.
dynamical_decouplingAPI-DokumentationAuswahlmöglichkeiten :
True,FalseStandard :
FalseAuswahlmöglichkeiten :
middle,edgesStandard :
middleAuswahlmöglichkeiten:
asap,alapStandard:alapAuswahlmöglichkeiten:
XX,XpXm,XY4Standard:XXAuswahlmöglichkeiten:
True,FalseStandard:False
Liste der Tags.
Auswahlmöglichkeiten : Keine
Standard : Keine
Optionen : DEBUG, INFO, WARNING, ERROR, CRITICAL
Standard : WARNUNG
Auswahlmöglichkeiten :
True,FalseStandard :
False
Ob die Qubits bei jedem Durchlauf in den Grundzustand zurückgesetzt werden sollen.
Auswahlmöglichkeiten :
True,FalseStandard :
TrueDie Verzögerung zwischen einer Messung und dem darauf folgenden Quantenschaltkreis.
Auswahlmöglichkeiten : Wert im angegebenen Bereich
backend.rep_delay_rangeStandard : Vorgelegt von
backend.default_rep_delayAuswahlmöglichkeiten :
classified,kerneled,avg_kerneledStandard :
classified
Legt fest, wie lange ein Auftrag laufen darf (in Sekunden). Weitere Informationen finden Sie im Leitfaden zur maximalen Ausführungszeit.
Auswahlmöglichkeiten : Ganzzahlige Angabe der Sekunden im Bereich [von] 1 bis 10800
Standard : 10800 (3 Stunden)
Optionen, die bei der Simulation eines Backends übergeben werden müssen
Auswahlmöglichkeiten : Liste der Namen der Basisgatter, zu denen entrollt werden soll
Standard : Die Menge aller vom Qiskit-Aer-Simulator unterstützten Basisgatter
Auswahlmöglichkeiten : Liste gerichteter Zwei-Qubit-Wechselwirkungen
Standard : Keine, was bedeutet, dass keine Konnektivitätsbeschränkungen gelten (vollständige Konnektivität).
Optionen : Qiskit Aer NoiseModel oder dessen Darstellung
Standard : Keine
Auswahlmöglichkeiten : Ganzzahl
Standard : Keine
Drehoptionen
Auswahlmöglichkeiten : Richtig, Falsch
Standard : False
Auswahlmöglichkeiten : Richtig, Falsch
Standard : False
Auswahlmöglichkeiten :
auto, Ganzzahl >= 1Standard :
autoAuswahlmöglichkeiten :
auto, Ganzzahl >= 1Standard :
autoAuswahlmöglichkeiten :
active,active-circuit,active-accum,allStandard :
active-accum
Experimentelle Optionen, sofern verfügbar.
Featurekompatibilität
Bestimmte Laufzeitfunktionen können nicht gemeinsam in einem einzigen Job verwendet werden. Klicken Sie auf die entsprechende Registerkarte, um eine Liste der Funktionen anzuzeigen, die mit der ausgewählten Funktion nicht kompatibel sind:
Nicht kompatibel mit:
- Dynamische Entkopplung
Sonstige Hinweise:
- Das „Gate Twirling“ kann auf dynamische Schaltungen angewendet werden, jedoch nur auf Gatter, die sich nicht innerhalb von bedingten Blöcken befinden. Das „Measurement Twirling“ kann nur bei Endmessungen angewendet werden.
- Kompatibel mit fraktionierten Gates bei Verwendung
qiskit-ibm-runtimevon „ v0.42.0 “ oder einer neueren Version.
Nicht kompatibel mit:
- Dynamische Schaltungen
Nicht kompatibel mit:
- Torwirbeln
Kompatibel mit dynamischen Schaltkreisen bei Verwendung
qiskit-ibm-runtimevon „ v0.42.0 “ oder einer neueren Version.Nicht kompatibel mit:
- Bruchgatter
- Dehnübungen
Sonstige Hinweise:
- Das „Gate Twirling“ kann auf dynamische Schaltungen angewendet werden, jedoch nur auf Gatter, die sich nicht innerhalb von bedingten Blöcken befinden.
- Das „Measurement Twirling“ kann nur bei Endmessungen angewendet werden.
- Das Vertauschen der Messwerte ist mit der
storeAnweisung unvereinbar. - Funktioniert nicht mit Entanglern, die nicht von Clifford stammen.
Nächste Schritte
- Lesen Sie den Leitfaden „Einführung in Optionen “.
- Weitere Informationen zu den
SamplerV2Methoden finden Sie in der Sampler-API-Referenz. - Entscheiden Sie, in welchem Ausführungsmodus Ihr Job ausgeführt werden soll.
- Erfahren Sie mehr über das Rauschmanagement mit Sampler.