Algorithmiq – API-Referenz zur Fehlerminderung bei Tensor-Netzwerken
Qiskit Functions — von Partnerorganisationen entwickelte vorgefertigte Tools — abstrahieren Teile des Softwareentwicklungs-Workflows, um die Erforschung von Algorithmen und die Anwendungsentwicklung im großen Maßstab zu vereinfachen und zu beschleunigen. Klicken Sie hier, um die Anleitung zu dieser Qiskit-Funktion anzuzeigen.
Algorithmiq TEM Qiskit – Funktionshandbuch
Eingaben
TEM weist derzeit folgende Einschränkungen auf:
- Parametrisierte Schaltungen werden nicht unterstützt. Das Argument „parameters“ sollte auf gesetzt
Nonewerden, wenn die Genauigkeit angegeben wird. Diese Einschränkung wird in zukünftigen Versionen aufgehoben. - Es werden nur Schaltungen ohne Schleifen unterstützt. Diese Einschränkung wird in zukünftigen Versionen aufgehoben.
- Nicht-unitäre Operatoren wie „reset“, „measure“ und alle Formen der Kontrollflusssteuerung werden nicht unterstützt. Die Unterstützung für das Zurücksetzen wird in kommenden Versionen hinzugefügt.
Parameter
pubs
Typ: Iterable[EstimatorPubLike]
Eine Iterable aus Objekten vom Typ „ PUB “ (primitive vereinheitlichte Blöcke), wie beispielsweise Tupel (circuit, observables) oder (circuit, observables, parameters, precision). Weitere Informationen finden Sie in der Übersicht über PUBs. Wird ein Nicht-ISA-Ausdruck übergeben, wird er mit optimalen Einstellungen transpiliert. Wird eine ISA-Schaltung durchlaufen, wird sie nicht transpiliert; in diesem Fall muss die Beobachtungsgröße auf der gesamten QPU definiert sein.
- Erforderlich: Ja
- Beispiel:
(circuit, observables)
backend_name
Typ: str
Standardwert: Least busy backend
Name des Backends, an das die Abfrage gesendet werden soll
- Erforderlich: Nein
- Beispiel:
"ibm_fez"
Optionen
Typ: dict
Die Eingabeparameter für diese Funktion werden als verschachteltes Wörterbuch angegeben. Hier finden Sie die vollständige Liste der Optionen und ihrer Standardwerte.
- Erforderlich: Nein
- Beispiel:
{"max_bond_dimension": 100}
Ein Wörterbuch mit den erweiterten Optionen für das TEM. Das Wörterbuch kann die Schlüssel aus der folgenden Liste enthalten. Wenn eine der Optionen nicht angegeben wird, wird der in der Liste aufgeführte Standardwert verwendet. Die Standardwerte eignen sich gut für den typischen Einsatz von TEM.
Optionsliste
tem_max_bond_dimension
Typ: int
Standardwert: 500
Die maximale Bindungsdimension, die für die Tensornetzwerke verwendet werden soll.
tem_compression_cutoff
Typ: float
Standardwert: 1e-16
Der für die Tensornetzwerke zu verwendende Schwellenwert.
compute_shadows_bias_from_observable
Typ: bool
Standardwert: False
Ein boolescher Flag, der angibt, ob die Voreinstellung für das Messprotokoll für klassische Schatten an die Observable „ PUB “ angepasst werden soll oder nicht. Ist der Wert „False“, wird das klassische Schattenprotokoll (gleiche Wahrscheinlichkeit für die Messung von Z, X, Y) verwendet.
shadows_bias
Typ: np.ndarray
Standardwert: np.array([1 / 3, 1 / 3, 1 / 3])
Der für das randomisierte klassische Schattenmessprotokoll zu verwendende Bias, ein Array vom Typ „ 1d “ bzw. „ 2d “ mit der Größe 3 bzw. der Form (num_qubits, 3). Die Reihenfolge lautet ZXY.
max_execution_time
Typ: int or None
Standardwert: None
Die maximale Ausführungszeit auf der QPU in Sekunden. Wenn die Laufzeit diesen Wert überschreitet, wird der Auftrag abgebrochen. In Nonediesem Fall gilt ein vom „ IBM Quantum Compute Service“ festgelegtes Standardlimit.
num_randomizations
Typ: int
Standardwert: 32
Die Anzahl der Randomisierungen, die für das Noise Learning und das Gate Twirling verwendet werden sollen.
max_layers_to_learn
Typ: int
Standardwert: True
Die maximale Anzahl der zu trainierenden eindeutigen Schichten.
mitigate_readout_error
Typ: bool
Standardwert: True
Ein boolescher Flag, der angibt, ob eine Fehlerbehebung beim Auslesen durchgeführt werden soll oder nicht.
num_readout_calibration_shots
Typ: int
Standardwert: 10000
Die Anzahl der Aufnahmen, die zur Reduzierung von Auslesefehlern verwendet werden sollen.
default_precision
Typ: float
Standardwert: 0.02
Die Standardgenauigkeit, die für die PUBs verwendet wird, für die keine Genauigkeit angegeben ist.
seed
Typ: int or None
Standardwert: None
Legen Sie den Startwert des Zufallszahlengenerators fest, um die Reproduzierbarkeit zu gewährleisten. Falls Noneja, setze den Startwert nicht.
shots_per_randomization
Typ: int
Standardwert: 128
Die Gesamtzahl der zu verwendenden Versuche pro Zufallslernzyklus.
layer_pair_depths
Typ: list[int]
Standardwert: [0, 1, 2, 4, 16, 32]
Die Schaltungstiefen (gemessen in der Anzahl der Paare), die in den Lernexperimenten verwendet werden sollen.
layer_noise_model
Typ: NoiseLearnerResult, Sequence[LayerError], or None
Standardwert: None
Das Ergebnis des Precomputed-Noise-Learners aus einem zuvor durchgeführten Durchlauf.
private
Typ: bool
Standardwert: False
Ob die QPU-Jobs privat sein sollen. Wenn Sie diesen Wert auf „True“ setzen, werden nachfolgende Downloads der Versuchsdaten verhindert; dies wird für vertrauliche Aufträge empfohlen.
tem_enforce_linear_circuit
Typ: bool
Standardwert: False
Ob die Schaltung in einer linearen Topologie ausgeführt werden soll.
Genauigkeit
Die Genauigkeit der Ergebnisse kann auf drei Arten abgefragt werden. Die Genauigkeit kann im PUB übergeben werden und gilt dann ausschließlich für diese PUB. Andernfalls kann default_precision ein wie oben beschrieben in den Optionen übergeben werden. Schließlich kann für fortgeschrittene Anwendungen die spezifische Anzahl der Schüsse pro PUB über die Optionen mit default_shotsübergeben werden, wodurch alle anderen Präzisionsoptionen außer Kraft gesetzt werden.
Wird ein Wert für „a“ default_precision oder „per- PUB “ übergeben, wird die Anzahl der Iterationen so geschätzt, dass die gewünschte Genauigkeit erreicht wird. Dies erfolgt auf der Grundlage der gewählten QPU-Parameter und Fehlerraten wie folgt:
- Berechnung des Fehlers pro geschichtetem Gatter (EPLG), der das durch Schichten von Zwei-Qubit-Gattern verursachte Rauschen quantifiziert. Wenn Backend-Eigenschaften verfügbar sind, wird die entsprechende Genauigkeitsstufe ermittelt; andernfalls wird ein Standardwert verwendet.
- Die Anzahl der Zwei-Qubit-Gatter im Schaltkreis zählen, da diese in der Regel die Hauptursache für Rauschen sind.
- Berechnung eines Rauschvorfaktors auf der Grundlage der Anzahl der Zwei-Qubit-Gatter und des EPLG.
- Anhand der gewünschten Genauigkeit schätzt das Verfahren die erforderliche Anzahl von Messungen, indem es diese mit dem Rauschvorfaktor und dem Kehrwert des Quadrats der Genauigkeit skaliert.
Dieser Ansatz stellt sicher, dass die Anzahl der Schüsse ausreicht, um die gewünschte Präzision zu erreichen, wobei sowohl die Schaltungsstruktur als auch die Rauscheigenschaften des Backends berücksichtigt werden.
Ausgaben
Ein Qiskit, das das PrimitiveResults TEM-korrigierte Ergebnis enthält. Das Ergebnis für jeden „ PUB “ wird als zurückgegeben, das die PubResult folgenden Felder enthält:
Daten
Typ: Databin
Ein Qiskit, DataBin das die TEM-korrigierte Observable und deren Standardfehler enthält. Der „ DataBin “ enthält die folgenden Felder:
evs: Der durch TEM korrigierte Messwert.stds: Der Standardfehler der durch TEM korrigierten Observable.
Metadaten
Typ: dict
Ein Wörterbuch mit weiteren Ergebnissen. Das Wörterbuch enthält die folgenden Einträge:
"evs_non_mitigated": Der beobachtbare Wert ohne Fehlerkompensation."stds_non_mitigated": Der Standardfehler des Ergebnisses ohne Fehlerminderung."evs_mitigated_no_readout_mitigation": Der Messwert mit Fehlerkompensation, jedoch ohne Kompensation von Ablesefehlern."stds_mitigated_no_readout_mitigation": Der Standardfehler des Ergebnisses unter Fehlerminderung, jedoch ohne Minderung von Auslesefehlern."evs_non_mitigated_with_readout_mitigation": Der Messwert ohne Fehlerkompensation, jedoch mit Kompensation des Ablesefehlers."stds_non_mitigated_with_readout_mitigation": Der Standardfehler des Ergebnisses ohne Fehlerkompensation, jedoch mit Kompensation von Auslesefehlern."resource_usage": Ein Verzeichnis, das die vom TEM genutzten Zeitressourcen enthält.