Zelfstudie: De resources van een kwantumchemieprobleem schatten
Deze zelfstudie laat zien hoe u de fysieke resources kunt schatten die nodig zijn om de energie van een hamiltoniaan te berekenen tot een chemische nauwkeurigheid van 1 mHa met behulp van de Azure Quantum Resource Estimator.
Notitie
De Microsoft Quantum Development Kit (klassieke QDK) wordt na 30 juni 2024 niet meer ondersteund. Als u een bestaande QDK-ontwikkelaar bent, raden we u aan over te stappen op de nieuwe Azure Quantum Development Kit (Moderne QDK) om door te gaan met het ontwikkelen van kwantumoplossingen. Zie Uw Q#-code migreren naar de moderne QDK voor meer informatie.
In deze zelfstudie leert u het volgende:
- Kloon een voorbeeldopslagplaats vanuit GitHub.
- Gebruik FCIDUMP-bestanden als argumentparameters voor chemische modellering en simulatietoepassingen.
- Voer een resourceschatting uit voor een grootschalig probleem. Dit is een dubbelgefactoriseerde chemiesteekproef.
Vereisten
Een Python-omgeving met Python en Pip geïnstalleerd.
De nieuwste versie van Visual Studio Code met de Azure Quantum Development Kit en Python-extensies geïnstalleerd.
Het meest recente Azure Quantum-pakket
qsharp
ennumpy
en-pakkettenscipy
.python -m pip install --upgrade qsharp numpy scipy
Tip
U hoeft geen Azure-account te hebben om de lokale resource-estimator uit te voeren.
Het probleem beschrijven
In deze zelfstudie evalueert u de schattingen van fysieke resources van het qubitisatiealgoritme dat wordt beschreven in Phys. Rev. Research 3, 033055 (2021) om de energie te berekenen van een gebruiker die hamiltoniaan heeft verstrekt tot een chemische nauwkeurigheid van 1 mHa.
Het kwantumalgoritmen waarmee de energie van de Hamiltoniaan wordt berekend, zijn gebaseerd op dubbelgefactoriseerde qubitisatie. De Hamiltoniaan wordt beschreven in termen van een- en twee-elektronen integralen in opgegeven FCIDUMP-bestanden (volledige configuratie-interactie) die beschikbaar zijn via een HTTPS-URI.
De qubitiseringsbenadering is gebaseerd op een schatting van de kwantumfase, maar in plaats van de standaard $U = \exp{(-i H/\alpha)}$ te maken van de Hamiltoniaanse matrix $H$, wordt $U = \exp{(-i \sin^{-1} (H/\alpha))}$ gebruikt, wat doorgaans met minder resources kan worden geïmplementeerd. Met behulp van dubbele factorisatie wordt $H$ compact weergegeven door een combinatie van een verstandige keuze van orbitalen en compressie.
Het voorbeeld laden in Visual Studio Code
De code voor deze zelfstudie vindt u in de Q#-voorbeeldopslagplaats, onder schatting/df-chemie. U wordt aangeraden de opslagplaats op uw lokale computer te klonen om het voorbeeld uit te voeren.
Als u de opslagplaats wilt klonen, voert u de volgende opdracht uit vanuit uw terminal:
git clone https://github.com/microsoft/qsharp.git
Een FCIDUMP-bestand selecteren en doorgeven
In dit voorbeeld wordt de Hamiltoniaan beschreven in termen van een- en twee-elektronen integralen in de FCIDUMP-indeling. U kunt een van de FCIDUMP-bestanden in de volgende tabel kiezen of uw eigen FCIDUMP-bestand selecteren dat beschikbaar is op uw computer of online via een openbaar toegankelijke HTTPS-URI.
URI | Exemplaarnaam | Description |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64 elektron, 56 orbitale actieve ruimte van een van de stabiele tussenproducten in de ruthenium-gekatalyseerde koolstoffixatiecyclus. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 elektron, 54 orbitale actieve ruimte van de actieve kern van de stikstofase. |
https://aka.ms/fcidump/fe2s2-10e-40o | fe2s2-10e-40o | 10 elektron, 40 orbitale actieve ruimte van [2Fe, 2S] cluster. |
https://aka.ms/fcidump/polyyne-24e-24o | polyyne-24e-24o | 24 elektron, 24 orbitale actieve ruimte van het polyyne molecuul. |
https://aka.ms/fcidump/n2-10e-8o | n2-10e-8o | 10 elektron, 8 orbitale actieve ruimte van hij dissocieerde stikstof op 3 Angstrom afstand. |
Als u het FCIDUMP-bestand wilt doorgeven, moet u het chemistry.py-bestand uitvoeren en de FCIDUMP-bestandsnaam of URI als argument doorgeven met behulp van -f
of --fcidumpfile
.
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
Het chemievoorbeeld uitvoeren
Open in Visual Studio Code de map waarin u de Q#-voorbeeldopslagplaats hebt gekloond.
Open een nieuwe terminal, Terminal -> Nieuwe terminal, en navigeer naar de map waarin het kwantumchemievoorbeeld zich bevindt. Als u bijvoorbeeld de Q#-voorbeeldopslagplaats op uw lokale computer kloont, is
qsharp/samples/estimation/df-chemistry
het pad .Voer het chemistry.py-bestand uit en geef het bestand FCIDUMP door . Met de volgende opdracht downloadt u bijvoorbeeld het FCIDUMP-bestand n2-10e-8o naar de werkmap en voert u de resourceschatting hiervoor uit.
python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
Daarna kunt u het pad naar het gedownloade bestand doorgeven aan het script.
python chemistry.py -f n2-10e-8o
Het resultaat van de resourceschatting wordt weergegeven in de terminal. De volgende uitvoer toont bijvoorbeeld de resourceschatting voor het bestand 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
Notitie
Nadat het chemistry.py-bestand is uitgevoerd, wordt er een resource_estimation.json-bestand gemaakt in de werkmap. Het resource_estimation.json-bestand bevat de gedetailleerde uitvoer van de resource-estimator. Dit zijn de taakparameters, fysieke aantallen, T factory-eigenschappen, logische aantallen en logische qubit-eigenschappen.
Parameters wijzigen target
Open het chemistry.py-bestand .
De target parameters van de resourceschatting vindt u in de aanroep van
qsharp.estimate
het chemistry.py-bestand. In het volgende codefragment ziet u de parameters die in deze zelfstudie worden gebruikt.# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.01, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Als u de target parameters wilt wijzigen, kunt u dit doen door het vorige codefragment te wijzigen. Het volgende codefragment laat bijvoorbeeld zien hoe u het foutbudget wijzigt in 0,333. Zie De parameters van de target Resource Estimator aanpassen voor meer informatie.
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Waarom zijn chemische toepassingen van kwantumcomputing belangrijk?
Deze zelfstudie is een eerste stap voor het integreren van resourceschatting van kwantumoplossingen voor problemen met elektronische structuur. Een van de belangrijkste toepassingen van geschaalde kwantumcomputers is het oplossen van problemen met kwantumchemie. De simulatie van complexe kwantummechanische systemen heeft de potentie om doorbraken te ontsluiten op gebieden zoals koolstofopname, voedselonzekerheid en het ontwerpen van betere brandstoffen en materialen.
Een van de FCIDUMP-bestanden in dit voorbeeld, nitrogenase_54orbital, beschrijft bijvoorbeeld het enzym nitrogenase. Als u nauwkeurig kunt simuleren hoe dit enzym werkt op kwantumniveau, kan het ons helpen om te begrijpen hoe het op schaal moet worden geproduceerd. U kunt het zeer energie-intensieve proces vervangen dat wordt gebruikt om voldoende kunstmest te produceren om de planeet te voeden. Dit heeft het potentieel om de wereldwijde koolstofvoetafdruk te verminderen en ook om problemen met betrekking tot voedselonzekerheid in een groeiende bevolking aan te pakken.
Volgende stappen
Als u uw kennis wilt verdiepen, zijn hier enkele experimenten die u kunt proberen:
- Maak een schatting van een aantal aangepaste FCIDUMP-bestanden.
- Wijzig de veronderstellingen op de target kwantumcomputer door aangepaste qubitparameters op te geven.
- Bekijk de andere voorbeeldnotebooks voor resourceschattingen in de Azure Quantum-voorbeeldgalerie.
Ga verder met het verkennen van andere kwantumalgoritmen en -technieken:
- De zelfstudie Implement Grover's search algorithm laat zien hoe u een Q#-programma schrijft dat gebruikmaakt van het zoekalgoritme van Grover om een probleem met het kleuren van grafieken op te lossen.
- In de zelfstudie Programma's op qubitniveau schrijven en simuleren in Q# wordt uitgelegd hoe u een Q#-programma schrijft dat rechtstreeks gericht is op specifieke qubits.
- De zelfstudie Kwantumverstrengeling verkennen met Q# laat zien hoe u met Q# op qubits kunt werken om hun status te wijzigen, en toont de effecten van superpositie en verstrengeling.
- De Quantum Katas zijn Jupyter Notebook zelfstudies in eigen tempo en programmeeroefeningen die zijn gericht op het tegelijkertijd onderwijzen van de elementen van kwantumcomputing en Q#-programmeren.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor