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

  • 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 e numpy os scipy 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

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

  2. 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.

  3. 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
    
  4. 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

  1. Abra o arquivo chemistry.py .

  2. 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"}})
    
  3. 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.
  • 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.