Qiskit Paulice
qiskit-paulice ist ein Paket zum Einbetten hardwareeffizienter Pauli-Checks in beliebige Clifford-Circuits auf beliebigen Qubit-Konnektivitäten mithilfe von Spacetime-Stabilizer-Codes. Diese Checks können verwendet werden, um logische Fehler während der Circuit-Ausführung zu erkennen. Das Nachselektieren nur der Samples ohne erkannte Fehler kann die Fidelity der mit einem Quantenprozessor gesampelten Zustände verbessern, auf Kosten einiger Ancilla-Qubits und eines höheren Sampling-Overheads. Diese Methode eignet sich besonders für Hardware der nahen Zukunft, da sie im Vergleich zu fehlertolerantem Quantencomputing einen deutlich geringeren Overhead an Qubits und Gates hat und gleichzeitig einen besseren Sampling-Overhead als Fehlerminderungsmethoden wie ZNE oder PEC aufweist [1].
Obwohl Spacetime-Pauli-Checks für eigenständige Fehlererkennungsroutinen verwendet werden können, sind sie auch im Kontext von Fehlerminderung und Fehlerkorrektur relevant. Fehlererkennung kann Fehlerminderungstechniken wie Probabilistic Error Cancellation (PEC) ergänzen, indem sie einen Teil des Rauschens erfasst, das Gates und Messungen betrifft. Dadurch verringert sich die Auswirkung des zu invertierenden Rauschkanals und damit der Sampling-Overhead. Sie lassen sich auch als früher Schritt hin zu praktischer Fehlertoleranz betrachten, da die Implementierung von Stabilizer-Codes zum Schutz von Datenqubits vor logischen Fehlern ein zentrales Konzept der traditionellen Fehlerkorrektur ist. Da diese Methode Single-Shot-Zugriff auf den Quantenzustand bietet, kann sie sowohl in Sampling-basierten als auch in Erwartungswert-basierten Workflows eingesetzt werden.
Erste Schritte
Eine einfache Anleitung, die dir hilft, schnell mit diesem Paket zu beginnen, findest du im Schnellstart-Leitfaden.
Anwendungsbeispiele
Diese Technik wurde verwendet, um die Fidelity von Samples aus Clifford-dominierten Circuits zu verbessern, wobei 97 physische Qubits 2415 logische Verschränkungs-Gates über 70 logische Qubits kodierten [2].
Technische Diskussion
Gute Mengen von Spacetime-Pauli-Checks finden
Eine Menge von Spacetime-Pauli-Checks ist „gut“, wenn jeder Check gültig, von niedrigem Gewicht und effektiv ist.
Ein Check besteht aus einer Anzahl kontrollierter Pauli-Rotationen , die auf einigen Wires des Circuits platziert sind: . Bei einem gegebenen Check liegen die Kontrollen auf einem einzelnen Ancilla-Qubit, und die Rotationen finden auf Wires eines einzelnen Ziel-Qubits statt. Bei Clifford-Circuits ist ein Check gültig, wenn sein rückpropagiertes Produkt ein Stabilizer des vom idealen Circuit präparierten Zustands ist: , wobei der Rückpropagator von von zum Anfang des Circuits ist und die Menge aller Stabilizer des Circuits.
Ein Check hat niedriges Gewicht, wenn seine Implementierung nur wenige Verschränkungs-Gates erfordert. Der Algorithmus zur Check-Auswahl bevorzugt Checks mit niedrigem Gewicht, die die effektivste Fehlererkennung bieten.
Ein Check ist effektiv, wenn er deutlich mehr Fehler erfasst, als er einführt. Ein Pauli-Check besteht aus mehreren Verschränkungs-Gates und führt daher zusätzliches Gate-Rauschen in die Berechnung ein. Es ist wichtig sicherzustellen, dass jeder zusätzliche Check eine zusätzliche Fehlererkennungsfähigkeit mit sich bringt. Die Effektivität einer Menge von Checks lässt sich näherungsweise bestimmen, indem man die von den Checks aufgedeckten Pauli-Fehler zu einem nachselektierten Rauschkanal zusammensetzt und dessen Auswirkung berechnet. Die Minimierung des Sampling-Overheads für die Implementierung des aufgedeckten inversen Rauschkanals ist eine solide Heuristik zur Auswahl guter Checks, da sie anzeigt, wie viel Fehler die Checks nicht erkennen können. Ein langsamerer, aber realistischerer Ansatz besteht darin, ein Monte-Carlo-Sampling aus dem verrauschten Zustand durchzuführen und die logische Fehlerrate der nachselektierten Verteilung empirisch zu berechnen. Beide Ansätze sind als integrierte Kostenfunktionen in der Funktion qiskit_paulice.add_pauli_checks verfügbar.
Samples anhand von Syndromdaten nachselektieren
In diesem Paket wird ein Check mithilfe von Verschränkungs-Gates zwischen einem Ancilla-Qubit und einem Ziel-Qubit implementiert. Jedes Ancilla startet in , sodass seinen Eingabezustand stabilisiert. Die Vorwärtspropagation von vom Anfang des Ancillas durch den gesamten geprüften Circuit liefert einen Pauli-Operator auf der Ausgabe, der ein höheres Gewicht haben und sich in den Payload-Circuit erstrecken kann. Die Qubit-Indizes, auf denen dieser Ausgabeoperator nicht-identische Terme hat, heißen Träger (Support) des Checks, und der Check bestanden, wenn die Bits im Träger des Checks gerade Parität haben: . Ein Sample wird behalten, wenn jeder Check für seine Paritätsprüfung liefert.
Software-Funktionen
-
Automatische Erstellung von Rauschmodellen aus Backend-Benchmarkdaten
-
Rust-beschleunigte Check-Suche
-
3 integrierte Algorithmen zur Check-Suche
-
Unterstützung für RZ-Gate-Doping
-
Unterstützung für die Kombination von Fehlererkennung mit Fehlerminderung
Bekannte Probleme
-
Idle-Rauschen wird nicht über
NoiseModel.get_backendbereitgestellt und bei der Check-Auswahl ignoriert -
Obwohl viele stochastische Schritte im Algorithmus über einen Zufalls-Seed gesteuert werden können, haben einige Funktionen eine Zufälligkeit, die sich nicht per Seed kontrollieren lässt. Insbesondere führen die folgenden Argumentwerte für
add_pauli_checkszu einer nichtdeterministischen Check-Auswahl:cost="LER",method="genetic"undmethod="windowed_genetic". Für deterministisches Verhalten verwendeadd_pauli_checks(..., cost="gamma", method="windowed"); das sind die Standardwerte.
Künftige Arbeiten
-
Behandlung von Idle-Rauschen bei der Check-Auswahl
-
Kontrollierbare Zufälligkeit für die Kostenfunktion der logischen Fehlerrate und für genetische Suchalgorithmen
Mitwirken
Der Quellcode ist auf GitHub verfügbar.
Der Entwicklerleitfaden befindet sich in CONTRIBUTING.md im Stammverzeichnis des Repositorys dieses Projekts. Mit deiner Teilnahme verpflichtest du dich, den Verhaltenskodex von Qiskit einzuhalten.
Dieses Paket zitieren
Wenn du dieses Paket in deiner Forschung verwendest, nutze die Datei CITATION.bib im Repository dieses Projekts, um die passende(n) Referenz(en) zu zitieren.
Lizenz
Deprecation-Richtlinie
Wir folgen Semantic Versioning. Gelegentlich nehmen wir abwärtsinkompatible Änderungen vor, um die Benutzererfahrung zu verbessern. Wenn möglich, behalten wir alte Schnittstellen bei und markieren sie als veraltet, solange sie mit den neuen koexistieren können. Jede wesentliche Verbesserung, abwärtsinkompatible Änderung oder Deprecation wird in den Versionshinweisen dokumentiert.
Referenzen
-
Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].
-
Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].