Aller au contenu principal

Vue d'ensemble de la diagonalisation quantique basée sur des échantillons (SQD)

La diagonalisation quantique basée sur des échantillons (SQD) est une technique classique de post-traitement qui agit sur des échantillons obtenus depuis un circuit quantique après exécution sur un QPU. Elle est utile pour trouver les valeurs propres et les vecteurs propres d'opérateurs quantiques, comme le Hamiltonien d'un système quantique, et combine informatique quantique et informatique classique distribuée. Cette technique de post-traitement peut être particulièrement utile pour les utilisateurs qui simulent des systèmes chimiques ou d'autres systèmes quantiques.

L'informatique classique est utilisée pour traiter les échantillons obtenus depuis un processeur quantique, et pour projeter et diagonaliser un Hamiltonien cible dans un sous-espace qu'ils définissent. Cela permet à SQD d'être robuste face aux échantillons corrompus par le bruit quantique et de gérer des Hamiltoniens de grande taille, comme des systèmes chimiques avec des millions de termes en interaction, au-delà de la portée des méthodes de diagonalisation exacte.

L'outil SQD peut cibler des Hamiltoniens exprimés sous forme de combinaisons linéaires d'opérateurs de Pauli ou d'opérateurs fermioniques en seconde quantification. Les échantillons en entrée sont obtenus par des circuits quantiques définis par l'utilisateur, qui sont supposés être de bonnes représentations des états propres (par exemple, l'état fondamental) d'un opérateur cible. La vitesse de convergence de SQD en fonction du nombre d'échantillons s'améliore avec la sparsité de l'état propre cible.

Installer le package SQD

Il existe deux façons d'installer le package SQD : via PyPI ou en compilant depuis les sources. Il est recommandé d'installer ces packages dans un environnement virtuel pour garantir l'isolation entre les dépendances des packages.

Installer depuis PyPI

La façon la plus simple d'installer le package qiskit-addon-sqd est via PyPI.

pip install qiskit-addon-sqd

Compiler depuis les sources

Clique ici pour lire comment installer ce package manuellement

Si tu souhaites contribuer à ce package ou l'installer manuellement, commence par cloner le dépôt :

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

puis installe le package via pip. Le dépôt contient également des notebooks d'exemple que tu peux exécuter. Si tu prévois de développer dans le dépôt, tu peux installer les dépendances dev.

Ajuste les options selon tes besoins.

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

Contexte théorique

Le workflow SQD utilisant la récupération de configuration auto-cohérente est expliqué en détail dans [1]. Cette section fournit une vue d'ensemble de la technique illustrée dans le diagramme suivant.

Diagramme SQD illustrant la récupération de configuration, la collecte de sous-échantillons et l'obtention d'états propres à partir de ces sous-échantillons

Ici Xˉ\bar{\mathcal{X}} est un ensemble d'échantillons bruités qui contiennent, dans le contexte du Hamiltonien simulé, des configurations physiques et non physiques (représentées sous forme de chaînes de bits) obtenues après exécution sur un QPU. Les configurations non physiques sont dues au bruit et peuvent être traitées par la méthode sqd.configuration_recovery.recover_configurations() pour affiner les échantillons en un nouvel ensemble XR\mathcal{X}_R.

À partir de cet ensemble, des lots de configurations S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} sont collectés selon une distribution proportionnelle aux fréquences empiriques de chaque x\mathbf{x} dans XR\mathcal{X}_R. Chaque lot de configurations échantillonnées définit un sous-espace, S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K, dans lequel le Hamiltonien est projeté et diagonalisé :

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

H^S(k)\hat{H}_{\mathcal{S}^{(k)}} est le Hamiltonien d'un sous-espace donné.

L'essentiel du workflow SQD réside ici, où chacun de ces Hamiltoniens de sous-espace est diagonalisé. Les états fondamentaux obtenus depuis chacun de ces sous-espaces, ψ(k)|\psi^{(k)}\rangle, sont utilisés pour produire une estimation d'un vecteur de référence des occupations n(K)\mathbf{n}^{(K)} moyennées sur chacun des KK sous-espaces. Un nouvel ensemble de configurations XR\mathcal{X}_R est alors généré en inversant probabilistement des bits individuels sur la base de cette occupation moyenne et du nombre total connu de particules (poids de Hamming) dans le système. Ce processus de récupération de configuration est ensuite répété en préparant un nouvel ensemble de sous-espaces à diagonaliser, en obtenant de nouveaux états propres et une nouvelle occupation orbitale moyenne, et en générant un nouvel ensemble de configurations. Cette boucle est itérée jusqu'à ce qu'un critère spécifié par l'utilisateur soit atteint, et le processus global est analogue au filtrage d'un signal bruité pour améliorer sa fidélité.

Prochaines étapes

Recommandations

Références

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