Partilhar via


Tutorial: Estimar os recursos de um problema de química quântica

Este tutorial mostra como estimar 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.

Nota

O Microsoft Quantum Development Kit (Classic QDK) não será mais suportado após 30 de junho de 2024. Se você for um desenvolvedor QDK existente, recomendamos que faça a transição para o novo Kit de Desenvolvimento Quântico do Azure (QDK Moderno) para continuar desenvolvendo soluções quânticas. Para obter mais informações, consulte Migrar seu código Q# para o QDK moderno.

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

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

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

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

  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
    

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

  1. Abra o arquivo chemistry.py .

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

Próximos passos

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.

Continue a explorar outros algoritmos e técnicas quânticas:

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