Zum Hauptinhalt springen

Die Natur simulieren

Schau dir dieses Video von Olivia Lanes über die Simulation der Natur mit Quantencomputern an, oder öffne es in einem separaten Fenster auf YouTube.

Diese Lektion verwendet Inhalte aus diesem Tutorial:

Tutorial zur Fehlerminderung im Utility-Maßstab mit Probabilistic Error Amplification

Einleitung

Eine der überzeugendsten Anwendungen von Quantencomputern ist ihre Fähigkeit, natürliche Phänomene zu simulieren. In dieser Lektion werden wir untersuchen, wie Quantencomputer zur Lösung von Quantendynamikproblemen eingesetzt werden – konkret, wie sie uns helfen, die Zeitentwicklung eines Quantensystems zu verstehen.

Zunächst werden wir einen allgemeinen Überblick über die Schritte bei der Durchführung dieser Simulationen geben. Dann werden wir ein konkretes Beispiel untersuchen: das Experiment, das IBM 2023 präsentierte und das das Konzept der Quantum Utility demonstrierte. Dieses Experiment dient als exzellente Fallstudie zum Verständnis der praktischen Schritte und Implikationen der Simulation von Quantendynamik mit echter Quantenhardware. Am Ende wirst du ein klareres Bild davon haben, wie Forscher diese Herausforderungen angehen und warum die Quantensimulation ein solches Versprechen für das Vorantreiben unseres Verständnisses der natürlichen Welt birgt.

Richard Feynman hielt 1959 einen hocheinflussreichen Vortrag am Caltech. Er trug den berühmten Titel „There's Plenty of Room at the Bottom" (Es ist viel Platz am Boden), in spielerischer Anspielung auf die riesigen, unerforschten Möglichkeiten im mikroskopischen Maßstab. Feynman argumentierte, dass vieles der Physik auf atomarer und subatomarer Ebene noch entdeckt werden musste.

Die Bedeutung des Vortrags wuchs in den 1980er Jahren mit dem technologischen Fortschritt. In dieser Zeit griff Feynman diese Ideen in einem weiteren wichtigen Vortrag am Caltech wieder auf und präsentierte ein Paper mit dem Titel „Simulating Nature with Computers" (Die Natur mit Computern simulieren). Dort stellte er eine kühne Frage: Könnten Computer verwendet werden, um exakte Simulationen durchzuführen, die das Verhalten der Natur auf Quantenebene replizieren? Feynman schlug vor, dass wir anstatt grober Näherungen zur Modellierung atomarer Prozesse Computer verwenden könnten, die die Gesetze der Quantenmechanik selbst nutzen – nicht nur um die Natur zu modellieren, sondern sie zu emulieren.

Es ist genau diese Art von physikalischer Simulation, die wir in dieser Lektion untersuchen werden.

Erinnere dich an diese Timeline-Grafik, die in einer früheren Episode eingeführt wurde. An einem Ende des Spektrums sehen wir Probleme, die einfach zu lösen sind und nicht die erhöhte Geschwindigkeit erfordern, die Quantencomputing bringen könnte.

Ein Diagramm, das die Bandbreite möglicher Probleme von einfach bis schwer zeigt, von denen kein Quantencomputer bis hin zu einem fehlertoleranten benötigt wird, und das anzeigt, dass wir uns auf Probleme in der Mitte konzentrieren.

Am anderen Ende befinden sich extrem schwierige Probleme, die vollständig fehlertolerante Quantenmaschinen erfordern – Technologie, die noch nicht verfügbar ist. Glücklicherweise wird angenommen, dass viele Simulationsprobleme irgendwo in der Mitte dieser Timeline liegen, im Bereich, wo die heutigen Quantencomputer bereits effektiv eingesetzt werden können. Es gibt viele Gründe für Begeisterung und Faszination angesichts dieser Aussicht, da die Simulation der Natur die Grundlage für eine breite Palette vielversprechender Anwendungen bildet.

Die folgenden Informationen behandeln den allgemeinen Workflow in Natursimulationen und dann eine spezifische Instanz des Workflows, um Ergebnisse einer bekannten Studie zu replizieren.

Allgemeiner Workflow

Bevor jemand Quantencomputing auf diese aufregenden Bereiche anwenden kann, ist es wichtig, zunächst die grundlegenden Schritte in einem typischen Simulations-Workflow zu verstehen:

  1. System-Hamiltonianer identifizieren
  2. Hamiltonianer-Kodierung
  3. Zustandspräparation
  4. Zeitentwicklung des Zustands
  5. Circuit-Optimierung
  6. Circuit-Ausführung
  7. Nachverarbeitung

Der Prozess beginnt mit der Identifizierung eines interessierenden Quantensystems. Das hilft bei der Bestimmung des Hamiltonianers, der seine Zeitentwicklung regelt, sowie einer sinnvollen Beschreibung seiner anfänglichen Eigenschaften oder seines Zustands. Als nächstes musst du eine geeignete Methode zur Implementierung der Zeitentwicklung dieses Zustands auswählen. Beachte, dass die ersten vier Schritte in diesem Workflow alle Teil des Mapping-Schritts im Qiskit-Patterns-Framework sind.

Nachdem der Zeitentwicklungs-Circuit eingerichtet ist, umfassen die nachfolgenden Phasen die Durchführung des eigentlichen Experiments. Das beinhaltet typischerweise die Optimierung des Quantencircuits, der den Zeitentwicklungsalgorithmus implementiert, das Ausführen des Circuits auf Quantenhardware und die Nachverarbeitung der Ergebnisse. Diese entsprechen den letzten drei Schritten im Qiskit-Patterns-Framework.

