Condividi tramite


Esercitazione: Stimare le risorse di un problema di chimica quantistica

Questa esercitazione illustra come stimare le risorse fisiche necessarie per calcolare l'energia di un hamiltoniano per l'accuratezza chimica di 1 mHa usando Azure Quantum Resource Estimator.

Nota

Microsoft Quantum Development Kit (QDK classico) non sarà più supportato dopo il 30 giugno 2024. Se si è uno sviluppatore QDK esistente, è consigliabile passare al nuovo Azure Quantum Development Kit (Modern QDK) per continuare a sviluppare soluzioni quantistiche. Per altre informazioni, vedere Eseguire la migrazione del codice Q# al QDK moderno.

Questa esercitazione illustra come:

  • Clonare un repository di esempio da GitHub.
  • Usare i file FCIDUMP come parametri di argomento per le applicazioni di modellazione e simulazione chimiche.
  • Eseguire la stima delle risorse per un problema su larga scala, ovvero un campione di chimica a doppio fattori.

Prerequisiti

Suggerimento

Non è necessario disporre di un account Azure per eseguire lo strumento di stima delle risorse locale.

Descrivere il problema

In questa esercitazione si valutano le stime delle risorse fisiche dell'algoritmo di qubitizzazione descritto in Phys. Rev. Research 3, 033055 (2021) per calcolare l'energia di un utente fornito da Hamiltoniano per l'accuratezza chimica di 1 mHa.

L'algoritmo quantistico che calcola l'energia dell'hamiltoniano si basa sulla qubitizzazione a doppio fattorizzazione. Il hamiltoniano è descritto in termini di integrali a uno e due elettroni nei file FCIDUMP (interazione di configurazione completa) disponibili tramite un URI HTTPS.

L'approccio di qubitizzazione si basa sulla stima della fase quantistica, ma invece di costruire lo standard $U = \exp{(-i H/\alpha)}$ dalla matrice hamiltoniana $H$, una accetta $U = \exp{(-i \sin^{-1} (H/\alpha))}$, che in genere può essere implementata con meno risorse. Utilizzando la doppia fattorizzazione, $H$ è rappresentato in modo compatto tramite una combinazione di una scelta succosa di orbitali e compressione.

Caricare l'esempio in Visual Studio Code

Il codice per questa esercitazione è disponibile nel repository di esempio Q#, in stima/chimica df. È consigliabile clonare il repository nel computer locale per eseguire l'esempio.

Per clonare il repository, eseguire il comando seguente dal terminale:

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

Selezionare e passare un file FCIDUMP

In questo esempio, l'hamiltoniano è descritto in termini di integrali uno e due elettroni nel formato FCIDUMP. È possibile scegliere uno dei file FCIDUMP nella tabella seguente oppure selezionare il proprio file FCIDUMP disponibile nel computer o online tramite un URI HTTPS accessibile pubblicamente.

URI Nome istanza Descrizione
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o XVIII-cas4-fb-64e56o 64 elettroni, 56 spazio attivo orbitale di uno degli intermedi stabili nel ciclo di correzione del carbonio catalizzare spienio.
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54 elettroni, 54 spazio attivo orbitale del nucleo attivo dell'azoto.
https://aka.ms/fcidump/fe2s2-10e-40o fe2s2-10e-40o 10 elettroni, 40 spazio attivo orbitale del cluster [2Fe, 2S].
https://aka.ms/fcidump/polyyne-24e-24o polyyne-24e-24o 24 elettroni, 24 spazio attivo orbitale della molecola poliyne.
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10 elettroni, 8 spazio attivo orbitale di ha dissociato l'azoto a 3 distanza Angstrom.

Per passare il file FCIDUMP, è necessario eseguire il file chemistry.py e passare il nome file FCIDUMP o l'URI come argomento usando -f o --fcidumpfile.

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

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

Eseguire il campione di chimica

  1. In Visual Studio Code aprire la cartella in cui è stato clonato il repository di esempio Q#.

  2. Aprire un nuovo terminale, Terminale -> Nuovo terminale e passare alla directory in cui si trova l'esempio di chimica quantistica. Ad esempio, se si clona il repository di esempio Q# nel computer locale, il percorso è qsharp/samples/estimation/df-chemistry.

  3. Eseguire il file chemistry.py e passare il file FCIDUMP. Ad esempio, il comando seguente scaricherà il file FCIDUMP n2-10e-8o nella cartella di lavoro ed eseguirà la stima delle risorse.

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

    Successivamente, è possibile passare il percorso al file scaricato allo script.

    python chemistry.py -f n2-10e-8o
    
  4. Il risultato della stima delle risorse viene visualizzato nel terminale. Ad esempio, l'output seguente mostra la stima delle risorse per il file 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
    

Nota

Dopo aver eseguito il file chemistry.py, viene creato un file resource_estimation.json nella cartella di lavoro. Il file resource_estimation.json contiene l'output dettagliato dello strumento di stima delle risorse. Questi sono i parametri del processo, i conteggi fisici, le proprietà della factory T, i conteggi logici e le proprietà qubit logiche.

Modificare target i parametri

  1. Aprire il file chemistry.py .

  2. I target parametri della stima delle risorse sono disponibili nella chiamata al qsharp.estimate file di chemistry.py. Il frammento di codice seguente illustra i parametri usati in questa esercitazione.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.01,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    
  3. Per modificare i target parametri, è possibile modificarli modificando il frammento di codice precedente. Ad esempio, il frammento di codice seguente mostra come modificare il budget degli errori impostando 0,333. Per altre informazioni, vedere Personalizzare i target parametri di Resource Estimator.

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

Perché le applicazioni di chimica del calcolo quantistico sono importanti?

Questa esercitazione rappresenta un primo passaggio per integrare la stima delle risorse delle soluzioni quantistiche ai problemi di struttura elettronica. Una delle applicazioni più importanti dei computer quantistici con scalabilità è la risoluzione dei problemi di chimica quantistica. La simulazione di sistemi meccanici quantistici complessi ha il potenziale di sbloccare le innovazioni in aree come la cattura di carbonio, l'insicurezza alimentare e la progettazione di combustibili e materiali migliori.

Ad esempio, uno dei file FCIDUMP forniti in questo esempio, nitrogenase_54orbital, descrive l'enzima azotoase. Se si potrebbe simulare in modo accurato il funzionamento di questo enzima a livello quantistico, potrebbe essere utile capire come produrlo su larga scala. Si potrebbe sostituire il processo a elevato consumo energetico che viene utilizzato per produrre abbastanza concime per alimentare il pianeta. Ciò ha il potenziale per ridurre l'impronta di carbonio globale e contribuire anche a risolvere le preoccupazioni relative all'insicurezza alimentare in una popolazione in crescita.

Passaggi successivi

Se vuoi approfondire le tue conoscenze, ecco alcuni esperimenti che puoi provare:

  • Stimare alcuni file FCIDUMP personalizzati.
  • Modificare i presupposti nel target computer quantistico fornendo parametri qubit personalizzati.
  • Vedere gli altri notebook di esempio di stima delle risorse nella raccolta di esempi di Azure Quantum.

Continuare a esplorare altri algoritmi quantistici e tecniche: