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?

Einführung in Optionen

Du kannst Optionen verwenden, um IBM Quantum Primitives an deine Bedürfnisse anzupassen.

Struktur​

Wenn du die Primitives aufrufst, kannst du Optionen entweder über eine Options-Klasse oder als Dictionary übergeben. Häufig verwendete Optionen wie resilience_level befinden sich auf der obersten Ebene. Weitere Optionen sind in Kategorien gruppiert, z. B. execution. Gib die Optionen in diesem Format an: options.option.sub-option.sub-sub-option = choice. Zum Beispiel: options.dynamical_decoupling.enable = True.

Standardwerte​

Wenn du für eine Option keinen Wert angibst, erhält sie den speziellen Wert Unset und der serverseitige Standardwert wird verwendet. Der Standardwert ist damit unabhängig von deiner Code-Version immer gleich.

Die Tabellen im Abschnitt „Zusammenfassung der Options-Klassen" im jeweiligen „options"-Leitfaden jedes Primitive listen die Standardwerte auf.

Optionen festlegen​

Optionen können vor der Erstellung eines Primitive definiert und diesem als Instanz der Options-Klasse oder als Dictionary übergeben werden. Das Primitive erstellt eine Kopie davon, was bedeutet, dass Änderungen am ursprünglichen Dictionary oder der Options-Instanz keinen Einfluss auf die Optionen des Primitive haben.

Darüber hinaus kannst du die Optionen nach der Erstellung des Primitive ändern. Verwende den Workflow, der für deine Anwendung am besten geeignet ist.

Hinweise zur Angabe von Primitive-Optionen
  • Du kannst die verfügbaren Optionen während oder nach der Initialisierung des Primitive einsehen.
  • Wenn du für eine Option keinen Wert angibst, erhält sie den speziellen Wert Unset und die Standardwerte des Servers werden verwendet.
  • Das options-Attribut ist vom Python-Typ dataclass. Du kannst die integrierte Methode asdict verwenden, um es in ein Dictionary umzuwandeln.

options-Klasse​

Beim Erstellen einer Instanz der Primitive-Klasse kannst du eine Instanz der options-Klasse übergeben. Diese Optionen werden dann angewendet, wenn du run() zur Durchführung der Berechnung verwendest. Gib die Optionen in diesem Format an: options.option.sub-option.sub-sub-option = choice. Zum Beispiel: options.dynamical_decoupling.enable = True.

Vollständige Details zur Klasse findest du unter SamplerOptions oder EstimatorOptions.

Das folgende Beispiel verwendet das Estimator Primitive, aber die Syntax für andere Primitives ist ähnlich.

from qiskit_ibm_runtime import QiskitRuntimeService

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

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

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

options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)

# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]

estimator = Estimator(mode=backend, options=options)

Dictionary​

Du kannst Optionen als Dictionary bei der Initialisierung eines Primitive angeben.

Das folgende Beispiel verwendet das Estimator Primitive, aber die Syntax für andere Primitives ist ähnlich.

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 initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)

Optionen nach der Initialisierung aktualisieren​

Du kannst Optionen in diesem Format angeben: _primitive_.options.option.sub-option.sub-sub-option = choice, um die Auto-Vervollständigung zu nutzen, oder die Methode update() für umfangreiche Aktualisierungen verwenden.

Die Options-Klasse des Primitive (EstimatorOptions oder SamplerOptions) muss nicht instanziiert werden, wenn du Optionen nach der Initialisierung des Primitive festlegst.

Das folgende Beispiel verwendet das Estimator Primitive, aber die Syntax für andere Primitives ist ähnlich.

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(mode=backend)

# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)

Nächste Schritte​

Empfehlungen