Compartilhar via


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

Dica

Você não precisa ter uma conta do Azure para executar o Avaliador de Recursos.

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 baseia-se na qubitização duplamente fatorada. O hamiltoniano é descrito em termos de integrais de um e dois elétrons nos 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 deste tutorial pode ser encontrado no repositório de exemplo do QDK, em estimativa/df-chemistry. É recomendável clonar 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/qdk.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 o URI como argumento usando -f ou --fcidumpfile.

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

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

Executar o exemplo de química

  1. No Visual Studio Code, abra a pasta em que você clonou o repositório de exemplo do QDK.

  2. Abra um novo terminal, Terminal –> Novo 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 do QDK em seu computador local, o caminho será qdk/samples/estimation/df-chemistry.

  3. Execute o arquivo chemistry.py e passe o arquivo FCIDUMP. Por exemplo, o comando a seguir baixa o arquivo n2-10e-8o FCIDUMP para a pasta de trabalho e executa 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
    
  4. O resultado da estimativa de recursos é exibido no terminal. Por exemplo, a saída a seguir mostra a estimativa de recurso para o arquivo 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
    

Observação

Depois de executar o chemistry.py arquivo, um resource_estimation.json arquivo é criado na pasta de trabalho. O arquivo resource_estimation.json contém a saída detalhada do Estimador de Recursos, como os parâmetros do trabalho, contagens físicas, propriedades da fábrica T, contagens lógicas e propriedades de qubits lógicos.

Alterar target parâmetros

  1. Abra o arquivo chemistry.py .

  2. Os target parâmetros da estimativa de recurso 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"}})
    
  3. Se você quiser alterar os target parâmetros, modifique o snippet 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 nesta amostra nitrogenase_54orbitaldescreve 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.
  • 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.