Zum Hauptinhalt springen
Dieses Projekt befindet sich in der Beta-Phase. Einen Fehler gefunden? GitHub Issue erstellen. Frage oder Idee? In Discussions fragen — wir freuen uns über dein Feedback!
Wie ist die Übersetzungsqualität auf dieser Seite?

Speziell kalibrierte Anweisungen

Standardmäßig sind die Quanten-Gates und Auslese-Operationen auf IBM® Quantencomputern für optimale Leistung in allgemeinen Anwendungsfällen kalibriert. Einige Workloads profitieren jedoch von Anweisungen, deren Parameter anders abgestimmt sind. Zum Beispiel ist MidCircuitMeasure (measure_2) eine Auslese-Operation, die auf Messungen mitten im Circuit zugeschnitten ist, und langsamere cz-Gates können die Ergebnisse einiger Fehlerminderungs-Workflows verbessern.

Speziell kalibrierte Anweisungen gibt es in zwei Formen, auf die du unterschiedlich zugreifst:

  • Anweisungen mit anderen Signaturen werden zusammen mit den Standardanweisungen in der Standardkalibrierung kalibriert, sodass du sie wie jede andere Anweisung zu deinen Circuits hinzufügst. Sie sind meist an einem Suffix erkennbar, etwa measure_2.

  • Alternative Kalibrierungen ersetzen Teile der Standardkalibrierung durch anders abgestimmte Parameter. Du wählst eine aus, indem du beim Abrufen des Backends eine calibration_id übergibst.

Wie IBM Quantencomputer kalibriert werden, erfährst du unter Überwachen, kalibrieren und benchmarken.

Anweisungen mit anderen Signaturen​

Diese Anweisungen werden mit dem Standard-Anweisungssatz kalibriert, daher musst du nichts Besonderes tun, um ein Backend abzurufen, das sie unterstützt. Um eine zu verwenden, füge die entsprechende qiskit-ibm-runtime-Anweisung zu deinem Circuit hinzu.

AnweisungBeschreibungTypischer AnwendungsfallVerwendung in QiskitProzessorfamilie
measure_2Kürzerer MesspulsMid-Circuit-MessungenMidCircuitMeasure (ab v0.43.0)Heron, Nighthawk r2
reset_2Kürzerer bedingter Reset-Puls, der measure_2 verwendetMid-Circuit-Qubit-ResetMidCircuitReset (ab v0.49.0)Heron
measure_resetMessung wie measure, die das Qubit zusätzlich zurücksetzt*Ein Qubit messen und zurücksetzenMeasureReset (ab v0.50.0)Heron, Nighthawk r2
measure_reset_2Kürzere Messung wie measure_2, die das Qubit zusätzlich zurücksetzt*Ein Qubit mitten im Circuit messen und zurücksetzenMeasureReset mit name="measure_reset_2" initialisieren (ab v0.50.0)Heron, Nighthawk r2
xslowBitflip-Gate (X) mit verlängerter DauerPostselektion und Fehlerminderung. Es ist der Standardwert der Option x_pulse_type in Postselektions-PassesAlle

. | XSlowGate (ab v0.50.0) | Alle |

* Auf Heron-Prozessoren ist der Reset vom Messergebnis abhängig. Auf Nighthawk-r2-Prozessoren ist der Reset unbedingt.

Da diese Anweisungen nicht auf jedem Backend unterstützt werden, prüfe die unterstützten Anweisungen des Backends, bevor du sie verwendest:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>")

print(backend.supported_instructions)

Um alle Backends zu finden, die eine Anweisung unterstützen, verwende:

service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)

Verwende instruction_signatures, um die Signaturen dieser speziell kalibrierten Anweisungen anzuzeigen:

print(backend.configuration().instruction_signatures)

Alternative Kalibrierungen​

Alternative Kalibrierungen ersetzen Teile der Standardkalibrierung durch anders abgestimmte Parameter. Jede alternative Kalibrierung hat eine Kalibrierungs-ID, und ihre Verfügbarkeit hängt von der QPU ab.

Um eine alternative Kalibrierung zu verwenden, übergib ihre calibration_id, wenn du das Backend abrufst. Das Target des Backends und damit der Transpiler nutzt die Anweisungseigenschaften aus dieser Kalibrierung, und Primitive-Jobs, die du auf dem Backend ausführst, laufen mit ihr.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")

print(backend.calibration_id)
hinweis

Alternative Kalibrierungen sind nicht auf allen QPUs verfügbar.

Kalibrierungen mit langsamen Gates​

Kalibrierungen mit langsamen Gates stimmen das cz-Gate so ab, dass es langsamer ist als in der Standardkalibrierung. Langsamere cz-Gates können die Leistung bei großskaligen Workflows zur Observablen-Schätzung mit Fehlerminderung verbessern, verlängern aber auch die Gesamtdauer deines Circuits, was zusätzliche Dekohärenz verursacht.

Auf Heron-Prozessoren sind Kalibrierungen mit langsamen Gates außerdem mit zwei Modi der Steuerung des Zwei-Niveau-System-Bias (TLS-Bias) verfügbar:

  • DC-TLS-Bias ist auf die beste momentane Leistung optimiert. Die Standardkalibrierung verwendet DC-TLS-Bias.

  • AC-TLS-Bias moduliert den TLS-Bias, um Gerätefehler über die Zeit zu stabilisieren, wodurch das Rauschmodell des Geräts während langer Workflows stabil bleibt. Details findest du unter „Noise stabilization“ in Observable Estimation in the Absence of Classical Verification.

Nighthawk-Prozessoren verwenden keinen TLS-Bias, daher haben sie nur eine Kalibrierung mit langsamen Gates.

Kalibrierungs-IDProzessorfamilieTLS-BiasEmpfohlen für
Keine (Standardkalibrierung)AlleDC (Heron)Allgemeine Verwendung. Besonders empfohlen für Workloads, deren Bitstrings klassisch destilliert werden können, etwa Peaked Circuits und SQD- oder SKQD-Workflows, sowie für Workloads mit Fehlererkennung.
slow_gates_dcHeronDCGroßskalige Workflows zur Observablen-Schätzung, insbesondere solche mit heuristischer Fehlerminderung wie Zero-Noise-Extrapolation (ZNE).
slow_gates_acHeronACWorkflows, die über lange Sessions stabile Fehlerraten erfordern. Dringend empfohlen für Workflows mit Rauschlernen, etwa Probabilistic Error Amplification (PEA) und Probabilistic Error Cancellation (PEC).
slow_gatesNighthawkNicht zutreffendWorkflows zur Observablen-Schätzung mit Fehlerminderung, etwa ZNE, PEA und PEC.

Zum Beispiel:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")

# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
tipp

Wenn du slow_gates_ac verwendest, sende alle Jobs des Workflows an eine einzelne Session, damit sie laufen, solange das Rauschen des Geräts stabil bleibt.

Gate-Dauern prüfen​

Da Kalibrierungen mit langsamen Gates die Dauer von cz-Gates erhöhen, vergleiche die Dauern mit der Standardkalibrierung, um die Auswirkung auf deinen Circuit zu verstehen. Verwende das Target des Backends, um die Dauer des cz-Gates auf einem bestimmten Qubit-Paar in Sekunden zu ermitteln:

default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk

qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)

Da das Target die gewählte Kalibrierung widerspiegelt, transpiliere deine Circuits für das Backend, das dieselbe calibration_id verwendet, mit der du sie ausführen willst.

Nächste Schritte​

Empfehlungen