Pular para o conteúdo principal

Visão geral da diagonalização quântica baseada em amostras (SQD)

A diagonalização quântica baseada em amostras (SQD) é uma técnica clássica de pós-processamento que age sobre amostras obtidas de um Circuit quântico após a execução em um QPU. Ela é útil para encontrar autovalores e autovetores de operadores quânticos, como o Hamiltoniano de um sistema quântico, e combina computação quântica com computação clássica distribuída. Essa técnica de pós-processamento pode ser especialmente útil para usuários que simulam sistemas químicos ou outros sistemas quânticos.

A computação clássica é usada para processar amostras obtidas de um processador quântico, e para projetar e diagonalizar um Hamiltoniano alvo em um subespaço gerado por elas. Isso permite que o SQD seja robusto a amostras corrompidas por ruído quântico e gerencie Hamiltonianos grandes, como sistemas químicos com milhões de termos de interação, além do alcance dos métodos de diagonalização exata.

A ferramenta SQD pode ter como alvo Hamiltonianos expressos como combinações lineares de operadores de Pauli ou operadores fermiônicos de segunda quantização. As amostras de entrada são obtidas por Circuits quânticos definidos pelo usuário, que se acredita serem boas representações de autoestados (por exemplo, o estado fundamental) de um operador alvo. A taxa de convergência do SQD em função do número de amostras melhora com a esparsidade do autoestado alvo.

Instalar o pacote SQD

Há duas maneiras de instalar o pacote SQD: via PyPI e compilando a partir do código-fonte. É recomendável instalar esses pacotes em um ambiente virtual para garantir a separação entre as dependências dos pacotes.

Instalar via PyPI

A maneira mais direta de instalar o pacote qiskit-addon-sqd é via PyPI.

pip install qiskit-addon-sqd

Compilar a partir do código-fonte

Clique aqui para saber como instalar este pacote manualmente

Se você deseja contribuir com este pacote ou instalá-lo manualmente, primeiro clone o repositório:

git clone git@github.com:Qiskit/qiskit-addon-sqd.git

e instale o pacote via pip. O repositório também contém notebooks de exemplo que você pode executar. Se você planeja desenvolver no repositório, pode instalar as dependências de dev.

Ajuste as opções conforme suas necessidades.

pip install tox notebook -e '.[notebook-dependencies, dev]'

Fundamentos teóricos

O fluxo de trabalho do SQD usando recuperação de configuração auto-consistente é explicado em detalhes em [1]. Esta seção fornece uma visão geral da técnica ilustrada no diagrama a seguir.

Diagrama do SQD mostrando recuperação de configuração, coleta de subamostras e obtenção de autoestados a partir dessas subamostras

Aqui Xˉ\bar{\mathcal{X}} é um conjunto de amostras ruidosas que contém, no contexto do Hamiltoniano sendo simulado, configurações físicas e não físicas (representadas como bitstrings) obtidas da execução em um QPU. As configurações não físicas são devidas ao ruído e podem ser processadas pelo método sqd.configuration_recovery.recover_configurations() para refinar as amostras em um novo conjunto XR\mathcal{X}_R.

Desse conjunto, lotes de configurações S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} são coletados de acordo com uma distribuição proporcional às frequências empíricas de cada x\mathbf{x} em XR\mathcal{X}_R. Cada lote de configurações amostradas abrange um subespaço, S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K, no qual o Hamiltoniano é projetado e diagonalizado:

H^S(k)=P^S(k)H^P^S(k), com P^S(k)=xS(k)xx, \hat{H}_{S^{(k)}} = \hat{P}_{\mathcal{S}^{(k)}}\hat{H}\hat{P}_{\mathcal{S}^{(k)}}\text{, com } \hat{P}_{\mathcal{S}^{(k)}} = \sum_{\mathbf{x} \in \mathcal{S}^{(k)}} |\mathbf{x}\rangle\langle\mathbf{x}|,

onde H^S(k)\hat{H}_{\mathcal{S}^{(k)}} é o Hamiltoniano de um dado subespaço.

O núcleo do fluxo de trabalho do SQD está aqui, onde cada um desses Hamiltonianos de subespaço é diagonalizado. Os estados fundamentais obtidos de cada um desses subespaços, ψ(k)|\psi^{(k)}\rangle, são usados para produzir uma estimativa de um vetor de referência de ocupâncias n(K)\mathbf{n}^{(K)} calculado como média sobre cada um dos KK subespaços. Um novo conjunto de configurações XR\mathcal{X}_R é então gerado invertendo bits individuais de forma probabilística com base nessa ocupação média e no número total conhecido de partículas (peso de Hamming) no sistema. Esse processo de recuperação de configuração é então repetido preparando um novo conjunto de subespaços para diagonalizar, obtendo novos autoestados e ocupação orbital média, e gerando um novo conjunto de configurações. Esse laço é iterado até que um critério especificado pelo usuário seja atendido, e o processo geral é análogo a filtrar um sinal ruidoso para melhorar sua fidelidade.

Próximos passos

Recomendações

Referências

[1] Robledo-Moreno, Javier, et al. "Chemistry beyond exact solutions on a quantum-centric supercomputer" arXiv preprint arXiv:2405.05068 (2024).