Als nächstes besprechen wir, was diese Schritte bedeuten, bevor wir mit dem Coden beginnen.

1. Den System-Hamiltonianer identifizieren

Der erste wesentliche Schritt bei der Durchführung eines Simulationsexperiments besteht darin, den Hamiltonianer zu identifizieren, der das System beschreibt. In vielen Fällen ist der Hamiltonianer gut etabliert. Wir konstruieren ihn jedoch oft, indem wir die Energiebeiträge kleinerer Teile des Systems summieren. Dies wird typischerweise als eine Summe von Termen ausgedrückt:

H=iNHiH=\sum_i^N {H_i}

wobei jeder Term HiH_i auf eines der NN lokalen Teilsysteme (wie ein einzelnes Teilchen oder eine kleine Gruppe von Teilchen) des Gesamt-Hamiltonianers HH wirkt. Bei ununterscheidbaren Elementarteilchen ist es wichtig zu bestimmen, ob das System Fermionen oder Bosonen enthält, wobei Fermionen dem Pauli-Ausschlussprinzip gehorchen, d.h. keine zwei identischen Fermionen können denselben Quantenzustand besetzen wie Elektronen. Im Gegensatz zu Fermionen können mehrere Bosonen im selben Quantenzustand existieren, und dieser Unterschied beeinflusst die Statistik des Systems und wie es modelliert werden muss.

In der Praxis sind Menschen oft an physikalischen Systemen interessiert, bei denen die Elemente als gut getrennt oder beschriftet und damit unterscheidbar angenommen werden, wie bei Spins auf einem Gitter.

Ein Gitter mit Spins und ein Molekül, das durch Elektronen gebunden ist, die Fermionen sind.

Dieses System besteht aus magnetischen Dipolspins, die auf einem Gitter angeordnet sind und als unterscheidbare Teilchen durch das Zählen ihrer Adresse behandelt werden. Dieses System wird durch das Transversalfeldmodell (Transverse-Field Ising Model) beschrieben, und sein Hamiltonianer wird aus der Summe zweier Teile konstruiert:

H=iNHi=J<i,j>ZiZj+hi=0NXiH = \sum_i^N {H_i} = J \sum_{<i,j>}Z_iZ_j + h\sum_{i=0}^N X_i

Wobei der erste Term die Wechselwirkungsenergie zwischen benachbarten Spins darstellt. Hier zeigt <i,j><i,j> an, dass wir über alle Paare von Spins summieren, die direkt auf dem Gitter verbunden sind, ZiZ_i und ZjZ_j sind die Pauli-Z-Matrizen, die den Zustand der Spins an den Stellen ii und jj darstellen, und JJ ist die Kopplungskonstante, die die Stärke dieser Wechselwirkung definiert. Der zweite Term stellt den Einfluss eines äußeren Magnetfeldes dar, das über das gesamte System angelegt wird. Hier ist XiX_i die Pauli-X-Matrix, die auf den einzelnen Spin an Stelle ii wirkt, und hh gibt die Stärke dieses äußeren Feldes an.

2. Hamiltonianer-Kodierung

Der nächste Schritt besteht darin, den Hamiltonianer in eine Form zu übersetzen, die ein Quantencomputer verarbeiten kann, was wir als Kodierung bezeichnen. Dieser Kodierungsprozess hängt entscheidend von der Art der Teilchen in den Systemen ab: unterscheidbar oder ununterscheidbar, und Fermion oder Boson, wenn die Teilchen ununterscheidbar sind.

Ein Flussdiagramm, das verschiedene mögliche Arten von Abbildungen für verschiedene Systemtypen zeigt, einschließlich Bosonen, Fermionen und unterscheidbarer Teilchen wie Spins auf einem Gitter.

Wenn du ein System mit unterscheidbaren Teilchen hast, wie 1/21/2-Spins, die auf einem Gitter fixiert sind, was wir oben kurz betrachtet haben, ist der Hamiltonianer oft bereits in einer Sprache geschrieben, die mit Qubits kompatibel ist. Der Pauli-Z-Operator beschreibt zum Beispiel natürlich einen Spin nach oben oder unten, und es ist keine spezielle Kodierung erforderlich.

Bei der Simulation ununterscheidbarer Teilchen aus Fermionen oder Bosonen ist es notwendig, eine Kodierungstransformation anzuwenden. Diese Teilchen werden in einem speziellen mathematischen Framework beschrieben, das als zweite Quantisierung bezeichnet wird und die Besetzungszahl jedes Quantenzustands durch die Einführung von Erzeugungs- und Vernichtungsoperatoren verfolgt, wobei der Erzeugungsoperator a^i\hat{a}_i^\dagger ein Teilchen zum Zustand ii hinzufügt, während der Vernichtungsoperator a^i\hat{a}_i ein Teilchen aus dem Zustand ii entfernt. Basierend auf diesem Rahmen der zweiten Quantisierung kann das Fermion durch die Bravyi-Kitaev- und Jordan-Wigner-Transformation transformiert werden. Die Jordan-Wigner-Transformation definiert den fermionischen Erzeugungsoperator f^j=(k<j(Zk))(Xj+iYj2)\hat{f}_j^\dagger = \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j + i Y_j}{2} \Bigr), der den jj-ten Quantenzustand mit einem Fermion füllt, und den fermionischen Vernichtungsoperator f^j=(k<j(Zk))(XjiYj2)\hat{f}_j= \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j - i Y_j}{2} \Bigr), der ein Fermion aus dem jj-ten Zustand entfernt. Weitere Details zur Jordan-Wigner-Transformation findest du in unserem Quantum Computing in Practice, Episode 5 – Mapping. Ähnlich benötigen Bosonen ihre eigenen Kodierungsmethoden, wie die Holstein-Primakoff-Transformation, um durch Qubits dargestellt zu werden.

