Sample-based quantum diagonalization (SQD)
Dieses Paket implementiert Sample-based quantum diagonalization (SQD) — eine Technik zum Finden von Eigenwerten und Eigenvektoren von Quantenoperatoren, etwa des Hamiltonoperators eines Quantensystems [1–6]. Sie kann Hamiltonoperatoren adressieren, die als Linearkombinationen von Pauli-Operatoren oder zweitquantisierten Fermionischen Operatoren ausgedrückt sind. SQD-basierte Workflows lassen sich auf heutigen Quantencomputern ausführen, und es wurde gezeigt, dass sie auf Problemgrößen skalieren, die mit variationellen Methoden nicht möglich waren — und sogar jenseits der Reichweite exakter klassischer Diagonalisierungsmethoden.
SQD-basierte Workflows beginnen damit, einen oder mehrere Quantenzustände auf einem Quantengerät vorzubereiten und von ihnen zu samplen. Anschließend werden diese verrauschten Samples mit klassischem verteiltem Rechnen verarbeitet. Diese Verarbeitung erfolgt iterativ in zwei Schritten: Zuerst korrigiert ein Konfigurationswiederherstellungsschritt verrauschte Samples mithilfe von Informationen über das Eingabeproblem; danach wird der Hamiltonoperator in den von diesen Samples aufgespannten Unterraum projiziert und dort diagonalisiert. Diese Schritte werden selbstkonsistent bis zur Konvergenz wiederholt. Das Ergebnis sind ein approximierter niedrigster Eigenwert (Energie) und der Eigenzustand niedrigster Energie eines gegebenen Hamiltonoperators. SQD ist robust gegenüber durch Quantenrauschen verfälschten Samples; solange sich ein nutzbares Signal aus dem Quantencomputer gewinnen lässt, ist das Ergebnis von SQD unempfindlich gegenüber verrauschten Bitstrings.
qiskit-addon-sqd kann in der Praxis verwendet werden, um Samples aus einer Vielzahl von Quantenschaltkreisen klassisch zu verarbeiten. Zum Beispiel:
- Ein variationeller Ansatz-Schaltkreis mit Parametern, die so gewählt sind, dass das Sampling des Schaltkreises elektronische Konfigurationen erzeugt, auf denen die Zielwellenfunktion (zum Beispiel der Grundzustand) einen signifikanten Träger hat. Das ist attraktiv für Anwendungen in der Chemie, wo Hamiltonoperatoren Millionen von Wechselwirkungstermen haben können [1]. Ein Beispiel für diesen Ansatz in der Chemie mit einem LUCJ-Schaltkreis findest du im Tutorial zur Approximation der Grundzustandsenergie des N2-Moleküls.
- Eine Menge von Krylov-Basiszuständen wird über zunehmende Zeitintervalle vorbereitet. Bei einem guten Anfangszustand und einem dünnbesetzten Grundzustand ist für diesen Ansatz bewiesen, dass er effizient konvergiert. Da auf einem Quantengerät Trotterisierte Zeitentwicklungsschaltkreise vorbereitet werden müssen, eignet sich dieser Ansatz am besten für Anwendungen auf Gittermodelle [2] statt auf komplexe Vielteilchen-Hamiltonoperatoren wie die der Quantenchemie. Ein Beispiel für diesen Ansatz bei Fermionischen Gitter-Hamiltonoperatoren findest du im Tutorial zur Approximation der Grundzustandsenergie eines vereinfachten Single-Impurity-Anderson-Modells.
- Eine Menge von Krylov-Basiszuständen, implementiert mit qDRIFT-randomisierter Kompilierung des Zeitentwicklungsoperators. Dieser Ansatz liefert Schaltkreise geringerer Tiefe als Trotter-basierte Zerlegungen der Zeitentwicklung und kann daher für Hamiltonoperatoren der Quantenchemie verwendet werden. Diese Technik wurde auf die Grundzustandsenergie polyzyklischer aromatischer Kohlenwasserstoffe angewendet [6].
Erste Schritte
Eine einfache Anleitung, mit der du schnell mit diesem Paket loslegen kannst, findest du im Schnellstart-Leitfaden.
Anwendungsbeispiele
Die Technik der Sample-based quantum diagonalization lässt sich zur Umsetzung einer breiten Palette von Workflows einsetzen. Einige Beispiele, wo sie verwendet wurde:
-
Elektronenstrukturrechnungen der Grundzustandsenergien von Eisen-Schwefel-Clustern
-
Abschätzung von Grundzustandsenergien zur Vorhersage von Bandlücken von Dielektrika
-
Abschätzung niedrig liegender angeregter Molekülzustände
-
Simulation von Wechselwirkungen zwischen Molekülen
-
Untersuchung von Solut-Solvens-Wechselwirkungen in Simulationen der Elektronenstruktur
-
Open-Shell-Analyse der molekularen Dissoziation
-
Modellierung von Reaktionspfaden für photochemische Probleme
-
Kombination mit Entanglement Forging, um Reaktionspfade für den Materialabbau durch Wasserstoffabstraktion zu untersuchen
-
Konstruktion von Unterräumen aus quantenmechanischen Krylov-Basiszuständen, um Grundzustandssimulationen von Störstellenmodellen für fermionische Systeme durchzuführen
-
Einsatz der randomisierten qDRIFT-Kompilierung, um den Aufwand für die Implementierung von Krylov-Basiszuständen für chemische Hamiltonoperatoren zu senken, sowie die Anwendung auf ein Molekül mit einer elektronischen Halb-Möbius-Topologie
-
Einsatz von SQD als Solver im Kontext von Einbettungs- und Fragmentierungsmethoden für molekulare Systeme, etwa um Energien von Wasserstoffringen und Cyclohexan sowie von bi- und trimetallischen Komplexen zu berechnen, die Sauerstoffreduktionsreaktion zu untersuchen, Energien von Proteinen und Protein-Ligand-Komplexen abzuschätzen und die Tritium-Speziation vorherzusagen.
Technische Diskussion
Systemgrößen und Rechenanforderungen
Der Rechenaufwand von SQD wird von den Aufrufen des Eigenzustands-Solvers dominiert. In jedem Schritt der selbstkonsistenten Iteration zur Konfigurationswiederherstellung werden n_batches Aufrufe des Eigenzustands-Solvers ausgeführt. Die einzelnen Aufrufe sind trivial parallelisierbar. In diesem Tutorial befinden sich diese Aufrufe in einer for-Schleife. Es wird dringend empfohlen, diese Aufrufe parallel auszuführen.
Die Funktion qiskit_addon_sqd.fermion.solve_fermion() ist multithreaded und kann Systeme mit ~25 räumlichen Orbitalen und ~10 Elektronen bei Unterraumdimensionen von ~$10^7$ mit ~10-30 Kernen bewältigen.
Wahl der Unterraumdimensionen
Die Wahl der Unterraumdimension beeinflusst Genauigkeit und Laufzeit des Eigenzustands-Solvers. Je größer der Unterraum, desto genauer die Berechnung, allerdings auf Kosten von höherer Laufzeit und höherem Speicherbedarf. Die optimale Unterraumgröße für ein gegebenes System ist nicht bekannt; daher kann eine Konvergenzstudie über die Unterraumdimension durchgeführt werden, wie in diesem Leitfaden beschrieben.
Begrenzung der Unterraumdimension
Das Argument samples_per_batch von qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() legt die Anzahl der Bitstrings in jedem Batch fest und steuert dadurch die Unterraumdimension indirekt: Bei Anwendungen in der Quantenchemie bestimmt sein Wert eine obere Schranke für die Unterraumdimension. Die tatsächlich resultierende Dimension hängt davon ab, wie viele der gesampelten Bitstrings verschieden sind, und sie wächst im Verlauf der selbstkonsistenten Iterationen zur Konfigurationswiederherstellung, sodass sie nicht im Voraus bekannt ist. Weitere Details findest du in diesem Beispiel.
Das Argument max_dim derselben Funktion begrenzt die Dimension direkt, indem es die Anzahl der in jedem Spinsektor beibehaltenen CI-Strings limitiert. Da der Unterraum vom kartesischen Produkt der beiden Spinsektoren aufgespannt wird, begrenzt max_dim=d die Unterraumdimension auf d**2, während ein Tupel max_dim=(d_a, d_b) den Spin-Alpha- und den Spin-Beta-Sektor getrennt limitiert und die Unterraumdimension auf d_a * d_b begrenzt (mit symmetrize_spin=True müssen die beiden Limits gleich sein). Liefert ein Batch mehr CI-Strings, als das Limit zulässt, werden bevorzugt die über include_configurations angeforderten Strings und die aus der vorherigen Iteration übernommenen beibehalten, und die verbleibenden Plätze werden mit den am häufigsten gesampelten Strings aufgefüllt. Da max_dim die Größe der größten Diagonalisierung begrenzt, die vom Eigenzustands-Solver verlangt wird, ist es eine bequeme Möglichkeit, den Solver innerhalb eines Laufzeit- und Speicherbudgets zu halten. Weitere Details findest du in diesem Leitfaden.
Solver
Die Projektions- und Diagonalisierungsschritte werden von einem klassischen Solver ausgeführt. Wir stellen hier zwei generische Solver bereit, einen für fermionische Systeme und einen für Qubit-Systeme. Weitere Solver, die für bestimmte Systeme effizienter sein könnten, können von den Nutzern angebunden werden.
Trim SQD
Standard-SQD diagonalisiert jeden subgesampelten Batch unabhängig und behält das beste Ergebnis, sodass die Anzahl der berücksichtigbaren Konfigurationen auf das beschränkt ist, was ein bezahlbarer Unterraum fassen kann. Trim SQD hingegen teilt die Bitstrings in Batches auf, führt für jeden Batch eine Zwischendiagonalisierung durch und führt dann eine größere Diagonalisierung mit den am höchsten gewichteten Determinanten aus jeder Partition durch. Diese Methode basiert auf gemeinsamer Forschung der Cleveland Clinic Foundation, von RIKEN und IBM [7] und kann aktiviert werden, indem ein TrimPolicy-Objekt an die Funktion diagonalize_fermionic_hamiltonian() übergeben wird.
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.
Wir verwenden GitHub Issues, um Anfragen und Fehler zu verfolgen.
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.
Danksagungen
Dieses Paket enthält eine optionale Sampling-Strategie innerhalb der selbstkonsistenten Schleife zur Konfigurationswiederherstellung, die Determinanten anhand der Ergebnisse der Zwischendiagonalisierung beschneidet. Die Implementierung basiert auf gemeinsamer Forschung der Cleveland Clinic Foundation, von RIKEN und IBM. Wenn du diese Funktion in deiner Forschung verwendest, zitiere bitte zusätzlich das Paper, das du in der Datei CITATION.bib unter dem Zitationsschlüssel merz2026crossing findest. Eine Implementierung des vollständigen Workflows aus diesem Paper wird voraussichtlich bald auf GitHub verfügbar sein.
Lizenz
Deprecation-Richtlinie
Wir folgen Semantic Versioning. Gelegentlich können wir Breaking Changes vornehmen, um die Nutzererfahrung 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, jeder Breaking Change und jede Veraltung wird in den Versionshinweisen dokumentiert.
Referenzen
-
Javier Robledo-Moreno, et al., Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].
-
Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].
-
Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].
-
Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].
-
Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].
-
Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].
-
Kenneth M. Merz Jr., et al., Crossing the 12,000-atom barrier with heterogeneous quantum-classical supercomputing: quantum chemistry of protein-ligand complexes, arXiv:2605.01138 [quant-ph].