Skip to main content
IBM Quantum Platform

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:

  1. Wenn in der Datei „ PUB “ die Anzahl der Aufnahmen angegeben ist, verwende diesen Wert.
  2. Wenn das shots Schlüsselwort-Argument in runangegeben ist, verwende diesen Wert.
  3. Wenn aktiviert twirling ist, wird das Produkt aus num_randomizations und shots_per_randomization, wie in den Optionen twirling angegeben, verwendet.
  4. Wenn angegeben sampler.options.default_shots ist, 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.

Note

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

    default_shots API-Dokumentation

  • Einstellungen zur Minderung dynamischer Entkopplungsfehler steuern.

    dynamical_decoupling API-Dokumentation

    • Auswahlmöglichkeiten : True, False

      Standard : False

    • Auswahlmöglichkeiten : middle, edges

      Standard : middle

    • Auswahlmöglichkeiten: asap, alap Standard: alap

    • Auswahlmöglichkeiten: XX, XpXm, XY4 Standard: XX

    • Auswahlmöglichkeiten: True, False Standard: False

  • environment API-Dokumentation

    • Liste der Tags.

      Auswahlmöglichkeiten : Keine

      Standard : Keine

    • Optionen : DEBUG, INFO, WARNING, ERROR, CRITICAL

      Standard : WARNUNG

    • Auswahlmöglichkeiten : True, False

      Standard : False

  • execution API-Dokumentation

    • Ob die Qubits bei jedem Durchlauf in den Grundzustand zurückgesetzt werden sollen.

      Auswahlmöglichkeiten : True, False

      Standard : True

    • Die Verzögerung zwischen einer Messung und dem darauf folgenden Quantenschaltkreis.

      Auswahlmöglichkeiten : Wert im angegebenen Bereich backend.rep_delay_range

      Standard : Vorgelegt von backend.default_rep_delay

    • Auswahlmöglichkeiten : classified, kerneled, avg_kerneled

      Standard : 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)

    max_execution_time API-Dokumentation

  • Optionen, die bei der Simulation eines Backends übergeben werden müssen

    simulator API-Dokumentation

    • 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

    twirling API-Dokumentation

    • Auswahlmöglichkeiten : Richtig, Falsch

      Standard : False

    • Auswahlmöglichkeiten : Richtig, Falsch

      Standard : False

    • Auswahlmöglichkeiten : auto, Ganzzahl >= 1

      Standard : auto

    • Auswahlmöglichkeiten : auto, Ganzzahl >= 1

      Standard : auto

    • Auswahlmöglichkeiten : active, active-circuit, active-accum, all

      Standard : 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-runtime von „ v0.42.0 “ oder einer neueren Version.
  • Nicht kompatibel mit:

    • Dynamische Schaltungen
  • Nicht kompatibel mit:

    • Torwirbeln

    Kompatibel mit dynamischen Schaltkreisen bei Verwendung qiskit-ibm-runtime von „ 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 store Anweisung unvereinbar.
    • Funktioniert nicht mit Entanglern, die nicht von Clifford stammen.

Nächste Schritte

Empfehlungen
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.