Saltar al contenido principal

Descripción general de la diagonalización cuántica basada en muestras (SQD)

La diagonalización cuántica basada en muestras (SQD, por sus siglas en inglés) es una técnica clásica de posprocesamiento que actúa sobre las muestras obtenidas de un circuito cuántico tras su ejecución en una QPU. Es útil para encontrar valores propios y vectores propios de operadores cuánticos, como el Hamiltoniano de un sistema cuántico, y combina la computación cuántica con la computación clásica distribuida. Esta técnica de posprocesamiento puede ser especialmente útil para usuarios que simulan sistemas químicos u otros sistemas cuánticos.

La computación clásica se utiliza para procesar las muestras obtenidas de un procesador cuántico, y para proyectar y diagonalizar un Hamiltoniano objetivo en un subespacio generado por ellas. Esto permite que SQD sea robusto frente a muestras corrompidas por ruido cuántico y que gestione Hamiltonianos grandes, como sistemas químicos con millones de términos en interacción, que están más allá del alcance de los métodos de diagonalización exacta.

La herramienta SQD puede trabajar con Hamiltonianos expresados como combinaciones lineales de operadores de Pauli u operadores fermiónicos de segunda cuantización. Las muestras de entrada se obtienen de circuitos cuánticos definidos por el usuario, que se considera que son buenas representaciones de los estados propios (por ejemplo, el estado base) de un operador objetivo. La tasa de convergencia de SQD en función del número de muestras mejora con la dispersión del estado propio objetivo.

Instalar el paquete SQD

Hay dos formas de instalar el paquete SQD: mediante PyPI o compilando desde el código fuente. Se recomienda instalar estos paquetes en un entorno virtual para garantizar la separación entre las dependencias de los paquetes.

Instalar desde PyPI

La forma más sencilla de instalar el paquete qiskit-addon-sqd es mediante PyPI.

pip install qiskit-addon-sqd

Compilar desde el código fuente

Haz clic aquí para leer cómo instalar este paquete manualmente

Si deseas contribuir a este paquete o quieres instalarlo manualmente, primero clona el repositorio:

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

e instala el paquete mediante pip. El repositorio también contiene cuadernos de ejemplo que puedes ejecutar. Si planeas desarrollar en el repositorio, puedes instalar las dependencias de dev.

Ajusta las opciones según tus necesidades.

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

Fundamentos teóricos

El flujo de trabajo de SQD con recuperación de configuración autocongruente se explica en detalle en [1]. Esta sección proporciona una descripción general de la técnica representada en el siguiente diagrama.

Diagrama de SQD que muestra la recuperación de configuración, la recopilación de submuestras y la obtención de estados propios a partir de esas submuestras

Aquí Xˉ\bar{\mathcal{X}} es un conjunto de muestras ruidosas que contienen, en el contexto del Hamiltoniano que se está simulando, configuraciones físicas y no físicas (representadas como cadenas de bits) obtenidas de la ejecución en una QPU. Las configuraciones no físicas se deben al ruido y pueden procesarse mediante el método sqd.configuration_recovery.recover_configurations() para refinar las muestras en un nuevo conjunto XR\mathcal{X}_R.

A partir de este conjunto, se recopilan lotes de configuraciones S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} según una distribución proporcional a las frecuencias empíricas de cada x\mathbf{x} en XR\mathcal{X}_R. Cada lote de configuraciones muestreadas abarca un subespacio, S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K, en el que el Hamiltoniano se proyecta y diagonaliza:

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

donde H^S(k)\hat{H}_{\mathcal{S}^{(k)}} es el Hamiltoniano de un subespacio dado.

El núcleo del flujo de trabajo de SQD reside aquí, donde se diagonaliza cada uno de estos Hamiltonianos de subespacio. Los estados base obtenidos de cada uno de estos subespacios, ψ(k)|\psi^{(k)}\rangle, se usan para producir una estimación de un vector de referencia de ocupaciones n(K)\mathbf{n}^{(K)} promediado sobre cada uno de los KK subespacios. A continuación, se genera un nuevo conjunto de configuraciones XR\mathcal{X}_R invirtiendo probabilísticamente bits individuales en función de esta ocupación promedio y del número total conocido de partículas (peso de Hamming) en el sistema. Este proceso de recuperación de configuración se repite preparando un nuevo conjunto de subespacios para diagonalizar, obteniendo nuevos estados propios y una nueva ocupación orbital promediada, y generando un nuevo conjunto de configuraciones. Este bucle se itera hasta que se cumple un criterio especificado por el usuario, y el proceso general es análogo al filtrado de una señal ruidosa para mejorar su fidelidad.

Próximos pasos

Recomendaciones

Referencias

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