Letztendlich ist das Ziel, egal ob der Weg direkt ist oder eine Übersetzung erfordert, dasselbe: den Hamiltonianer des Systems in Form von Pauli-Spin-Operatoren auszudrücken, die ein Quantencomputer verstehen und ausführen kann.

3. Zustandspräparation

Nach der Kodierung des gewünschten Hamiltonianers in den Gate-Satz des Quantencomputers ist der nächste wichtige Schritt die Auswahl eines geeigneten anfänglichen Quantenzustands, mit dem die Simulation beginnt. Die Wahl des Anfangszustands beeinflusst nicht nur die Konvergenz von Variationsalgorithmen wie dem Variational Quantum Eigensolver (VQE), sondern wirkt sich auch auf die Genauigkeit und Effizienz der Zeitentwicklung und des Samplings aus. Im Wesentlichen dient der Anfangszustand als Ausgangspunkt für die Berechnung und legt den Grundstein für die Extraktion nützlicher Observablen aus dem modellierten Quantensystem. Idealerweise sollte dieser Zustand eine physikalisch sinnvolle Konfiguration des untersuchten Systems darstellen.

Für viele Quantenchemiesimulationen kann der Hartree-Fock-Zustand ein guter Ausgangspunkt sein. In der Sprache der zweiten Quantisierung wird der Hartree-Fock-Zustand (ϕHF|\phi\rangle_{HF}) erzeugt, indem Erzeugungsoperatoren (a^i\hat{a}_i^\dagger) für jedes der niedrigsten Energieorbitale auf den Vakuumzustand (vac=01...0k...0N=0N|vac\rangle = |0_1 ... 0_k ... 0_N\rangle = |0\rangle ^{\otimes N}) angewendet werden, einen Zustand ohne Elektronen.

ϕHF=i=1ka^i0N=a^1...a^k01...0k...0N|\phi\rangle_{HF} = \prod\limits_{i=1}^k \hat{a}_i^\dagger |0\rangle ^{\otimes N} = \hat{a}_1^\dagger ... \hat{a}_k^\dagger |0_1 ... 0_k ... 0_N\rangle

Darüber hinaus kann ein leicht präparierbarer Ansatz mit signifikanter Überlappung mit dem wahren Grundzustand als guter Anfangszustand für Chemieprobleme dienen, wie z. B. das Finden der Grundzustandsenergie.

Im Allgemeinen können wir einen beliebigen nn-Qubit-Zustand als eine Superposition von Rechenbasisständen ci∣c_i\rangle mit Koeffizienten aia_i schreiben, die Normierungsbedingungen erfüllen. Die Präparation eines solchen Zustands kann im Allgemeinen durch die Anwendung eines spezifischen Operators O^\hat{O} auf den Anfangszustand angegangen werden, der per Konvention typischerweise der Null-Standardbasisstand ist.

ψ=i=02n1aici=O^0nmiti=02n1ai2=1|\psi\rangle = \sum_{i=0}^{2^n-1}{a_i |c_i\rangle}=\hat{O}|0\rangle^{\otimes n}\\ \text{mit} \qquad \sum_{i=0}^{2^n-1}{|a_i^2|}=1

Dieser Prozess erfordert jedoch oft eine exponentielle Anzahl von CNOT-Gates, was ihn im Allgemeinen ressourcenintensiv macht. Wir konzentrieren uns daher oft auf die Präparation von Anfangszuständen, für die der Implementierungsaufwand bescheidener ist. Eine häufige und praktische Wahl ist ein Produktzustand, bei dem Qubits nicht verschränkt sind und der nur mit Einzelqubit-Operationen präpariert werden kann, was den Ressourcenbedarf der Zustandspräparation und die Komplexität erheblich reduziert.

4. Zeitentwicklung des Zustands

Nachdem der Anfangszustand festgelegt ist, können wir endlich die Simulation selbst beginnen – untersuchen, wie sich der Zustand des Systems ϕ(t=0)|\phi(t=0)\rangle nach einer Zeit tt in ϕ(t)|\phi(t)\rangle verändert hat. In der Quantenmechanik wird diese Entwicklung durch eine einzige mathematische Operation beschrieben, den Zeitentwicklungsoperator:

U(t)=eiHtU(t) = e^{-iHt}

wobei wir =1\hbar=1 per Konvention gesetzt haben. Die Anwendung dieses Operators auf unseren Anfangszustand ergibt den Endzustand: ϕ(t)=eiHtϕ(t=0)|\phi(t)\rangle = e^{-iHt}|\phi(t=0)\rangle

Das direkte Implementieren des vollständigen Operators eiHte^{-iHt} in einem Quantencircuit ist jedoch typischerweise unmöglich, wenn unser Hamiltonianer eine Summe verschiedener Teile ist. Daher benötigen wir Trotterisierung.

