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?

Rauschmanagement mit Estimator konfigurieren

Paketversionen

Der Code auf dieser Seite wurde mit den folgenden Anforderungen entwickelt. Wir empfehlen, diese oder neuere Versionen zu verwenden.

qiskit-ibm-runtime~=0.47.0

Es gibt verschiedene Möglichkeiten, Rauschen zu managen – typischerweise durch den Einsatz verschiedener Fehlerminderungs- und Fehlerunterdrückungstechniken, um Fehler zu vermeiden, bevor sie auftreten. Diese Techniken verursachen in der Regel Vorverarbeitungs-Overhead. Daher ist es wichtig, eine Balance zwischen der Verbesserung deiner Ergebnisse und der Sicherstellung zu finden, dass dein Job in angemessener Zeit abgeschlossen wird.

Estimator unterstützt die folgenden Rauschmanagement-Techniken. Eine Erklärung jeder Technik findest du unter Fehlerminderungs- und Unterdrückungstechniken. Ein Beispiel zur Aktivierung dieser Techniken findest du im Abschnitt Benutzerdefinierte Rauschmanagement-Einstellungen.

Dynamical Decoupling

So aktivierst du es: options.dynamical_decoupling.enable = True

API-Referenz: DynamicalDecouplingOptions

Wichtige Optionen: sequence_type

Pauli Twirling

So aktivierst du es: options.twirling.enable_gates = True

API-Referenz: TwirlingOptions

Wichtige Optionen: num_randomizations, shots_per_randomization

TREX

So aktivierst du es: options.resilience.measure_mitigation = True

API-Referenz: MeasureNoiseLearningOptions

Wichtige Optionen:

ZNE

So aktivierst du es: options.resilience.zne_mitigation = True

API-Referenz: ZneOptions

Wichtige Optionen: noise_factors, extrapolator

PEA

So aktivierst du es: (ZNE muss ebenfalls aktiviert sein) options.resilience.zne_mitigation = True und options.resilience.zne.amplifier = "pea"

API-Referenz: ZneOptions

Wichtige Optionen: noise_factors, extrapolator

PEC

So aktivierst du es: options.resilience.pec_mitigation = True

API-Referenz: PecOptions

Wichtige Optionen: max_overhead

Resilience-Level​

Der resilience_level gibt an, wie viel Robustheit gegenüber Fehlern aufgebaut werden soll. Höhere Level erzeugen genauere Ergebnisse, auf Kosten längerer Verarbeitungszeiten. Resilience-Level können verwendet werden, um den Kosten-/Genauigkeits-Kompromiss beim Anwenden von Rauschmanagement auf deine Primitive- Abfrage zu konfigurieren. Rauschmanagement reduziert Fehler (Bias) in den Ergebnissen, indem die Ausgaben einer Sammlung oder eines Ensembles verwandter Circuits verarbeitet werden. Der Grad der Fehlerreduzierung hängt von der angewendeten Methode ab. Der Resilience- Level abstrahiert die detaillierte Wahl der Rauschmanagement-Methode, damit Nutzer den für ihre Anwendung geeigneten Kosten-/Genauigkeits-Kompromiss abwägen können.

Angesichts dessen entspricht jedes Level einer oder mehreren Methoden mit zunehmendem Quantum-Sampling-Overhead, damit du verschiedene Zeit-/Genauigkeits-Kompromisse ausprobieren kannst. Die folgende Tabelle zeigt, welche Level und die dazugehörigen Methoden für jedes der Primitives verfügbar sind.

Resilience-LevelBeschreibungTechnik
0Keine MinderungKeine
1 [Standard]Minimale Minderungskosten: Minderung von Fehlern durch AuslesefehlerTwirled Readout Error eXtinction (TREX) Mess-Twirling
2Mittlere Minderungskosten. Reduziert typischerweise den Bias der Schätzer, ist aber nicht garantiert erwartungstreu (zero-bias).Level 1 + Zero Noise Extrapolation (ZNE) und Gate-Twirling
Achtung

Resilience-Level befinden sich derzeit in der Beta-Phase, sodass Sampling-Overhead und Lösungsqualität je nach Circuit variieren. Neue Funktionen, erweiterte Optionen und Management-Tools werden fortlaufend veröffentlicht. Es ist nicht garantiert, dass auf jedem Resilience-Level bestimmte Rauschmanagement-Methoden angewendet werden.

Estimator mit Resilience-Leveln konfigurieren​

Du kannst Resilience-Level verwenden, um Rauschmanagement-Techniken festzulegen, oder du kannst benutzerdefinierte Techniken individuell einstellen, wie in Benutzerdefinierte Rauschmanagement-Einstellungen beschrieben.

Wichtig

Alle Optionen, die du zusätzlich zum Resilience-Level manuell angibst, werden zusätzlich zu den vom Resilience-Level definierten Basisoptionen angewendet. Daher könntest du prinzipiell den Resilience-Level auf 1 setzen und dann die Messfehlerminderung deaktivieren, obwohl dies nicht empfohlen wird.

Wenn du beispielsweise den Resilience-Level auf 0 setzt, wird zne_mitigation deaktiviert, aber estimator.options.resilience.zne_mitigation = True überschreibt diesen Wert.

Beispiel​

Der folgende Code aktiviert ZNE, TREX und Gate-Twirling durch das Setzen von resilience_level 2.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})

Benutzerdefinierte Rauschmanagement-Einstellungen​

Du kannst einzelne Rauschmanagement-Methoden aktivieren und deaktivieren, indem du die Estimator-Optionen verwendest.

Hinweise

Vollständiges Beispiel mit mehreren Optionen​

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True

print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True

Fehlerminderung vollständig deaktivieren​

Anweisungen zum vollständigen Deaktivieren der Fehlerminderung findest du im Abschnitt Fehlerunterdrückung und -minderung vollständig deaktivieren im Leitfaden zu den Estimator-Optionen.

Nächste Schritte​

Empfehlungen