Freigeben über


Lernprogramm: Schätzen der Ressourcen eines Quantenchemieproblems

In diesem Lernprogramm wird gezeigt, wie Sie mithilfe der Azure Quantum Resource Estimator die zum Berechnen der Energie eines Hamiltonian benötigten physischen Ressourcen auf chemische Genauigkeit von 1 mHa schätzen.

Hinweis

Das Microsoft Quantum Development Kit (Classic QDK) wird nach dem 30. Juni 2024 nicht mehr unterstützt. Wenn Sie ein vorhandener QDK-Entwickler sind, empfehlen wir Ihnen, zum neuen Azure Quantum Development Kit (Modern QDK) zu wechseln, um die Entwicklung von Quantenlösungen fortzusetzen. Weitere Informationen finden Sie unter Migrieren ihres Q#-Codes zum modernen QDK.

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

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

  1. Öffnen Sie in Visual Studio Code den Ordner, in dem Sie das Q#-Beispiel-Repository geklont haben.

  2. Ö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-chemistryder Pfad .

  3. 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
    
  4. 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

  1. Öffnen Sie die datei chemistry.py .

  2. 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"}})
    
  3. 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.

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 Qubit-Parameter bereitstellen.
  • Sehen Sie sich die anderen Beispielnotizbücher zur Ressourcenschätzung im Azure Quantum-Beispielkatalog an.

Machen Sie sich im Anschluss mit anderen Quantenalgorithmen und -techniken vertraut: