Lernprogramm: Schätzen der Ressourcen eines Quantenchemieproblems
In diesem Lernprogramm schätzen Sie die physikalischen Ressourcen, die zum Berechnen der Energie eines Hamiltonian zur chemischen Genauigkeit von 1 mHa mit dem Azure Quantum Resource Estimator erforderlich sind.
In diesem Tutorial wird Folgendes vermittelt:
- Klonen Sie ein Beispiel-Repository von GitHub.
- Verwenden Sie FCIDUMP-Dateien als Argumentparameter für chemische Modellierungs- und Simulationsanwendungen.
- Führen Sie die Ressourcenschätzung für ein großes Problem aus, bei dem es sich um eine doppelstufige Chemieprobe handelt.
Voraussetzungen
Eine Python-Umgebung mit installiertem Python und Pip.
Die neueste Version von Visual Studio Code mit den installierten Azure Quantum Development Kit- und Python-Erweiterungen .
Das neueste Azure Quantum-Paket
qsharp
undnumpy
-scipy
Pakete.python -m pip install --upgrade qsharp numpy scipy
Tipp
Sie müssen nicht über ein Azure-Konto verfügen, um den lokalen Ressourcen-Estimator auszuführen.
Beschreiben Sie das Problem
In diesem Lernprogramm bewerten Sie die physikalischen Ressourcenschätzungen des in Phys. Rev. Research 3, 033055 (2021) beschriebenen physikalischen Ressourcenschätzungen des Qubitisierungsalgorithmus, der für die chemische Genauigkeit von 1 mHa bereitgestellt wurde.
Der Quantenalgorithmus, der die Energie des Hamiltonischen berechnet, basiert auf der doppelstufigen Qubitisierung. Der Hamiltonian 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 Qubitization-Ansatz basiert auf der Quantenphasenschätzung, aber anstatt den Standard $U = \exp{(-i H/\alpha)}$ aus der Hamiltonischen Matrix $H$, benötigt man $U = \exp{(-i \sin^{-1} (H/\alpha))}$, die normalerweise mit weniger Ressourcen implementiert werden kann. Mithilfe der Doppelfaktorisierung wird $H$ kompakt durch eine Kombination aus einer sorgfältigen Auswahl von Orbitalen und Komprimierung dargestellt.
Laden des Beispiels in Visual Studio Code
Der Code für dieses Lernprogramm finden Sie im Q#-Beispiel-Repository unter Schätz-/Df-Chemie. Es wird empfohlen, das Repository auf Ihrem lokalen Computer zu klonen, um das Beispiel auszuführen.
Führen Sie zum Klonen des Repositorys den folgenden Befehl aus Ihrem Terminal aus:
git clone https://github.com/microsoft/qsharp.git
Auswählen und Übergeben einer FCIDUMP-Datei
In diesem Beispiel wird der Hamiltonian in Bezug auf Ein- und Zwei-Elektronen-Integrale 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 orbitales aktives Raum eines der stabilen Zwischenstufen im Ruthenium-katalysierten Kohlenstoff-Fixierungszyklus. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 Elektronen, 54 orbitales aktives Raum des aktiven Kerns der Stickstoffase. |
https://aka.ms/fcidump/fe2s2-10e-40o | fe2s2-10e-40o | 10 Elektronen, 40 orbital aktiver Raum des [2Fe, 2S]-Clusters. |
https://aka.ms/fcidump/polyyne-24e-24o | polyyne-24e-24o | 24 Elektronen, 24 orbitales aktives Raum des Polyyne-Moleküls. |
https://aka.ms/fcidump/n2-10e-8o | n2-10e-8o | 10 Elektronen, 8 orbitales aktives Raum von ihm dissoziierte Stickstoff bei 3 Angstrom Entfernung. |
Um die FCIDUMP-Datei zu übergeben, müssen Sie die chemistry.py Datei ausführen und den FCIDUMP-Dateinamen oder -URI als Argument übergeben, das entweder -f
oder --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#-Beispiel-Repository geklont haben.
Öffnen Sie ein neues Terminal, Terminal -> Neues Terminal, und navigieren Sie zu dem Verzeichnis, in dem sich die Quantenchemie-Probe befindet. Wenn Sie beispielsweise das Q#-Beispiel-Repository 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 Datei n2-10e-8o FCIDUMP.
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 im Arbeitsordner eine resource_estimation.json Datei erstellt. Die resource_estimation.json Datei enthält die detaillierte Ausgabe des Ressourcen-Estimators. Dies sind die Auftragsparameter, physische Anzahlen, T-Factoryeigenschaften, logische Zählungen und logische Qubit-Eigenschaften.
Ändern von target Parametern
Ö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 Lernprogramm 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 target Parameter ändern möchten, können Sie dies 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 Ressourcenstimators.
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Warum Chemieanwendungen von Quantencomputing sind wichtig?
Dieses Lernprogramm stellt einen ersten Schritt dar, um die Ressourcenschätzung von Quantenlösungen in elektronische Strukturprobleme zu integrieren. Einer der wichtigsten Anwendungen skalierter Quantencomputer ist die Lösung von Quantenchemieproblemen. Die Simulation komplexer quantenmechanischer Systeme hat das Potenzial, Durchbrüche in Bereichen wie Kohlenstoffabscheidung, Lebensmittelunsicherheit und Entwicklung besserer Brennstoffe und Materialien zu entsperren.
Beispielsweise beschreibt eine der FCIDUMP-Dateien in dieser Stichprobe, nitrogenase_54orbital, das Stickstoffaseenzym. Wenn Sie genau simulieren könnten, wie dieses Enzym auf Quantenebene funktioniert, könnte es uns helfen, zu verstehen, wie es im Maßstab produziert wird. Sie könnten den hoch energieintensiven Prozess ersetzen, der verwendet wird, um genug Düngemittel zu produzieren, um den Planeten zu füttern. Dies hat das Potenzial, den globalen Co2-Fußabdruck zu reduzieren und auch die Bedenken hinsichtlich der Ernährungsunsicherheit in einer wachsenden Bevölkerung zu beheben.
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 Qubit-Parameter bereitstellen.
- Sehen Sie sich die anderen Beispielnotizbücher zur Ressourcenschätzung im Azure Quantum-Beispielkatalog an.
Zugehöriger Inhalt
- Das Lernprogramm Implement Grovers Suchalgorithmus zeigt, wie Sie ein Q#-Programm schreiben, das den Suchalgorithmus von Grover verwendet, um ein Diagrammfarbproblem zu lösen.
- Das Lernprogramm "Schreiben und Simulieren von Qubit-Level-Programmen in Q# " untersucht, wie Sie ein Q#-Programm schreiben, das bestimmte Qubits direkt adressiert.
- Das Lernprogramm "Erkunden der Quantenanglementierung mit Q#" zeigt, wie Sie mit Q# auf Qubits arbeiten, um ihren Zustand zu ändern, und zeigt die Auswirkungen von Superposition und Veranglement.
- Die Quantum Katas sind Jupyter Notebook-basierte, selbstgesteuerte Lernprogramme und Programmierübungen, die darauf abzielen, die Elemente der Quantencomputing- und Q#-Programmierung gleichzeitig zu unterrichten.