Einfach ausgedrückt ist Trotterisierung eine Technik zur Approximation der Exponentiation einer Matrix (hier des Hamiltonianers, HH), besonders wenn der Exponent nicht-kommutierende Operatoren enthält ([HA,HB]0[H_A, H_B] \neq 0). Oft besteht der Hamiltonianer HH aus mehreren Operatoren, die nicht kommutieren. In diesem Fall können ihre Exponentialfunktionen nicht getrennt werden:

ei(HA+HB)teiHAteiHBte^{-i(H_A + H_B)t} \neq e^{-iH_A t}e^{-iH_B t}

Ein nützlicher Ansatz ist es, ihre Zeitentwicklungsexponentialfunktionen abwechselnd über kleine Zeitspannen, t/nt/n, insgesamt nn Mal anzuwenden. Bei diesen zwei nicht-kommutierenden Beiträgen würden wir schreiben:

eiHt(eiHAt/neiHBt/n)ne^{−i H t}\approx \left(e^{−i H_A t/n}e^{−i H_B t/n}\right)^n

Ein Quantencircuit, der trotterisierte Zeitentwicklungsoperatoren zeigt: in kleine Stücke aufgeteilte Operatoren.

Der durch diese Approximation eingeführte Fehler wird als Trotter-Fehler bezeichnet. Wir können diesen Fehler reduzieren, indem wir nn erhöhen, aber das hat seinen Preis. Fortgeschrittenere Formeln höherer Ordnung (zweiter Ordnung und andere Varianten) existieren ebenfalls. Die Formel zweiter Ordnung bietet beispielsweise bessere Genauigkeit durch Anwenden der Schritte in einem symmetrischen Muster.

Erste Ordnung:eiHt(jeiHit/n)nZweite Ordnung:eiHt(j=1NeiHjt/2n)n(k=N1eiHkt/2n)n\begin{aligned} \text{Erste Ordnung:} & \qquad e^{-iHt}\approx \left(\prod_j{e^{-iH_i t/n}}\right)^n\\ \text{Zweite Ordnung:} & \qquad e^{-iHt}\approx \left(\prod_{j=1}^N{e^{-iH_j t/2n}}\right)^n\left(\prod_{k=N}^1{e^{-iH_k t/2n}}\right)^n \end{aligned}

Hier ist NN die Anzahl der nicht-kommutierenden Terme, HjH_j, im Hamiltonianer, der auf diese Weise aufgeteilt werden soll, und nn ist die Anzahl der kleinen Zeitschritte, in die diese Entwicklung aufgeteilt wird. Beachte die umgekehrte Reihenfolge der Operatoren im zweiten Produkt bei der Behandlung zweiter Ordnung.

Weitere Details findest du im Abschnitt zur Trotterisierung im Kurs Quantum Diagonalization Algorithms.

5. Circuit-Optimierung

Nach der Erstellung des trotterisierten Circuits ist der Mapping-Schritt abgeschlossen, und wir können mit der Circuit-Optimierung fortfahren. Dieser Prozess umfasst mehrere Schlüsselaufgaben:

  • Qubit-Layout festlegen, das die abstrakten Qubits des Circuits auf die physischen Qubits der Hardware abbildet. Dieser Schritt ist notwendig, weil die Architektur der Hardware oft spezifische Konnektivitätsbeschränkungen hat, während Quantencircuit-Designs typischerweise davon ausgehen, dass jedes Qubit mit jedem anderen interagieren kann.
  • SWAP-Gates einfügen, falls erforderlich, um Wechselwirkungen zwischen Qubits zu ermöglichen, die auf dem Gerät nicht direkt verbunden sind.
  • Die Gates des Circuits in ISA-Anweisungen (Instruction Set Architecture) übersetzen, die die Hardware direkt ausführen kann.
  • Circuit-Optimierungen durchführen, um die Circuit-Tiefe und die Gate-Anzahl zu reduzieren. Diese Optimierung kann auch früher auf den virtuellen Circuit angewendet werden, bevor die Qubits bestimmten Hardware-Verbindungen zugewiesen werden.

Es ist wichtig zu beachten, dass ein Großteil dieses Optimierungsprozesses automatisch durch Qiskit-Tools abgewickelt wird. Wir werden später in dieser Lektion genau erkunden, wie das funktioniert.

6. Circuit-Ausführung

Nach dem Abschluss des Optimierungsschritts sind wir bereit, den Circuit mithilfe eines Primitives auszuführen. Wir betrachten ein Simulationsexperiment, bei dem das Ziel darin besteht zu verstehen, wie sich bestimmte Eigenschaften des Systems im Laufe der Zeit ändern. Für diesen Zweck ist das Estimator-Primitive die geeignetste Wahl, da es dir ermöglicht, die Erwartungswerte von Observablen zu messen, die diesen Eigenschaften entsprechen.

Als nächstes verwenden wir Optionen einschließlich Error-Suppression- und Error-Mitigation-Techniken, um die Genauigkeit des Estimators zu verbessern. Schließlich führen wir das Experiment durch, um die Ergebnisse zu sammeln.

7. Nachverarbeitung

