NoiseLearner
class NoiseLearner(mode=None, options=None)
Basen: object
Klasse zur Durchführung von Experimenten zum Rauschlernen.
Die Klasse der Rauschlerner ermöglicht die Charakterisierung der Rauschprozesse, die sich auf die Gatter in einem oder mehreren interessierenden Schaltkreisen auswirken, auf der Grundlage des Pauli-Lindblad-Rauschmodells, das in [1].
Die Methode run() methode ermöglicht die Durchführung eines Noise-Learner-Jobs für eine Liste von Schaltkreisen. Nach der Übermittlung des Auftrags werden die Gatter zu unabhängigen Schichten zusammengefasst, und die daraus resultierenden Schichten werden anschließend einzeln charakterisiert.
Die Art und Weise, in der die Gates in Schichten gesammelt werden, hängt von der in der gegebenen options angegebenen Zwirbelung strategy ab (siehe NoiseLearnerOptions für weitere Details). Beachten Sie, dass alle Strategien den Schranken gehorchen. Wenn Sie beispielsweise drei ISA-Verschränkungsebenen von Interesse haben, können Sie diese in einen Schaltkreis einfügen, der durch Barrieren getrennt ist, die auf die Qubits wirken, die Sie verwirbeln möchten, und strategy="active-circuit" wählen.
Der folgende Ausschnitt zeigt ein Beispiel, in dem der Noise Learner zur Charakterisierung der Schichten zweier GHZ-Schaltungen verwendet wird.
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.noise_learner import NoiseLearner
from qiskit_ibm_runtime.options import NoiseLearnerOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# a circuit returning a two-qubit GHZ state
ghz = QuantumCircuit(2)
ghz.h(0)
ghz.cx(0, 1)
# another circuit returning a two-qubit GHZ state
another_ghz = QuantumCircuit(3)
another_ghz.h(0)
another_ghz.cx(0, 1)
another_ghz.cx(1, 2)
another_ghz.cx(0, 1)
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
circuits = pm.run([ghz, another_ghz])
# set the options
options = NoiseLearnerOptions()
options.layer_pair_depths = [0, 1, 10]
# run the noise learner job
learner = NoiseLearner(backend, options)
job = learner.run(circuits)Parameter
-
mode (BackendV2 | Session |Batch | None) –
Der Ausführungsmodus, der für die primitive Abfrage verwendet wird. Auswahlmöglichkeiten:
- A
Backendwenn Sie den Auftragsmodus verwenden. - A
Sessionwenn Sie den Sitzungsausführungsmodus verwenden. - A
Batchwenn Sie den Stapelausführungsmodus verwenden.
Weitere Informationen zu den Ausführungsmodi finden Sie in der Dokumentation Qiskit Runtime.
- A
-
options (dict | NoiseLearnerOptions |options.EstimatorOptions | None) –
NoiseLearnerOptions. AlternativEstimatorOptionskann aus Gründen der Benutzerfreundlichkeit angegeben werden; in diesem Fall werden die Schätzeroptionen in Rausch-Lerner-Optionen umformatiert und alle irrelevanten Felder ignoriert.
Referenzen
- E. van den Berg, Z. Minev, A. Kandala, K. Temme, Probabilistic error cancellation with sparse Pauli-Lindblad models on noisy quantum processors, Nature Physics Band 19, Seiten 1116-1121 (2023). arXiv:2201.09866 [quant-ph]
Attribute
options
Die Optionen in diesem Lärm lernen.
Methoden
backend
backend()
Rückgabe des Backends, auf dem die primitive Abfrage ausgeführt wird.
Rückgabetyp
BackendV2
run
run(circuits, dry_run=False)
Stellen Sie einen Antrag an das Programm für lärmgeplagte Schüler.
Diese Funktion zerlegt die angegebene Liste der Stromkreise in eine Liste eindeutiger Schichten, wobei die Strategie des Feldes twirling_strategy in options (siehe NoiseLearnerOptions für weitere Einzelheiten) befolgt wird und die Schichten nach der Anzahl ihres Auftretens in den verschiedenen Stromkreisen sortiert werden. Dann wird das Experiment zum Erlernen des Rauschens für so viele Schichten durchgeführt, wie im Feld max_layers_to_learn auf options angegeben ist, wobei die Schichten, die häufiger vorkommen, bevorzugt werden.
Parameter
- circuits (Iterable[QuantumCircuit | EstimatorPubLike]) – Eine iterierbare Struktur aus Schaltkreisen, für die das Noise-Learner-Programm ausgeführt werden soll. Alternativ können Objekte vom Typ „Estimator pub-like“ (primitive unified bloc) angegeben werden, wie beispielsweise Tupel
(circuit, observables)oder(circuit, observables, parameter_values). In diesem Fall werden die pub-ähnlichen Objekte in eine Liste von Schaltkreisen umgewandelt, und alle anderen Felder (wie beispielsweiseobservablesundparameter_values) werden ignoriert. - dry_run (bool) – Wenn
True, wird ein Testlauf durchgeführt, ohne den Auftrag auf einer QPU auszuführen. Dieser Modus kann verwendet werden, um den Auftrag zu validieren, den Verbrauch abzuschätzen und Metadaten zur Schaltungszeitablauf zu abrufen. Die zurückgegebenen Ergebnisse entsprechen zwar dem erwarteten Schema, enthalten jedoch zufällig generierte Testdaten anstelle von tatsächlichen oder simulierten Messergebnissen. Im Gegensatz zu den simulierten Backends erfolgt die Verarbeitung dieses Testlaufs serverseitig, sodass der Vorgang möglicherweise nicht sofort abgeschlossen wird und der Zugriff auf diese Funktion eingeschränkt sein kann.
Rückgabe
Die eingereichte Arbeit.
Rückgabetyp