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 com precisão química de 1 mHa usando o Azure Quantum Resource Estimator.
Neste tutorial, vai:
- Clone um repositório de exemplo do GitHub.
- Use arquivos FCIDUMP como parâmetros de argumento para modelagem química e aplicações de simulação.
- Execute a estimativa de recursos para um problema de grande escala, que é uma amostra de química duplamente fatorizada.
Pré-requisitos
Um ambiente Python com Python e Pip instalados.
A versão mais recente do Visual Studio Code com o Azure Quantum Development Kit e extensões Python instaladas.
O pacote e pacotes mais recentes do Azure Quantum
qsharp
.numpy
scipy
python -m pip install --upgrade qsharp numpy scipy
Gorjeta
Você não precisa ter uma conta do Azure para executar o Estimador de Recursos local.
Descreva 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 com precisão química de 1 mHa.
O algoritmo quântico que calcula a energia do hamiltoniano é baseado na qubitização duplamente fatorizada. O hamiltoniano é descrito em termos de integrais de um e dois elétrons em arquivos FCIDUMP (full configuration interaction) fornecidos que estão disponíveis através de um URI HTTPS.
A abordagem de qubitização é baseada na estimativa de fase quântica, mas em vez de construir o padrão $U = \exp{(-i H/\alpha)}$ a partir 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 compactamente através de uma combinação de uma escolha criteriosa de orbitais e compressão.
Carregue 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 sua máquina local para executar a amostra.
Para clonar o repositório, execute o seguinte comando a partir do seu 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 na tabela a seguir ou selecionar seu próprio arquivo FCIDUMP disponível em sua máquina ou on-line através de um URI HTTPS acessível publicamente.
URI | Nome da instância | Description |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64 elétrons, 56 espaço ativo orbital 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 espaço ativo orbital do aglomerado [2Fe, 2S]. |
https://aka.ms/fcidump/polyyne-24e-24o | Poliyne-24E-24O | 24 elétrons, 24 espaço ativo orbital da molécula poliyne. |
https://aka.ms/fcidump/n2-10e-8o | N2-10E-8O | 10 elétrons, 8 espaço ativo orbital de nitrogênio dissociado a 3 distâncias de Angstrom. |
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 um 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 onde você clonou o repositório de exemplo Q#.
Abra um novo terminal, Terminal -> New Terminal, e navegue até o diretório onde a amostra de química quântica está localizada. Por exemplo, se você clonar o repositório de exemplo Q# em sua máquina 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
Nota
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 Resource Estimator. Estes são, os parâmetros de trabalho, contagens físicas, propriedades de fábrica T, contagens lógicas e propriedades de qubit lógico.
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
o arquivo chemistry.py. O trecho 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, você pode fazê-lo modificando o trecho de código anterior. Por exemplo, o trecho 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 Resource Estimator.
# 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 para problemas de estrutura eletrônica. Uma das aplicações mais importantes dos computadores quânticos em escala é a resolução de 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 a captura de carbono, a insegurança alimentar e a conceção de melhores combustíveis e materiais.
Por exemplo, um dos arquivos FCIDUMP fornecidos nesta amostra, 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 ajudar a resolver as preocupações relativas à insegurança alimentar em uma população crescente.
Se você quiser aprofundar seus conhecimentos, aqui estão algumas experiências que você pode tentar:
- Estime alguns arquivos FCIDUMP personalizados.
- Modifique as suposições no computador quântico target fornecendo parâmetros de qubit personalizados.
- Confira os outros blocos de anotações de exemplo de estimativa de recursos na galeria de exemplos do Azure Quantum.
Conteúdos relacionados
- O tutorial Implementar o algoritmo de pesquisa do Grover mostra como escrever um programa Q# que usa o algoritmo de pesquisa do Grover para resolver um problema de coloração de gráfico.
- O tutorial Escrever e simular programas de nível qubit em Q# explora como escrever um programa Q# que aborda diretamente qubits específicos.
- O tutorial Explore quantum entanglement with Q# mostra como operar em qubits com Q# para mudar seu estado e demonstra os efeitos da superposição e do emaranhamento.
- Os Katas Quânticos são tutoriais e exercícios de programação baseados no Jupyter Notebook, com ritmo próprio, destinados a ensinar os elementos da computação quântica e da programação Q# ao mesmo tempo.