Der letzte Schritt ist die Nachverarbeitung der gesammelten Daten. Dies beinhaltet die Extraktion der gemessenen Erwartungswerte oder, wenn das Sampler-Primitive verwendet wurde, der abgetasteten Wahrscheinlichkeitsverteilung in der Rechenbasis. Wenn nur die Erwartungswerte der relevanten Observablen benötigt werden, können diese direkt vom Estimator-Primitive abgerufen werden, sowohl als Rohergebnisse als auch mit angewendeter Fehlerminderung. Oft dienen diese gemessenen Erwartungswerte als Ausgangspunkt für weitere Berechnungen anderer interessierender Größen. Solche zusätzlichen Berechnungen erfordern typischerweise keine Quantenberechnung und können effizient auf einem klassischen Computer durchgeführt werden.

Das „Utility"-Paper replizieren

hinweis

Dieser Teil ist ein allgemeiner Walkthrough des Tutorials Fehlerminderung im Utility-Maßstab mit Probabilistic Error Amplification, das die Ergebnisse des Papers Evidence for the Utility of Quantum Computing Before Fault Tolerance repliziert. Wir empfehlen dir dringend, das referenzierte Tutorial zusammen mit dieser Sitzung zu öffnen.

Wir werden nun ein konkretes Beispiel aus einem hocheinflussreichen Paper untersuchen, das IBM 2023 veröffentlichte und das den Titel Evidence for the Utility of Quantum Computing Before Fault Tolerance trägt, oft als „Utility-Paper" bezeichnet.

Das Titelbild des Artikels, den wir das Utility-Paper nennen, veröffentlicht in der Fachzeitschrift Nature.

Nach seiner Veröffentlichung wurde diese Arbeit schnell zu einer Meilenstein-Studie in der Quantencomputing-Community. Ihre zentrale These ist, dass ein verrauschter Quantencomputer mit 127 Qubits und 2.880 Gates genaue Erwartungswerte für Quantencircuits liefern kann, die jenseits der Reichweite von Brute-Force-klassischen Simulationsmethoden liegen, die versuchen, dieselben Circuits exakt zu simulieren.

Diese Studie war besonders bedeutsam, weil sie demonstrierte, dass Quantencomputer zur Überprüfung oder zum Vergleich von Ergebnissen mit approximativen klassischen Simulationsmethoden wie Tensornetzwerkalgorithmen verwendet werden können – besonders in Szenarien, in denen die exakte Lösung im Voraus nicht bekannt ist.

Ein weiterer bemerkenswerter Aspekt dieser Arbeit ist, dass sie weit verbreitet reproduziert wurde: Forscher und Nutzer haben jetzt die Möglichkeit, das Experiment mithilfe von IBMs cloudbasierten Quantensystemen und dem Qiskit-Software-Framework zu replizieren und zu verifizieren. Im Folgenden werden wir dich durch die Schritte führen, diese Replikation selbst durchzuführen, indem wir IBMs Tutorial Schritt für Schritt durchgehen.

In dieser Lektion besprechen wir die spezifischen Schritte, die erforderlich sind, um das Problem in Eingaben zu übersetzen, die ein Quantengerät verarbeiten kann. Wir konzentrieren uns auf die Simulation der Dynamik der Gesamtmagnetisierung in einem System magnetischer Dipolspins, die auf einem Gitter angeordnet und einem äußeren Magnetfeld ausgesetzt sind. Dieses System kann durch ein Ising-Modell mit einem transversalen Magnetfeld beschrieben werden. Wir stellen es mit einem parametrisierten Quantencircuit dar, wobei die Parameter den einstellbaren Werten der Spin-Spin-(ZZZZ)-Wechselwirkungen und der Stärke des äußeren, transversalen Magnetfeldes (BxB_x, parametrisiert mit XX) entsprechen.

Spins auf einem Gitter, die entweder nach oben oder unten zeigen.

Da diese Serie den Titel „Quantum Computing in Practice" trägt, werden wir zusätzliche Details der experimentellen Techniken behandeln, die zur Verbesserung der Ergebnisqualität verwendet werden. Ein wichtiges Verfahren ist die Identifizierung und Entfernung von „schlechten" Qubits – solche mit geringen Gate-Fidelitäten oder kurzen Dekohärenzzeiten –, die das Ergebnis des Experiments erheblich beeinträchtigen könnten. Solche problematischen Qubits können durch schlechte Kalibrierung oder Wechselwirkungen mit Zwei-Niveau-Systemen (TLS) entstehen. Das Entfernen dieser Qubits verändert die native Topologie der Hardware und damit effektiv das Gitter, auf dem das System simuliert wird.

Darüber hinaus werden wir besprechen, wie man den parametrisierten Quantencircuit konstruiert, der die Zeitentwicklung des Systems mithilfe von Trotterisierung implementiert. Ein wesentlicher Teil dieses Prozesses ist die Identifizierung von Verschränkungsschichten innerhalb des Circuits, die eine entscheidende Rolle bei der wichtigsten Fehlerminderungstechnik spielen.

Qiskit Patterns Schritt 1: Abbilden (Map)

Das Tutorial führt den Mapping-Schritt ähnlich wie der oben beschriebene allgemeine Ansatz durch. Spezifisch für dieses Problem führt das Tutorial folgendes durch:

  • Erstellt einen parametrisierten Ising-Modell-Circuit
  • Erstellt Verschränkungsschichten und entfernt schlechte Qubits
  • Generiert eine trotterisierte Version des Circuits

