Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Microsoft Quantum Development Kit (QDK) enthält Python Tools zum Entwickeln und Testen von Protokollen zur Quantenfehlerkorrektur (QEC). Verwenden Sie das qdk.ec Modul, um Fehlerkorrekturcodes zu analysieren, ausführbare Protokolle zu erstellen, Protokolldeklarationen zu überprüfen und Schaltkreisfehler zu untersuchen. Verwenden Sie qdk.simulation, um logische Programme über diese Protokolle auszuführen.
Die QDK Fehlerkorrekturtools verstehen
Der QDK Fehlerkorrekturworkflow verwendet die folgenden Pakete und Module:
| Component | Verwenden Sie es, um |
|---|---|
qodec |
Definieren und speichern Sie Codes, Anweisungssätze, Gadgets, Ebenen und vollständige QEC-Protokolle. |
qdk.ec |
Analysieren Sie Codes und Gadgets, erstellen Sie baseline qodecs, leiten Sie Gleichungen ab und prüfen Sie Protokolldeklarationen. |
qdk.simulation |
Führen Sie Quantum Intermediate Representation-Programme (QIR) durch einen qodec aus und wenden Sie einen Decoder an. |
qdk.simulation.decoders |
Wählen Sie den integrierten Syndromdecoder aus, verfolgen Sie Frames oder verbinden Sie sich mit dem optionalen deq Decoder. |
qdk.qre |
Schätzen Sie die Raum-, Zeit- und Fehlerkosten von QEC-Modellen für die fehlertolerante Ressourcenschätzung. |
Ein qodec ist eine formale Beschreibung eines ausführbaren QEC-Protokolls. Es verbindet logische Anweisungen mit physischen Schaltkreisen über eine oder mehrere Schichten. Das qodec Paket definiert dieses Datenmodell und seine YAML Darstellung. Das qdk.ec Modul leitet Fakten vom Modell ab und überprüft, ob seine Deklarationen mit seinen Schaltkreisen übereinstimmen.
Weitere Informationen finden Sie in der qodec Übersicht.
Das qdk.qre Modul hat einen anderen Zweck. Es modelliert die Ressourcenkosten eines Fehlerkorrekturschemas. Dies definiert, prüft oder führt qodec-Gadgets nicht aus. Weitere Informationen zur Quantumsressourcenschätzung finden Sie unter QDKWas ist der Microsoft Quantum-Ressourcenschätzer?
Verstehen Sie die qodec Protokollkomponenten
Die folgenden Komponenten definieren ein qodec Protokoll und unterstützen seine Ausführung.
| Component | Description |
|---|---|
| Code | Ein statischer Satz von Stabilisatoren und logischen Operatoren, die einen Codebereich definieren. |
| Befehlssatz | Die logischen oder physischen Operationen, die eine qodec-Ebene unterstützt. |
| Gadget | Eine Schaltung, die eine Anweisung durch Vorgänge in der nächsten unteren Ebene implementiert. |
| Ebene | Eine Zuordnung von einem Anweisungssatz zu einem Anweisungssatz auf niedrigerer Ebene. |
| Codieren | Die Verbindung zwischen logischen Blöcken und Schaltkreis-Qubits an einer Gadgetgrenze. |
| Prüfen | Eine Paritätsgleichung, die gleich Null sein muss, wenn die deklarierte Beziehung gilt. |
| Anzeige | Eine Gleichung, die Schaltkreisergebnisse und Framezeichen einem logischen Ergebnis oder Kennzeichen zuordnet. |
| Flag | Eine benannte Anzeige, die meldet, ob eine Anweisung ihre Annahmebedingung erfüllt hat. |
| Decoder | Eine Komponente, die Syndrominformationen verwendet, um Korrekturen und logische Ergebnisse abzuleiten. |
Ein qodec kann mehrere Ebenen enthalten. Die oberste Ebene kann logische Vorgänge über codierte Blöcke definieren. Die Gadgets auf der obersten Ebene können Anweisungen in der nächsten unteren Ebene aufrufen. Die untere Ebene enthält die physischen Vorgänge, die der Simulator ausführt.
Beispiel-Workflow für Protokolle
Ein typischer Workflow hat sechs Schritte. In den folgenden Schritten werden Funktionen und Klassen aus dem qdk.ec Modul verwendet.
- Definieren Sie einen Code. Erstellen Sie einen
qodec.Codemit Stabilisierungselementen und logischen Pauli-Operatoren. - Analysieren Sie den Code. Verwenden Sie die
CodeProfileKlasse, um logische Operatoren zu untersuchen, Syndrome zu berechnen und Codeabstand zu berechnen. - Erstellen oder laden Sie ein qodec. Verwenden Sie die
build_qodecFunktion, um ein Basisprotokoll zu erstellen oder ein vorhandenes qodec aus YAML zu laden. - Schließen Sie das Protokoll ab und validieren Sie es. Verwenden Sie die
filled-Funktion, um Formeln für unterstützte Prüf- und Auslesevorgänge abzuleiten. Verwenden Sie dieauditFunktion, um inkonsistente oder unvollständige Deklarationen zu finden. - Schaltkreisfehler analysieren. Verwenden Sie die
GadgetProfileKlasse, um logische Aktionen, Fehlereffekte und Gadgetabstand zu untersuchen. - Führen Sie Logikprogramme aus. Kompilieren Sie Q#- oder OpenQASM-Code zu QIR. Übergeben Sie QIR und qodec an
qdk.simulation.run_qir, und wählen Sie dann ein Decoder- und Rauschmodell aus.
Der folgende Code zeigt die Hauptobjekte in diesem Workflow:
import qodec
from qdk import ec
from qdk.simulation import run_qir
code = qodec.Code(
"C4",
stabilizers=["X_0 X_1 X_2 X_3", "Z_0 Z_1 Z_2 Z_3"],
x=["X_0 X_1", "X_0 X_2"],
z=["Z_0 Z_2", "Z_0 Z_1"],
)
code_profile = ec.CodeProfile(code)
print("Code distance:", code_profile.distance())
protocol = ec.build_qodec(code, strategy="bare-css/v1", strict=False)
print(ec.audit(protocol))
# Compile a logical program to QIR before you call run_qir.
# results = run_qir(qir, qodec=protocol, shots=100)
Die bare-css/v1 Strategie in diesem Beispiel erstellt ein einfaches Basisprotokoll ohne Flag-Qubits. Es hilft Ihnen, den Workflow zu prüfen, aber es garantiert keine fehlertoleranten Gadgets. Führen Sie eine Analyse der Gadgetabstände durch, bevor Sie sich für eine Protokollimplementierung entscheiden.
Protokollvalidierung von der Fehleranalyse trennen
Protokoll-Audits und Entfernungsanalysen bewerten verschiedene Aspekte eines QEC-Protokolls.
- Protokollprüfungen überprüfen, ob das deklarierte Protokoll seinen Schaltkreisen und Gleichungen entspricht, wenn keine Fehler auftreten.
- Die Distanzanalyse bestimmt die minimale Anzahl zulässiger Fehler oder Schaltkreisfehler, die zu einem nicht erkannten logischen Fehler führen können.
Verwenden Sie die audit Funktion, um rauschlose Konsistenz zu überprüfen. Das Audit überprüft Codealgebra, Anweisungsdeklarationen, Gadgetaktionen, Prüfungen, Lesevorgänge, Flags, Framebeziehungen und Verweise zwischen qodec Objekten.
Eine Überwachung, bei der keine Probleme festgestellt werden, ist keine Garantie für Fehlertoleranz. Ein Schaltkreis kann die richtige logische Aktion ohne Fehler implementieren und nach einem physischen Fehler trotzdem fehlschlagen. Verwenden Sie die CodeProfile.distance Methode, um den Code und die GadgetProfile.distance Methode zu analysieren, um jede Schaltkreisimplementierung zu analysieren.
Bevor Sie ein Protokoll für laute Simulationen verwenden, führen Sie eine Protokollprüfung durch und analysieren Sie Code- und Gadget-Abstände.
Baustrategie auswählen
Die build_qodec Funktion unterstützt zwei grundlegende CSS Konstruktionsstrategien.
| Strategy | Description |
|---|---|
flagged-css/v1 |
Verwendet die markierte CSS Konstruktion und wählt die Anzahl der Flags aus dem Codeabstand aus. Diese Strategie ist die Standardeinstellung. |
bare-css/v1 |
Verwendet keine Flag-Qubits und überspringt die Entfernungsberechnung, die eine Flaganzahl auswählt. Verwenden Sie dies zur Inspektion und frühen Entwicklung. |
Beide Strategien versuchen, diese logischen Anweisungen zu erstellen:
prepare_z_allprepare_x_allsyndromemeasure_z_allmeasure_x_allh_allcx_all
Nicht jeder Code unterstützt jeden Kandidaten. Mit der Standardeinstellung strict=True löst build_qodec einen Fehler aus, wenn keine Anweisung erstellt und überprüft werden kann. Mit strict=False behält build_qodec nur die unterstützten Anweisungen bei und zeichnet jede übersprungene Anweisung in den qodec-Metadaten auf.
Wählen Sie Ihre nächste Aufgabe aus
- Informationen zum Vorbereiten einer Python-Umgebung finden Sie unter So installieren Sie QDK zur Fehlerkorrektur.
- Informationen zum Definieren eines Codes und Erstellen eines Protokolls finden Sie unter Entwickeln und Überprüfen eines QEC-Protokolls.
- Informationen zum Kompilieren, Simulieren und Decodieren logischer Programme finden Sie unter Ausführen und Decodieren logischer Programme.
Ein vollständiges Notebook, das dem vollständigen Workflow folgt, finden Sie unter Entwickeln und Testen eines QEC-Protokolls im QDK Repository.