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

W tym samouczku pokazano, jak oszacować zasoby fizyczne wymagane do obliczenia energii hamiltonian do dokładności chemicznej 1 mHa przy użyciu narzędzia do szacowania zasobów kwantowych platformy Azure.

Uwaga

Zestaw Microsoft Quantum Development Kit (klasyczny zestaw QDK) nie będzie już obsługiwany po 30 czerwca 2024 r. Jeśli jesteś istniejącym deweloperem zestawu QDK, zalecamy przejście do nowego zestawu Azure Quantum Development Kit (nowoczesnego zestawu QDK), aby kontynuować opracowywanie rozwiązań kwantowych. Aby uzyskać więcej informacji, zobacz Migrowanie kodu języka Q# do nowoczesnego zestawu QDK.

W tym samouczku wykonasz następujące czynności:

  • Sklonuj przykładowe repozytorium z usługi GitHub.
  • Użyj plików FCIDUMP jako parametrów argumentów dla zastosowań modelowania chemicznego i symulacji.
  • Uruchom szacowanie zasobów dla problemu na dużą skalę, który jest próbą chemii dwuskładnikowej.

Wymagania wstępne

Porada

Nie musisz mieć konta platformy Azure do uruchamiania lokalnego narzędzia 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 użytkownika dostarczonego Przez Hamiltonian do dokładności chemicznej 1 mHa.

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

Podejście kubityzacji opiera się na szacowaniu fazy kwantowej, ale zamiast konstruowania standardowego $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 dwuskładnikowania $H$ jest reprezentowany w sposób kompaktowy przez kombinację rozsądnego wyboru orbitalów i kompresji.

Ładowanie przykładu w Visual Studio Code

Kod tego samouczka można znaleźć w repozytorium przykładowym języka Q# 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 terminalu:

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

Wybieranie i przekazywanie pliku FCIDUMP

W tym przykładzie hamiltonian jest opisany pod względem jedno-i dwunakładników elektronowych 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 elektron, 56 orbitalnych aktywnych przestrzeni jednego ze stabilnych pośrednich w ruthenium-catalyzed cyklu utrwalonego węgla.
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54 elektron, 54 orbitalne aktywne miejsce aktywnego rdzenia azotu.
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 elektron, 24 orbitalne aktywne miejsce cząsteczki poliyny.
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10 elektronów, 8 orbitalnych aktywnych przestrzeni, z których dysocjował azot na 3 odległości Angstrom.

Aby przekazać plik FCIDUMP, należy uruchomić plik chemistry.py 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                      

Uruchamianie próbki chemicznej

  1. W Visual Studio Code otwórz folder, w którym sklonujesz przykładowe repozytorium języka Q#.

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

  3. Uruchom plik chemistry.py i przekaż plik FCIDUMP. Na przykład następujące polecenie pobierze plik FCIDUMP n2-10e-8o do folderu roboczego i uruchomi 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 pokazują szacowanie zasobów dla pliku FCIDUMP n2-10e-8o .

    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 w folderze roboczym zostanie utworzony plik resource_estimation.json . Plik resource_estimation.json zawiera szczegółowe dane wyjściowe narzędzia do szacowania zasobów. Są to 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. target Parametry szacowania zasobów można znaleźć w wywołaniu qsharp.estimate pliku chemistry.py. 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, możesz to zrobić, modyfikując 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?

W tym samouczku przedstawiono 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 mechanicznych kwantowych może odblokować przełomy w takich obszarach jak przechwytywanie dwutlenku węgla, bezpieczeństwo żywności i projektowanie lepszych paliw i materiałów.

Na przykład jeden z plików FCIDUMP podanych w tej próbie , nitrogenase_54orbital, opisuje enzym azotowy. Jeśli można dokładnie zasymulować działanie tego enzymu na poziomie kwantowym, może pomóc nam zrozumieć, jak produkować go na dużą skalę. Można zastąpić wysoce energooszczędny proces, który jest używany do produkcji wystarczającej ilości nawozów do karmienia planety. Ma to potencjał, aby zmniejszyć globalny ślad węglowy, a także pomóc rozwiązać obawy dotyczące bezpieczeństwa żywności w rosnącej populacji.

Następne kroki

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

  • Szacowanie niektórych niestandardowych plików FCIDUMP.
  • Zmodyfikuj target założenia na komputerze kwantowym, podając niestandardowe parametry kubitu.
  • Zapoznaj się z innymi przykładowymi notesami szacowania zasobów w galerii przykładów usługi Azure Quantum.

Kontynuuj eksplorowanie innych algorytmów kwantowych i technik: