Samouczek: szacowanie zasobów problemu z chemią kwantową
W tym samouczku oszacowasz 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.
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 próbą chemii dwuskładnikowej.
Wymagania wstępne
Środowisko języka Python z zainstalowanym językiem Python i programem .
Najnowsza wersja programu Visual Studio Code z zainstalowanym zestawem Azure Quantum Development Kit i rozszerzeniami języka Python .
Najnowszy pakiet
numpy
scipy
i pakiety usługi Azure Quantumqsharp
.python -m pip install --upgrade qsharp numpy scipy
Napiwek
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 Hamiltonian 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łkowitoliczników w udostępnionych plikach FCIDUMP (pełna interakcja konfiguracji), które są dostępne za pośrednictwem identyfikatora 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 dwuskładnikyzacji $H$ jest reprezentowany zwartie poprzez kombinację rozsądnego wyboru orbitalnych i kompresji.
Ładowanie przykładu w programie Visual Studio Code
Kod tego samouczka można znaleźć w repozytorium przykładów 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 poziomu 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 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.
Identyfikator 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 katalizowanym cyklu utrwalonego węgla. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 elektron, 54 orbitalne aktywne przestrzeń 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 przestrzeń 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 w odległości 3 Angstrom. |
Aby przekazać plik FCIDUMP, należy uruchomić plik chemistry.py i przekazać nazwę pliku FCIDUMP lub identyfikator URI jako argument przy użyciu -f
metody lub --fcidumpfile
.
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
Uruchamianie próbki chemicznej
W programie Visual Studio Code otwórz folder, w którym sklonujesz przykładowe repozytorium języka Q#.
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 języka Q# na komputerze lokalnym, ścieżka to
qsharp/samples/estimation/df-chemistry
.Uruchom plik chemistry.py i przekaż plik FCIDUMP. Na przykład następujące polecenie spowoduje pobranie pliku FCIDUMP n2-10e-8o do folderu roboczego i uruchomienie szacowania 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
Wynik szacowania zasobów jest wyświetlany w terminalu. Na przykład następujące dane wyjściowe przedstawiają 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 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. 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
Otwórz plik chemistry.py.
Parametry target 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"}})
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?
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, nitrogenase_54orbital, opisuje enzym 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ć:
- 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.
Powiązana zawartość
- 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.
- Quantum Kata to samouczki oparte na notesach Jupyter Notebook i ćwiczenia programistyczne przeznaczone do nauczania elementów obliczeń kwantowych i programowania w tym samym czasie.