Zum Hauptinhalt springen

Stichprobenbasierte Quantumdiagonalisierung (SQD) – Überblick

Die stichprobenbasierte Quantumdiagonalisierung (SQD) ist eine klassische Nachverarbeitungs-Technik, die auf Stichproben wirkt, die nach der Ausführung eines Quantenschaltkreises auf einem QPU gewonnen wurden. Sie eignet sich zur Berechnung von Eigenwerten und Eigenvektoren von Quantenoperatoren, z. B. des Hamiltonoperators eines Quantensystems, und kombiniert dabei Quanten- und verteiltes klassisches Computing. Diese Nachverarbeitungstechnik kann besonders nützlich sein, wenn du chemische oder andere Quantensysteme simulierst.

Klassisches Computing wird verwendet, um Stichproben eines Quantenprozessors zu verarbeiten sowie einen Ziel-Hamiltonoperator in einem von diesen Stichproben aufgespannten Unterraum zu projizieren und zu diagonalisieren. Dadurch ist SQD robust gegenüber durch Quantenrauschen beschädigten Stichproben und kann große Hamiltonoperatoren verwalten – etwa chemische Systeme mit Millionen interagierender Terme –, die mit exakten Diagonalisierungsmethoden nicht mehr handhabbar wären.

Das SQD-Tool kann Hamiltonoperatoren ansteuern, die als Linearkombinationen von Pauli-Operatoren oder zweiquantisierten fermionischen Operatoren ausgedrückt sind. Die Eingabestichproben werden durch benutzerdefinierte Quantenschaltkreise gewonnen, die als gute Repräsentationen von Eigenzuständen (z. B. dem Grundzustand) eines Zieloperators angesehen werden. Die Konvergenzrate von SQD als Funktion der Stichprobenanzahl verbessert sich mit der Spärlichkeit des Ziel-Eigenzustands.

Das SQD-Paket installieren

Es gibt zwei Möglichkeiten, das SQD-Paket zu installieren: über PyPI oder durch das Bauen aus dem Quellcode. Es wird empfohlen, diese Pakete in einer virtuellen Umgebung zu installieren, um die Trennung der Paketabhängigkeiten sicherzustellen.

Aus PyPI installieren

Die einfachste Möglichkeit, das Paket qiskit-addon-sqd zu installieren, ist über PyPI.

pip install qiskit-addon-sqd

Aus dem Quellcode bauen

Hier klicken, um zu lesen, wie du dieses Paket manuell installierst

Wenn du zum Paket beitragen möchtest oder es manuell installieren willst, klone zuerst das Repository:

git clone git@github.com:Qiskit/qiskit-addon-sqd.git

und installiere das Paket über pip. Das Repository enthält außerdem Beispiel-Notebooks, die du ausführen kannst. Wenn du im Repository entwickeln möchtest, kannst du die dev-Abhängigkeiten installieren.

Passe die Optionen nach Bedarf an.

pip install tox notebook -e '.[notebook-dependencies, dev]'

Theoretischer Hintergrund

Der SQD-Workflow mit selbstkonsistenter Konfigurationswiederherstellung wird in [1] ausführlich erläutert. Dieser Abschnitt gibt einen Überblick über die Technik, die im folgenden Diagramm dargestellt ist.

SQD-Diagramm, das die Konfigurationswiederherstellung, das Sammeln von Teilstichproben und das Gewinnen von Eigenzuständen aus diesen Teilstichproben zeigt

Hier ist Xˉ\bar{\mathcal{X}} eine Menge verrauschter Stichproben, die – im Kontext des simulierten Hamiltonoperators – physikalische und nicht-physikalische Konfigurationen (als Bitstrings dargestellt) enthalten, die bei der Ausführung auf einem QPU gewonnen wurden. Die nicht-physikalischen Konfigurationen sind auf Rauschen zurückzuführen und können durch die Methode sqd.configuration_recovery.recover_configurations() verarbeitet werden, um die Stichproben zu einer neuen Menge XR\mathcal{X}_R zu verfeinern.

Aus dieser Menge werden Batches von Konfigurationen S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} gemäß einer Verteilung gesammelt, die proportional zu den empirischen Häufigkeiten jedes x\mathbf{x} in XR\mathcal{X}_R ist. Jeder Batch von Stichprobenkonfigurationen spannt einen Unterraum S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K auf, in dem der Hamiltonoperator projiziert und diagonalisiert wird:

H^S(k)=P^S(k)H^P^S(k), with P^S(k)=xS(k)xx, \hat{H}_{S^{(k)}} = \hat{P}_{\mathcal{S}^{(k)}}\hat{H}\hat{P}_{\mathcal{S}^{(k)}}\text{, with } \hat{P}_{\mathcal{S}^{(k)}} = \sum_{\mathbf{x} \in \mathcal{S}^{(k)}} |\mathbf{x}\rangle\langle\mathbf{x}|,

wobei H^S(k)\hat{H}_{\mathcal{S}^{(k)}} der Hamiltonoperator eines gegebenen Unterraums ist.

Der Großteil des SQD-Workflows liegt darin, dass jeder dieser Unterraum-Hamiltonoperatoren diagonalisiert wird. Die aus diesen Unterräumen gewonnenen Grundzustände ψ(k)|\psi^{(k)}\rangle werden verwendet, um eine Schätzung eines Referenzvektors der Besetzungen n(K)\mathbf{n}^{(K)} zu erzeugen, gemittelt über alle KK Unterräume. Eine neue Menge von Konfigurationen XR\mathcal{X}_R wird dann durch probabilistisches Umkippen einzelner Bits erzeugt, basierend auf dieser mittleren Besetzung und der bekannten Gesamtanzahl von Teilchen (Hamming-Gewicht) im System. Dieser Konfigurationswiederherstellungsprozess wird dann wiederholt, indem eine neue Menge von Unterräumen zur Diagonalisierung vorbereitet, neue Eigenzustände und gemittelte Orbitalbesetzungen gewonnen und eine neue Menge von Konfigurationen erzeugt wird. Diese Schleife wird solange iteriert, bis ein benutzerdefiniertes Kriterium erfüllt ist, und der Gesamtprozess ist analog zum Filtern eines verrauschten Signals zur Verbesserung seiner Genauigkeit.

Nächste Schritte

Empfehlungen

Referenzen

[1] Robledo-Moreno, Javier, et al. "Chemistry beyond exact solutions on a quantum-centric supercomputer" arXiv preprint arXiv:2405.05068 (2024).