Im Tutorial beginnen wir früh im Notebook damit, eine Reihe von Hilfsfunktionen zu erstellen. Diese Funktionen sind darauf ausgelegt, den Prozess zu vereinfachen, während wir fortfahren. Diese sind kein erforderlicher Teil des Verfahrens, aber es ist eine gute gängige Praxis bei ähnlichen Experimenten: das Problem in handhabbare Komponenten aufteilen. Die Funktionen umfassen:

  • Qubit-Kopplungen entfernen
  • Qubit-Kopplungen definieren
  • Schichtkopplungen konstruieren
  • Die Verschränkungsschicht konstruieren
  • Den trotterisierten Circuit definieren

Hier wollen wir Themen im Zusammenhang mit diesen Funktionen etwas genauer erkunden.

Schichtkopplungen

Schichtkopplungen definieren, wie Qubits während der Simulation mit ihren Nachbarn interagieren. Unsere Quantengeräte verwenden ein Heavy-Hexagonal-Layout, ein markantes Muster zur Verbindung von Qubits. Innerhalb dieses Layouts können die Verbindungen zwischen Qubits – bekannt als „Kanten" – in drei unterschiedliche Mengen unterteilt werden. Wichtig ist, dass keine zwei Verbindungen in derselben Menge ein Qubit teilen. Diese Organisation adressiert eine wesentliche Hardware-Einschränkung: Auf einem echten Quantencomputer kann ein Qubit zu einem bestimmten Zeitpunkt nur an einem Zwei-Qubit-Gate teilnehmen.

Eine farbcodierte Karte, die Kopplungsschichten zeigt. Sie betont, dass Zwei-Qubit-Gates über den gesamten Quantencomputer ausgeführt werden können, obwohl nur ein Zwei-Qubit-Gate gleichzeitig auf einem bestimmten Qubit ausgeführt werden kann.

Durch das Strukturieren aller Verbindungen in drei separate Schichten können Zwei-Qubit-Gates über das gesamte Gerät in drei aufeinanderfolgenden Runden angewendet werden. Dies stellt sicher, dass kein Qubit in mehr als einem Gate pro Schicht beteiligt ist. Diese Gates implementieren die ZZ-Wechselwirkung im Ising-Modell und werden bei jedem Zeitschritt der Simulation (jedem Trotter-Schritt) wiederholt.

Darüber hinaus wird eine Technik namens Twirling eingesetzt, um Rauschcharakteristika im Gerät zu ändern. Twirling transformiert das Rauschen so, dass selbst einfache Rauschmodelle genauere Darstellungen der physikalischen Fehler werden. Diese Verfeinerung ermöglicht eine präzisere Charakterisierung des Rauschens, das dann genutzt werden kann, um Fehlerminderungsstrategien zu verbessern.

Entfernen von „schlechten" Qubits

Der nächste Schritt beinhaltet das Entfernen der „schlechten" Qubits aus der Liste der für das Experiment verfügbaren physischen Qubits. Ein Qubit kann aus verschiedenen Gründen „schlecht" werden. Manchmal ist es einfach eine Frage der schlechten Kalibrierung, die durch Neukalibrierung behoben werden kann. In anderen Fällen ist das Problem komplexer und hängt mit sogenannten Zwei-Niveau-System-Defekten (TLS-Defekte) zusammen. Diese TLS-Defekte verursachen Schwankungen der Qubit-Parameter und Relaxation. Die Behebung erfordert oft das Erwärmen des gesamten Systems und anschließendes Abkühlen – ein Prozess, der einige Zeit in Anspruch nehmen kann und beim Fernzugriff auf Quantenhardware über die Cloud nicht durchführbar ist.

Der einfachste Ansatz ist für jetzt, diese problematischen Qubits aus dem Pool der physischen Qubits auszuschließen, die im Experiment verwendet werden. Die IBM Quantum Platform® macht es einfach, zu identifizieren, welche Qubits auf einem QPU unterdurchschnittlich abschneiden. Du kannst entweder den QPU öffnen und ihre Eigenschaften direkt auf der Plattform visualisieren oder die Daten von der Plattform als CSV-Datei herunterladen. Als nächstes erstellst du eine Liste von Qubits, die ausgeschlossen werden sollen, und entfernst sie aus der Gesamtmenge der physischen Qubits auf dem Gerät.

Das Layout eines Quantencomputers wird gezeigt, mit einem unterdurchschnittlichen Qubit in Pink markiert.

Das Entfernen unzuverlässiger Qubits stellt sicher, dass das Verhalten des Systems vorhersehbarer ist, was die Genauigkeit des Experiments verbessert. Es ermöglicht auch eine bessere Rauschmodellierung, was für die Implementierung effektiver Fehlerminderungsstrategien unerlässlich ist.

Trotterisierter Circuit

Es ist jetzt an der Zeit, unseren trotterisierten Circuit zu konstruieren. Wie bereits besprochen, zerlegt die Trotterisierung die Zeitentwicklung in diskrete Schritte, daher müssen wir wählen, wie viele Schritte wir verwenden wollen. Für dieses Beispiel werden wir sechs Schritte wählen. Im Allgemeinen geht es darum, den Trotter-Fehler – einen Approximationsfehler, der durch den Algorithmus eingeführt wird – mit Fehlern durch Dekohärenz abzuwägen. Das Erhöhen der Anzahl der Trotter-Schritte reduziert den Approximationsfehler, erfordert jedoch tiefere Quantencircuits, die anfälliger für Dekohärenzrauschen sind.

