Udostępnij przez


Samouczek: szacowanie zasobów problemu z chemią kwantową

W tym samouczku oszacujesz zasoby fizyczne wymagane do obliczenia energii hamiltonianu do dokładności chemicznej o wartości 1 mHa przy użyciu Azure Quantum Resource Estimator.

Ten samouczek obejmuje następujące kroki:

  • Sklonuj przykładowe repozytorium z usługi GitHub.
  • Użyj plików FCIDUMP jako parametrów argumentów do modelowania chemicznego i aplikacji symulacji.
  • Uruchom szacowanie zasobów dla problemu na dużą skalę, który jest przykładem chemii z podwójną faktoryzacją.

Wymagania wstępne

Napiwek

Nie musisz mieć konta platformy Azure, aby uruchomić narzędzie do szacowania zasobów.

Opisz problem

W tym samouczku ocenisz oszacowania zasobów fizycznych algorytmu kubityzacji opisanego w Phys. Rev. Research 3, 033055 (2021) w celu obliczenia energii Hamiltonianu dostarczonego przez użytkownika do dokładności chemicznej 1 mHa.

Algorytm kwantowy, który oblicza energię hamiltonianu, opiera się na dwuskładnikowej kubityzacji. Hamiltonian jest opisany pod względem jedno- i dwu-elektronowych całek w udostępnionych plikach FCIDUMP (pełna interakcja konfiguracji), które są dostępne za pośrednictwem URI HTTPS.

Podejście kubityzacji opiera się na szacowaniu fazy kwantowej, ale zamiast konstruowania standardu $U = \exp{(-i H/\alpha)}$ z macierzy Hamiltonian $H$, jeden przyjmuje $U = \exp{(-i \sin^{-1} (H/\alpha))}$, który zazwyczaj można zaimplementować przy mniejszej liczbie zasobów. Przy użyciu podwójnej faktoryzacji, $H$ jest reprezentowany zwarto za pomocą kombinacji rozsądnego wyboru orbitali i kompresji.

Ładowanie przykładu w programie Visual Studio Code

Kod tego samouczka można znaleźć w przykładowym repozytorium QDK, w obszarze szacowania/df-chemistry. Zalecamy sklonowanie repozytorium na komputerze lokalnym w celu uruchomienia przykładu.

Aby sklonować repozytorium, uruchom następujące polecenie z poziomu terminalu:

git clone https://github.com/microsoft/qdk.git

Wybierz i przekaż plik FCIDUMP

W tym przykładzie Hamiltonian jest opisany pod względem jedno-i dwu elektronowych całkowitoliczników w formacie FCIDUMP. Możesz wybrać jeden z plików FCIDUMP z poniższej tabeli lub wybrać własny plik FCIDUMP dostępny na maszynie lub w trybie online za pośrednictwem publicznie dostępnego identyfikatora URI HTTPS.

URI Nazwa wystąpienia opis
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o XVIII-cas4-fb-64e56o 64 elektrony, 56 aktywnych przestrzeni orbitalnych jednego ze stabilnych pośrednich w rutenowokatalizowanym cyklu utrwalania węgla.
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54 elektrony, 54 orbitalna przestrzeń aktywna rdzenia nitrogenazy.
https://aka.ms/fcidump/fe2s2-10e-40o fe2s2-10e-40o 10 elektronów, 40 orbitalnych aktywnych przestrzeni [2Fe, 2S] klastra.
https://aka.ms/fcidump/polyyne-24e-24o poliyne-24e-24o 24 elektrony, 24 orbitalna aktywna przestrzeń cząsteczki poliyny.
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10 elektronów, 8 orbitali aktywnej przestrzeni przy zdysocjowanym azocie w odległości 3 angstromów.

Aby przekazać plik FCIDUMP, należy uruchomić chemistry.py plik i przekazać nazwę pliku FCIDUMP lub identyfikator URI jako argument przy użyciu metody -f lub --fcidumpfile.

usage: chemistry.py [-h] [-f FCIDUMPFILE]

options:
  -h, --help           
  -f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE                      

