Tutorial: Schätzen der Ressourcen eines Quantenchemieproblems
In diesem Tutorial wird gezeigt, wie Sie die physischen Ressourcen schätzen, die erforderlich sind, um die Energie eines Hamiltonianers mit einer chemischen Genauigkeit von 1 mHa mithilfe des Azure Quantum Resource Estimators zu berechnen.
Hinweis
Das Microsoft Quantum Development Kit (Classic QDK) wird nach dem 30. Juni 2024 nicht mehr unterstützt. Wenn Sie bereits QDK-Entwickler sind, empfehlen wir Ihnen, zum neuen Azure Quantum Development Kit (Modern QDK) umzusteigen, um die Entwicklung von Quantenlösungen fortzusetzen. Weitere Informationen finden Sie unter Migrieren Ihres Q#-Codes zum modernen QDK.
In diesem Lernprogramm lernen Sie Folgendes:
- Klonen Sie ein Beispielrepository von GitHub.
- Verwenden Sie FCIDUMP-Dateien als Argumentparameter für chemische Modellierungs- und Simulationsanwendungen.
- Führen Sie die Ressourcenschätzung für ein groß angelegtes Problem aus, bei dem es sich um ein doppelt factorisiertes Chemiebeispiel handelt.
Voraussetzungen
Eine Python-Umgebung, in der Python und Pip installiert sind.
Die neueste Version von Visual Studio Code mit installiertem Azure Quantum Development Kit und installierten Python-Erweiterungen .
Das neueste Azure Quantum-Paket
qsharp
undnumpy
und-Paketescipy
.python -m pip install --upgrade qsharp numpy scipy
Tipp
Sie benötigen kein Azure-Konto, um den lokalen Ressourcenstimator auszuführen.
Beschreiben Sie das Problem
In diesem Tutorial werten Sie die physikalischen Ressourcenschätzungen des Qubitisierungsalgorithmus aus, die in Phys. Rev. Research 3, 033055 (2021) beschrieben sind, um die Energie eines Benutzers zu berechnen, der Hamiltonian zur chemischen Genauigkeit von 1 mHa bereitgestellt hat.
Der Quantenalgorithmus, der die Energie des Hamilton-Schen berechnet, basiert auf der doppelt factorisierten Qubitisierung. Das Hamilton-Element wird in Bezug auf Ein- und Zwei-Elektronen-Integrale in bereitgestellten FCIDUMP-Dateien (Vollständige Konfigurationsinteraktion) beschrieben, die über einen HTTPS-URI verfügbar sind.
Der Qubitisierungsansatz basiert auf der Quantenphasenschätzung, aber anstatt den Standard $U = \exp{(-i H/\alpha)}$ aus der Hamilton-Matrix $H$zu konstruieren, nimmt man $U = \exp{(-i \sin^{-1} (H/\alpha))}$, die in der Regel mit weniger Ressourcen implementiert werden kann. Durch die Doppelfaktorisierung wird $H$ kompakt durch eine Kombination aus einer vernünftigen Auswahl von Orbitalen und Komprimierung dargestellt.
Laden des Beispiels in Visual Studio Code
Den Code für dieses Tutorial finden Sie im Q#-Beispielrepository unter schätzung/df-chemistry. Es wird empfohlen, das Repository auf Ihrem lokalen Computer zu klonen, um das Beispiel auszuführen.
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um das Repository zu klonen:
git clone https://github.com/microsoft/qsharp.git
Auswählen und Übergeben einer FCIDUMP-Datei
In diesem Beispiel wird das Hamilton-Element in Form von Ein- und Zwei-Elektronen-Integralen im FCIDUMP-Format beschrieben. Sie können eine der FCIDUMP-Dateien aus der folgenden Tabelle auswählen oder Ihre eigene FCIDUMP-Datei auswählen, die auf Ihrem Computer oder online über einen öffentlich zugänglichen HTTPS-URI verfügbar ist.
URI | Instanzname | BESCHREIBUNG |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64 Elektronen, 56 Orbital-Aktivraum eines der stabilen Zwischenprodukte im Ruthenium-katalysierten Kohlenstofffixierungszyklus. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 Elektron, 54 orbital aktiver Raum des aktiven Kerns der Stickstoffase. |
https://aka.ms/fcidump/fe2s2-10e-40o | fe2s2-10e-40o | 10 Elektron, 40 orbitaler aktiver Raum von [2Fe, 2S] Cluster. |
https://aka.ms/fcidump/polyyne-24e-24o | polyyne-24e-24o | 24 Elektron, 24 orbital aktiver Raum des polynynen Moleküls. |
https://aka.ms/fcidump/n2-10e-8o | n2-10e-8o | 10 Elektron, 8 orbital aktiver Raum von er dissoziierte Stickstoff in 3 Angstrom Entfernung. |
Um die FCIDUMP-Datei zu übergeben, müssen Sie die chemistry.py-Datei ausführen und den FCIDUMP-Dateinamen oder den URI als Argument übergeben, indem Sie entweder -f
oder verwenden --fcidumpfile
.
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
Ausführen des Chemiebeispiels
Öffnen Sie in Visual Studio Code den Ordner, in dem Sie das Q#-Beispielrepository geklont haben.
Öffnen Sie ein neues Terminal, Terminal –> Neues Terminal, und navigieren Sie zu dem Verzeichnis, in dem sich das Quantenchemiebeispiel befindet. Wenn Sie beispielsweise das Q#-Beispielrepository auf Ihrem lokalen Computer klonen, lautet
qsharp/samples/estimation/df-chemistry
der Pfad .Führen Sie die chemistry.py-Datei aus, und übergeben Sie die FCIDUMP-Datei. Der folgende Befehl lädt beispielsweise die FCIDUMP-Datei n2-10e-8o in den Arbeitsordner herunter und führt die Ressourcenschätzung dafür aus.
python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
Danach können Sie stattdessen den Pfad zur heruntergeladenen Datei an das Skript übergeben.
python chemistry.py -f n2-10e-8o
Das Ergebnis der Ressourcenschätzung wird im Terminal angezeigt. Die folgende Ausgabe zeigt beispielsweise die Ressourcenschätzung für die FCIDUMP-Datei n2-10e-8o .
Algorithm runtime: 19 mins Number of physical qubits required: 207.60k For more detailed resource counts, see file resource_estimate.json
Hinweis
Nach dem Ausführen der chemistry.py-Datei wird eine resource_estimation.json-Datei im Arbeitsordner erstellt. Die resource_estimation.json-Datei enthält die detaillierte Ausgabe des Resource Estimators. Dies sind die Auftragsparameter, physische Anzahlen, T Factory-Eigenschaften, logische Anzahlen und logische Qubiteigenschaften.
Parameter ändern target
Öffnen Sie die datei chemistry.py .
Die target Parameter der Ressourcenschätzung finden Sie im Aufruf
qsharp.estimate
der chemistry.py-Datei. Der folgende Codeausschnitt zeigt die in diesem Tutorial verwendeten Parameter.# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.01, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Wenn Sie die Parameter ändern möchten, können Sie dies target tun, indem Sie den vorherigen Codeausschnitt ändern. Der folgende Codeausschnitt zeigt beispielsweise, wie das Fehlerbudget in 0,333 geändert wird. Weitere Informationen finden Sie unter Anpassen der target Parameter des Resource Estimators.
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Warum sind chemische Anwendungen des Quantencomputings wichtig?
Dieses Tutorial stellt einen ersten Schritt zur Integration der Ressourcenschätzung von Quantenlösungen in elektronische Strukturprobleme dar. Eine der wichtigsten Anwendungen von skalierten Quantencomputern ist die Lösung von Quantenchemieproblemen. Die Simulation komplexer quanten-mechanischer Systeme hat das Potenzial, Durchbrüche in Bereichen wie Kohlenstoffabscheidung, Ernährungsunsicherheit und entwicklung besserer Brennstoffe und Materialien zu erzielen.
Beispielsweise beschreibt eine der in diesem Beispiel bereitgestellten FCIDUMP-Dateien , nitrogenase_54orbital, das Enzym Nitrogenase. Wenn Sie genau simulieren könnten, wie dieses Enzym auf Quantenebene funktioniert, könnte es uns helfen, zu verstehen, wie es im großen Stil produziert werden kann. Sie könnten den hoch energieintensiven Prozess ersetzen, der verwendet wird, um genug Dünger zu produzieren, um den Planeten zu ernähren. Dies hat das Potenzial, den globalen CO2-Fußabdruck zu verringern und auch dazu beizutragen, Bedenken hinsichtlich der Ernährungsunsicherheit in einer wachsenden Bevölkerung auszuräumen.
Nächste Schritte
Wenn Sie Ihr Wissen vertiefen möchten, finden Sie hier einige Experimente, die Sie ausprobieren können:
- Schätzen Sie einige benutzerdefinierte FCIDUMP-Dateien.
- Ändern Sie die Annahmen auf dem target Quantencomputer, indem Sie benutzerdefinierte Qubitparameter bereitstellen.
- Sehen Sie sich die anderen Beispielnotizbücher für die Ressourcenschätzung im Azure Quantum-Beispielkatalog an.
Machen Sie sich im Anschluss mit anderen Quantenalgorithmen und -techniken vertraut:
- Das Tutorial Implementieren des Grover-Suchalgorithmus zeigt, wie sie ein Q#-Programm schreiben, das den Grover-Suchalgorithmus verwendet, um ein Problem mit der Graphfarbe zu lösen.
- Im Tutorial Schreiben und Simulieren von Programmen auf Qubitebene in Q# wird das Schreiben eines Q#-Programms untersucht, das direkt auf bestimmte Qubits anspricht.
- Das Tutorial Erkunden der Quantenverschränkung mit Q# zeigt, wie Sie mit Q# an Qubits arbeiten, um ihren Zustand zu ändern, und zeigt die Auswirkungen von Überlagerung und Verschränkung.
- Die Quanten katas sind Jupyter Notebook-basierte, selbstgesteuerte Tutorials und Programmierübungen, die darauf abzielen, die Elemente des Quantencomputings und der Q#-Programmierung gleichzeitig zu unterrichten.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für