Der Circuit wird mit mehreren Parametern definiert: dem Theta-Parameter, der die Stärke des äußeren Magnetfeldes darstellt, den Kopplungen zwischen Schichten, der Anzahl der Schritte, der Anzahl der Qubits und natürlich der Wahl des Geräte-Backends. Da die Magnetisierung des Systems von der Stärke des äußeren Magnetfeldes abhängt, ist es wertvoll, die Simulation bei verschiedenen Magnetfeldwerten durchzuführen. Diese Variation entspricht verschiedenen Rotationswinkeln für das RX-Gate im Circuit.

from qiskit.circuit import Parameter

num_steps = 6 #Trotter steps
theta = Parameter("theta")
circuit = trotter_circuit(
theta, layer_couplings, num_steps, qubits = good_qubits, backend = backend
)
num_params = 12

# 12 parameter values for Rx between [0,p/2].
#Reshape to outer product broadcast with observables

parameter_values = np.linespace(0,np.pi/2,num_params).reshape((num_params,1))
num_params = parameter_values.size

Qiskit Patterns Schritt 2: Optimieren (Optimize)

Nachdem wir unseren Circuit generiert haben, besteht der nächste Schritt darin, ihn zu optimieren. Der erste Teil dieses Prozesses beinhaltet das Definieren eines Pass Managers. Im Kontext des Qiskit SDK ist die Transpilierung der Prozess der Transformation eines Eingabe-Circuits in eine Form, die für die Ausführung auf einem Quantengerät geeignet ist. Diese Transformation erfolgt durch eine Folge von Schritten, die als Transpilierungsdurchläufe bezeichnet werden. Ein Pass Manager ist ein Objekt, das eine Liste dieser Transpilierungsdurchläufe enthält und sie auf einen Circuit anwenden kann. Um einen zu erstellen, initialisierst du einen PassManager mit der gewünschten Liste von Transpilierungsdurchläufen. Letztendlich erzeugt der Pass Manager einen ISA-Circuit – einen Circuit, der in Termen der Instruction Set Architecture (ISA) des Backends ausgedrückt ist. Das bedeutet, der Circuit wird mit Gates dargestellt, die nativ für die Backend-Hardware sind, enthält jedoch noch keine Timing-Informationen, die erforderlich sind, um den Circuit auf dem Gerät auszuführen.

Qiskit Patterns Schritt 3: Ausführen mit Primitives

Jetzt ist es Zeit, unseren Circuit auszuführen. Wir werden den Estimator als unser primäres Werkzeug für dieses Experiment verwenden, da unser Ziel darin besteht, die Gesamtmagnetisierung des Systems zu messen. Der Estimator ist speziell dafür ausgelegt, die Erwartungswerte von Observablen zu schätzen, was ihn zur idealen Wahl macht. In dieser Phase ist es auch wichtig, unsere Fehlerminderungseinstellungen zu konfigurieren. Wir werden Zero Noise Extrapolation (ZNE) anwenden, um die Genauigkeit unserer Ergebnisse zu verbessern. Im Tutorial wirst du sehen, dass wir zwei oder mehr Rauschfaktorwerte angeben, bei denen die extrapolierten Modelle ausgewertet werden sollen, und wir wählen „Probabilistic Error Amplification" (PEA) als unsere Amplifikationsmethode. PEA ist für dieses Experiment vorzuziehen, da es deutlich besser skaliert als andere Optionen, was bei Systemen mit 100 oder mehr Qubits entscheidend ist.

Das ist alles, was erforderlich ist, um das Experiment durchzuführen.

Einschub zur Fehlerminderung

Bevor wir mit der Nachverarbeitung fortfahren, nehmen wir uns kurz Zeit, zu klären, was mit Zero Noise Extrapolation (ZNE) gemeint ist. Wir haben dieses Konzept in früheren Episoden kurz angesprochen, aber es lohnt sich, es kurz zu wiederholen. ZNE ist eine Fehlerminderungstechnik, die darauf ausgelegt ist, die Auswirkungen unbekannten Rauschens zu reduzieren, das während der Ausführung von Quantencircuits auftritt, vorausgesetzt, dieses Rauschen kann auf kontrollierte Weise skaliert werden. Die Methode basiert auf der Annahme, dass Erwartungswerte mit dem Rauschen gemäß einer bekannten Funktion skalieren:

A(λ)=A(0)+k=0makλk+R,\langle A(\lambda)\rangle = \langle A(0)\rangle + \sum_{k=0}^m {a_k \lambda^k}+R,

wobei λλ die Rauschstärke darstellt, die absichtlich verstärkt werden kann.

Der Prozess der Implementierung von ZNE besteht aus folgenden Schritten:

  1. Das Circuit-Rauschen für verschiedene Rauschfaktoren λ1λ_1, λ2λ_2, … amplifizieren.
  2. Jeden rauschverstärkten Circuit ausführen, um die entsprechenden Erwartungswerte A(λ1)\langle A(\lambda_1)\rangle, A(λ2)\langle A(\lambda_2)\rangle, … zu messen.
  3. Diese Ergebnisse zurück auf den Rauschlosigkeits-Grenzwert A(λ0)\langle A(\lambda_0)\rangle extrapolieren.

Plots eines Erwartungswerts werden gezeigt, derselbe Erwartungswert mit verstärktem Rauschen und dann der Wert zurück auf den Fall ohne Rauschen extrapoliert.

