Tutorial: Estimar os recursos de um problema de química quântica
Neste tutorial, você estima os recursos físicos necessários para calcular a energia de um hamiltoniano para precisão química de 1 mHa usando o Avaliador de Recursos do Azure Quantum.
Neste tutorial, você irá:
- Clone um repositório de exemplo do GitHub.
- Use arquivos FCIDUMP como parâmetros de argumento para aplicativos de modelagem e simulação química.
- Execute a estimativa de recursos para um problema de grande escala, que é uma amostra química fatorada duplamente.
Pré-requisitos
Um ambiente Python com Python e Pip instalados.
A versão mais recente do Visual Studio Code com o Kit de Desenvolvimento do Azure Quantum e extensões do Python instaladas.
O pacote mais recente do Azure Quantum
qsharp
enumpy
osscipy
pacotes.python -m pip install --upgrade qsharp numpy scipy
Dica
Você não precisa ter uma conta do Azure para executar o Avaliador de Recursos local.
Descrever o problema
Neste tutorial, você avalia as estimativas de recursos físicos do algoritmo de qubitização descrito em Phys. Rev. Research 3, 033055 (2021) para calcular a energia de um usuário fornecido Hamiltoniano para precisão química de 1 mHa.
O algoritmo quântico que calcula a energia do hamiltoniano é baseado na qubitização fatorada dupla. O hamiltoniano é descrito em termos de integrais de um e dois elétrons em arquivos FCIDUMP (interação de configuração completa) fornecidos que estão disponíveis por meio de um URI HTTPS.
A abordagem de qubitização é baseada na estimativa de fase quântica, mas em vez de construir o $U padrão = \exp{(-i H/\alpha)}$ da matriz hamiltoniana $H$, toma-se $U = \exp{(-i \sin^{-1} (H/\alpha))}$, que normalmente pode ser implementado com menos recursos. Usando fatoração dupla, $H$ é representado de forma compacta por meio de uma combinação de uma escolha criteriosa de orbitais e compressão.
Carregar o exemplo no Visual Studio Code
O código para este tutorial pode ser encontrado no repositório de exemplo Q#, em estimation/df-chemistry. Recomendamos que você clone o repositório em seu computador local para executar o exemplo.
Para clonar o repositório, execute o seguinte comando no terminal:
git clone https://github.com/microsoft/qsharp.git
Selecionar e passar um arquivo FCIDUMP
Neste exemplo, o hamiltoniano é descrito em termos de integrais de um e dois elétrons no formato FCIDUMP. Você pode escolher um dos arquivos FCIDUMP da tabela a seguir ou selecionar seu próprio arquivo FCIDUMP disponível em sua máquina ou online por meio de um URI HTTPS acessível publicamente.
URI | Nome da instância | Descrição |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64 elétrons, 56 espaço orbital ativo de um dos intermediários estáveis no ciclo de fixação de carbono catalisado por rutênio. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 elétrons, 54 espaço ativo orbital do núcleo ativo da nitrogenase. |
https://aka.ms/fcidump/fe2s2-10e-40o | FE2S2-10E-40O | 10 elétrons, 40 orbitais de espaço ativo do cluster [2Fe, 2S]. |
https://aka.ms/fcidump/polyyne-24e-24o | Polietileno-24E-24O | 24 elétrons, 24 espaço ativo orbital da molécula de poliino. |
https://aka.ms/fcidump/n2-10e-8o | N2-10E-8O | 10 elétrons, 8 espaço ativo orbital de nitrogênio dissociado a 3 Angstrom de distância. |
Para passar o arquivo FCIDUMP, você precisa executar o arquivo chemistry.py e passar o nome do arquivo FCIDUMP ou URI como um argumento usando ou -f
--fcidumpfile
.
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
Executar o exemplo de química
No Visual Studio Code, abra a pasta em que você clonou o repositório de exemplo Q#.
Abra um novo terminal, Terminal -> Novo Terminal, e navegue até o diretório em que o exemplo de química quântica está localizado. Por exemplo, se você clonar o repositório de exemplo Q# em seu computador local, o caminho será
qsharp/samples/estimation/df-chemistry
.Execute o arquivo chemistry.py e passe o arquivo FCIDUMP. Por exemplo, o comando a seguir baixará o arquivo FCIDUMP n2-10e-8o para a pasta de trabalho e executará a estimativa de recursos para ele.
python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
Depois disso, você pode passar o caminho para o arquivo baixado para o script.
python chemistry.py -f n2-10e-8o
O resultado da estimativa de recursos é exibido no terminal. Por exemplo, a saída a seguir mostra a estimativa de recursos para o arquivo 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
Observação
Depois de executar o arquivo chemistry.py, um arquivo resource_estimation.json é criado na pasta de trabalho. O arquivo resource_estimation.json contém a saída detalhada do Avaliador de Recursos. Estes são, os parâmetros de trabalho, contagens físicas, propriedades de fábrica T, contagens lógicas e propriedades lógicas de qubit.
Alterar target parâmetros
Abra o arquivo chemistry.py .
Os target parâmetros da estimativa de recursos podem ser encontrados na chamada para
qsharp.estimate
do arquivo chemistry.py. O snippet de código a seguir mostra os parâmetros usados neste tutorial.# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.01, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Se você quiser alterar os target parâmetros, poderá fazê-lo modificando o trecho de código anterior. Por exemplo, o snippet de código a seguir mostra como alterar o orçamento de erro para 0,333. Para obter mais informações, consulte Personalizar os target parâmetros do Avaliador de Recursos.
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Por que as aplicações químicas da computação quântica são importantes?
Este tutorial representa um primeiro passo para integrar a estimativa de recursos de soluções quânticas a problemas de estrutura eletrônica. Uma das aplicações mais importantes dos computadores quânticos em escala é resolver problemas de química quântica. A simulação de sistemas complexos de mecânica quântica tem o potencial de desbloquear avanços em áreas como captura de carbono, insegurança alimentar e projeto de melhores combustíveis e materiais.
Por exemplo, um dos arquivos FCIDUMP fornecidos neste exemplo, nitrogenase_54orbital, descreve a enzima nitrogenase. Se você pudesse simular com precisão como essa enzima funciona em um nível quântico, isso poderia nos ajudar a entender como produzi-la em escala. Você poderia substituir o processo altamente intensivo em energia que é usado para produzir fertilizantes suficientes para alimentar o planeta. Isso tem o potencial de reduzir a pegada de carbono global e também de ajudar a resolver as preocupações com a insegurança alimentar em uma população crescente.
Se você quiser aprofundar seus conhecimentos, aqui estão alguns experimentos que você pode tentar:
- Estime alguns arquivos FCIDUMP personalizados.
- Modifique as suposições no target computador quântico fornecendo parâmetros de qubit personalizados.
- Confira os outros notebooks de exemplo de estimativa de recursos na galeria de exemplos do Azure Quantum.
Conteúdo relacionado
- O tutorial Implementar o algoritmo de pesquisa de Grover mostra como escrever um programa Q# que usa o algoritmo de pesquisa de Grover para resolver um problema de coloração de grafo.
- O tutorial Escrever e simular programas de nível de qubit em Q# explora como escrever um programa Q# que aborda diretamente qubits específicos.
- O tutorial Explorar o emaranhamento quântico com Q# mostra como operar em qubits com Q# para alterar seu estado e demonstra os efeitos da superposição e do emaranhamento.
- Os Katas Quânticos são tutoriais individualizados baseados no Jupyter Notebook e exercícios de programação destinados a ensinar os elementos da computação quântica e da programação Q# ao mesmo tempo.