Uruchom próbkę chemiczną

  1. W programie Visual Studio Code otwórz folder, w którym sklonujesz przykładowe repozytorium zestawu QDK.

  2. Otwórz nowy terminal, Terminal —> nowy terminal i przejdź do katalogu, w którym znajduje się przykład chemii kwantowej. Jeśli na przykład sklonujesz przykładowe repozytorium zestawu QDK na komputerze lokalnym, ścieżka to qdk/samples/estimation/df-chemistry.

  3. Uruchom plik chemistry.py i przekaż plik FCIDUMP. Na przykład następujące polecenie pobiera plik n2-10e-8o FCIDUMP do folderu roboczego i uruchamia szacowanie zasobów.

    python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
    

    Następnie możesz przekazać ścieżkę do pobranego pliku do skryptu.

    python chemistry.py -f n2-10e-8o
    
  4. Wynik szacowania zasobów jest wyświetlany w terminalu. Na przykład następujące dane wyjściowe przedstawiają szacowanie zasobów dla n2-10e-8o pliku FCIDUMP.

    Algorithm runtime: 19 mins
    Number of physical qubits required: 207.60k
    For more detailed resource counts, see file resource_estimate.json
    

Uwaga

Po uruchomieniu pliku chemistry.py, plik resource_estimation.json zostanie utworzony w folderze roboczym. Plik resource_estimation.json zawiera szczegółowe dane wyjściowe narzędzia do szacowania zasobów, takie jak parametry zadania, liczby fizyczne, właściwości fabryki T, liczby logiczne i właściwości kubitu logicznego.

Zmienianie target parametrów

  1. Otwórz plik chemistry.py.

  2. Parametry target szacowania zasobów można znaleźć w wywołaniu qsharp.estimatechemistry.py pliku. Poniższy fragment kodu przedstawia parametry używane w tym samouczku.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.01,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    
  3. Jeśli chcesz zmienić target parametry, zmodyfikuj poprzedni fragment kodu. Na przykład poniższy fragment kodu pokazuje, jak zmienić budżet błędu na 0,333. Aby uzyskać więcej informacji, zobacz Dostosowywanie target parametrów narzędzia do szacowania zasobów.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.333,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    

Dlaczego zastosowania chemiczne obliczeń kwantowych są ważne

Ten samouczek stanowi pierwszy krok umożliwiający zintegrowanie szacowania zasobów rozwiązań kwantowych z problemami ze strukturą elektroniczną. Jednym z najważniejszych zastosowań skalowanych komputerów kwantowych jest rozwiązywanie problemów z chemią kwantową. Symulacja złożonych systemów kwantowych ma potencjał do odblokowania przełomów w takich obszarach, jak przechwytywanie dwutlenku węgla, brak bezpieczeństwa żywności i projektowanie lepszych paliw i materiałów.

Na przykład jeden z plików FCIDUMP podanych w tej próbce opisuje nitrogenase_54orbitalenzym azotazowy. Jeśli można dokładnie zasymulować działanie tego enzymu na poziomie kwantowym, może to pomóc nam zrozumieć, jak je produkować na dużą skalę. Można zastąpić wysoce energochłonny proces, który jest używany do produkcji wystarczającej ilości nawozu do karmienia planety. Ma to potencjał, aby zmniejszyć globalny ślad węglowy, a także pomóc w rozwiązaniu problemów związanych z brakiem bezpieczeństwa żywnościowego w rosnącej populacji.

Jeśli chcesz pogłębić swoją wiedzę, oto kilka eksperymentów, które możesz wypróbować:

  • Oszacuj niektóre niestandardowe pliki FCIDUMP.
  • Zmodyfikuj target założenia na komputerze kwantowym, podając niestandardowe parametry kubitu.
  • Samouczek Implementowanie algorytmu wyszukiwania Grovera pokazuje, jak napisać program języka Q#, który używa algorytmu wyszukiwania Grovera do rozwiązania problemu z kolorowaniem grafu.
  • Samouczek Pisanie i symulowanie programów na poziomie kubitów w języku Q# zawiera informacje na temat pisania programu w języku Q#, który bezpośrednio odpowiada konkretnym kubitom.
  • W samouczku Eksplorowanie splątania kwantowego w języku Q# pokazano, jak wykonywać operacje na kubitach za pomocą języka Q# w celu zmiany ich stanu oraz demonstrować skutki superpozycji i splątania.
  • Kata kwantowe to samouczki oparte na Jupyter Notebook oraz ćwiczenia programistyczne przeznaczone do nauczania elementów obliczeń kwantowych i programowania w Q# jednocześnie.