Diese Technik ermöglicht es uns, abzuschätzen, wie das Ergebnis ohne Rauschen aussehen würde, was die Genauigkeit von Quantenberechnungen verbessert.

Die primäre Herausforderung bei der effektiven Implementierung von ZNE besteht darin, ein genaues Rauschmodell für den Erwartungswert zu entwickeln und das Rauschen auf kontrollierte und gut verstandene Weise zu amplifizieren. Gängige Techniken zur Fehleramplifikation in ZNE umfassen das Skalieren der Pulsdauer durch Kalibrierung, das Wiederholen von Gates mithilfe von Identitätszyklen und das Hinzufügen von Rauschen durch das Abtasten von Pauli-Kanälen – eine Methode, die als Probabilistic Error Amplification (PEA) bekannt ist.

Unter diesen ist PEA aus mehreren Gründen oft die bevorzugte Wahl:

  • Pulsdehnung verursacht hohe Rechenkosten.
  • Gate-Faltung, die Identitätseinfügungen verwendet, hat keine starken theoretischen Garantien für die Beibehaltung der Rauschverzerrung.
  • PEA ist auf jeden Circuit anwendbar, der mit einem nativen Rauschfaktor ausgeführt wird, obwohl es das vorherige Erlernen des Rauschmodells erfordert.

Drei Methoden zur Verstärkung von Rauschen für ZNE werden gezeigt: Pulsdehnung, Gate-Faltung und Probabilistic Error Amplification.

PEA arbeitet unter der Annahme eines schichtbasierten Rauschmodells, ähnlich dem bei der probabilistischen Fehlerbeseitigung (PEC) verwendeten. Im Gegensatz zu PEC vermeidet es jedoch den exponentiellen Stichprobenaufwand, der typischerweise mit dem Schaltungsrauschen wächst. Diese Effizienz macht PEA zu einem praktischen und robusten Ansatz für die Rauschverstärkung in ZNE, was eine zuverlässigere Quantenfehlerminderung ermöglicht. Um das Rauschmodell zu charakterisieren, müssen wir zunächst die unterschiedlichen Schichten von Zwei-Qubit-Operationen innerhalb des Circuits identifizieren. Für jede dieser Schichten wenden wir ein Pauli-Twirling-Verfahren auf die Zwei-Qubit-Gates an, das sicherstellt, dass das Rauschen durch ein Dämpfungsrauschmodell genau beschrieben werden kann. Als nächstes wiederholen wir Paare von Identitätsschichten in verschiedenen Tiefen, und schließlich passen wir die Fidelitätswerte an, um die Fehlerraten für jeden Rauschkanal zu bestimmen.

Obwohl es vorteilhaft ist, diese Methode konzeptionell zu verstehen, ist die manuelle Implementierung in Qiskit viel einfacher, wie im begleitenden Tutorial gezeigt.

Schritte zum Erlernen eines spärlichen Pauli-Lindblad-Rauschmodells werden gezeigt.

Qiskit Patterns Schritt 4: Nachverarbeiten (Post-process)

Nach Abschluss des Experiments kannst du das Ergebnis durch Nachverarbeitung anzeigen. Die gepunktete graue Linie in den dargestellten Daten stellt die mit approximativen klassischen Methoden erzielten Ergebnisse dar, wobei der Approximationsfehler auf einen niedrigen Grenzwert reduziert wurde. Die Rohdatenpunkte für die verschiedenen Rauschfaktoren, die zu Beginn ausgewählt wurden, sind deutlich von dieser gepunkteten Linie versetzt. Im Gegensatz dazu zeigt die durchgezogene blaue Linie die Daten nach der Anwendung unserer ZNE-Verarbeitung, die die Ergebnisse merklich näher an die exakten Werte bringt. Zusammenfassend zeigen die unter normalen Rauschbedingungen erhaltenen Werte (Rauschfaktor nf=1.0) eine erhebliche Abweichung von den exakten Ergebnissen. Dagegen stimmen die geminderten Werte eng mit den exakten überein und demonstrieren die Wirksamkeit der PEA-basierten Rauschminderungstechnik.

Ein Plot exakter Lösungen, ungeminderte Lösungen und geminderte Lösungen des im Utility-Paper gelösten Problems.

Zusammenfassung

Zusammenfassend, was wir gelernt haben:

  • Quantensimulation ist einer der vielversprechendsten Anwendungsbereiche kurz- bis mittelfristig.
  • Sie hat weitreichende Anwendungen, von Pharmazeutika über Hochenergiephysik bis hin zu Materialwissenschaften und mehr.
  • Das Utility-Paper von IBM, das 2023 veröffentlicht wurde, zeigte den Weg, Quantencomputer für wissenschaftliche Entdeckungen einzusetzen, und wir haben das zugehörige Tutorial durchgearbeitet, das mit dem Paper einhergeht.
  • Die Schritte zur Lösung eines Simulationsproblems von Anfang bis Ende sind relativ unkompliziert, und wir hoffen, dass du jetzt dieses Video und Tutorial als Leitfaden für noch mehr Simulationsprobleme nutzen kannst.

Kurs-Abschlussbefragung

Herzlichen Glückwunsch zum Abschluss dieses Kurses! Bitte nimm dir einen Moment Zeit, um uns bei der Verbesserung unseres Kurses zu helfen, indem du die folgende kurze Umfrage ausfüllst. Dein Feedback wird zur Verbesserung unseres Inhaltsangebots und der Nutzererfahrung verwendet. Vielen Dank!