Självstudie: Beräkna resurserna för ett kvantkemiproblem

I den här självstudien beräknar du de fysiska resurser som krävs för att beräkna energin hos en hamiltonsk till kemisk noggrannhet på 1 mHa med hjälp av Azure Quantum Resource Estimator.

I den här självstudien kommer vi att:

  • Klona en exempellagringsplats från GitHub.
  • Använd FCIDUMP-filer som argumentparametrar för kemiska modellerings- och simuleringsprogram.
  • Kör resursuppskattning för ett storskaligt problem, som är ett dubbelfaktoriserat kemiexempel.

Förutsättningar

Dricks

Du behöver inte ha något Azure-konto för att köra den lokala resursberäknaren.

Beskriv problemet

I den här självstudien utvärderar du de fysiska resursuppskattningarna för kvantbiteringsalgoritmen som beskrivs i Phys. Rev. Research 3, 033055 (2021) för att beräkna energin hos en användare som tillhandahålls Hamiltonian till kemisk noggrannhet på 1 mHa.

Kvantalgoritmen som beräknar hamiltonskans energi baseras på dubbelfaktoriserad kvantbitisering. Hamiltonianen beskrivs i termer av en- och tvåelektronintegreringar i tillhandahållna FCIDUMP-filer (fullständig konfigurationsinteraktion) som är tillgängliga via en HTTPS-URI.

Kvantbiteringsmetoden baseras på kvantfasuppskattning, men i stället för att konstruera standardmetoden $U = \exp{(-i H/\alpha)}$ från den hamiltonska matrisen $H$, tar man $U = \exp{(-i \sin^{-1} (H/\alpha))}$, som vanligtvis kan implementeras med färre resurser. Med dubbel factorisering representeras $H$ kompakt genom en kombination av ett omdömesgillt val av omloppsbanor och komprimering.

Läs in exemplet i Visual Studio Code

Koden för den här självstudien finns i Q#-exempellagringsplatsen under uppskattning/df-kemi. Vi rekommenderar att du klonar lagringsplatsen på den lokala datorn för att köra exemplet.

Om du vill klona lagringsplatsen kör du följande kommando från terminalen:

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

Välj och skicka en FCIDUMP-fil

I det här exemplet beskrivs hamiltonska i termer av en- och tvåelektronintegraler i FCIDUMP-format. Du kan välja en av FCIDUMP-filerna från följande tabell eller välja en egen FCIDUMP-fil som är tillgänglig på datorn eller online via en offentligt tillgänglig HTTPS-URI.

URI Instansnamn beskrivning
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o XVIII-cas4-fb-64e56o 64 elektron, 56 orbital aktivt utrymme av en av de stabila mellanliggande i ruthenium-katalyserad kol fixering cykel.
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54 elektron, 54 orbital aktivt utrymme av den aktiva kärnan i kväveas.
https://aka.ms/fcidump/fe2s2-10e-40o fe2s2-10e-40o 10 elektron, 40 omloppsbanor aktivt utrymme [ 2Fe, 2S] kluster.
https://aka.ms/fcidump/polyyne-24e-24o polyyne-24e-24o 24 elektron, 24 orbital aktivt utrymme av polyynemolekylen.
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10 elektron, 8 orbital aktiv utrymme av han dissociated kväve på 3 Angstrom avstånd.

För att skicka FCIDUMP-filen måste du köra chemistry.py-filen och skicka FCIDUMP-filnamnet eller URI:n som ett argument med hjälp av antingen -f eller --fcidumpfile.

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

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

Kör kemiprovet

  1. Öppna mappen där du klonade Q#-exempellagringsplatsen i Visual Studio Code.

  2. Öppna en ny terminal, Terminal –> Ny terminal, och navigera till katalogen där kvantkemiexemplet finns. Om du till exempel klonar Q#-exempellagringsplatsen på den lokala datorn är qsharp/samples/estimation/df-chemistrysökvägen .

  3. Kör filen chemistry.py och skicka FCIDUMP-filen. Följande kommando laddar till exempel ned FCIDUMP-filen n2-10e-8o till arbetsmappen och kör resursuppskattning för den.

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

    Därefter kan du skicka sökvägen till den nedladdade filen till skriptet i stället.

    python chemistry.py -f n2-10e-8o
    
  4. Resultatet av resursuppskattningen visas i terminalen. Följande utdata visar till exempel resursuppskattningen för filen 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
    

Kommentar

När chemistry.py-filen har körts skapas en resource_estimation.json fil i arbetsmappen. Filen resource_estimation.json innehåller detaljerade utdata från Resource Estimator. Det här är jobbparametrar, fysiska antal, T-fabriksegenskaper, logiska antal och logiska qubit-egenskaper.

Ändra target parametrar

  1. Öppna filen chemistry.py .

  2. Parametrarna target för resursuppskattningen finns i anropet till qsharp.estimate den chemistry.py filen. Följande kodfragment visar de parametrar som används i den här självstudien.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.01,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    
  3. Om du vill ändra parametrarna target kan du göra det genom att ändra det tidigare kodfragmentet. Följande kodfragment visar till exempel hur du ändrar felbudgeten till 0,333. Mer information finns i Anpassa parametrarna target för resursberäknaren.

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

Varför är kemiprogram inom kvantberäkning viktiga?

Den här självstudien representerar ett första steg för att integrera resursuppskattning av kvantlösningar till elektroniska strukturproblem. En av de viktigaste programmen för skalbara kvantdatorer är att lösa kvantkemiproblem. Simuleringen av komplexa kvantmekaniska system har potential att frigöra genombrott inom områden som avskiljning av koldioxid, osäker livsmedelsförsörjning och utformning av bättre bränslen och material.

Till exempel beskriver en av FCIDUMP-filerna i det här exemplet, nitrogenase_54orbital, kväveasenzymet. Om du kan simulera hur det här enzymet fungerar på kvantnivå kan det hjälpa oss att förstå hur det kan skapas i stor skala. Du kan ersätta den mycket energiintensiva process som används för att producera tillräckligt med gödningsmedel för att mata planeten. Detta har potential att minska det globala koldioxidavtrycket och även bidra till att ta itu med oron för livsmedelsosäkerhet i en växande befolkning.

Om du vill fördjupa dina kunskaper kan du prova följande experiment:

  • Uppskatta vissa anpassade FCIDUMP-filer.
  • Ändra antagandena på target kvantdatorn genom att tillhandahålla anpassade qubitparametrar.
  • Kolla in de andra exempelanteckningsböckerna för resursuppskattning i Azure Quantum-exempelgalleriet.
  • Självstudien Implementera Grover-sökalgoritmen visar hur du skriver ett Q#-program som använder Grover-sökalgoritmen för att lösa ett diagramfärgningsproblem.
  • Självstudien Skriva och simulera qubit-nivåprogram i Q# utforskar hur du skriver ett Q#-program som direkt adresserar specifika kvantbitar.
  • Självstudien Utforska kvantsammanflätning med Q# visar hur du arbetar med kvantbitar med Q# för att ändra deras tillstånd och visar effekterna av superposition och sammanflätning.
  • Quantum Katas är Jupyter Notebook-baserade självstudier i egen takt och programmeringsövningar som syftar till att lära ut elementen i kvantberäkning och Q#-programmering samtidigt.