Diagonalisation quantique basée sur l'échantillonnage (SQD)
Ce package implémente la diagonalisation quantique basée sur l'échantillonnage (SQD) — une technique pour trouver les valeurs propres et les vecteurs propres d'opérateurs quantiques, comme le hamiltonien d'un système quantique [1–6]. Elle peut cibler des hamiltoniens exprimés comme des combinaisons linéaires d'opérateurs de Pauli ou d'opérateurs fermioniques en seconde quantification. Les workflows basés sur SQD peuvent être exécutés sur les ordinateurs quantiques actuels et il a été montré qu'ils passent à l'échelle jusqu'à des tailles de problèmes qui dépassaient ce qui était possible avec les méthodes variationnelles — et même au-delà de la portée des méthodes de diagonalisation classique exacte.
Les workflows basés sur SQD consistent d'abord à préparer un ou plusieurs états quantiques sur un dispositif quantique et à les échantillonner. Ensuite, le calcul distribué classique est utilisé pour traiter ces échantillons bruités. Ce traitement se déroule de manière itérative en deux étapes : d'abord, une étape de récupération de configurations corrige les échantillons bruités à l'aide d'informations sur le problème d'entrée ; ensuite, le hamiltonien est projeté et diagonalisé dans le sous-espace engendré par ces échantillons. Ces étapes sont répétées de façon auto-cohérente jusqu'à convergence. Le résultat est une approximation de la plus petite valeur propre (énergie) et de l'état propre de plus basse énergie d'un hamiltonien donné. SQD est robuste aux échantillons corrompus par le bruit quantique ; en fait, tant qu'un signal utile peut être extrait de l'ordinateur quantique, le résultat de SQD est insensible aux chaînes de bits bruitées.
qiskit-addon-sqd peut être utilisé en pratique pour traiter classiquement des échantillons tirés de nombreux circuits quantiques. Par exemple :
- Un ansatz de circuit variationnel dont les paramètres sont choisis de sorte que l'échantillonnage du circuit produise des configurations électroniques sur lesquelles la fonction d'onde cible (par exemple, l'état fondamental) a un support significatif. C'est intéressant pour les applications en chimie, où les hamiltoniens peuvent avoir des millions de termes d'interaction [1]. Pour un exemple de cette approche appliquée à la chimie avec un circuit LUCJ, consulte le tutoriel pour approximer l'énergie de l'état fondamental de la molécule N2.
- Un ensemble d'états de base de Krylov est préparé sur des intervalles de temps croissants. En supposant un bon état initial et un état fondamental creux, il est démontré que cette approche converge efficacement. Comme il faut préparer sur un dispositif quantique des circuits d'évolution temporelle trotterisée, cette approche convient mieux aux applications aux modèles de réseau [2] qu'aux hamiltoniens complexes à nombreux corps comme ceux de la chimie quantique. Pour un exemple de cette approche appliquée à des hamiltoniens de réseau fermioniques, consulte le tutoriel pour approximer l'énergie de l'état fondamental d'un modèle d'Anderson à impureté unique simplifié.
- Un ensemble d'états de base de Krylov implémentés avec la compilation aléatoire qDRIFT de l'opérateur d'évolution temporelle. Cette approche donne des circuits de moindre profondeur que les décompositions de l'évolution temporelle basées sur Trotter et peut donc être utilisée pour des hamiltoniens de chimie quantique. Cette technique a été appliquée à l'énergie de l'état fondamental d'hydrocarbures aromatiques polycycliques [6].
Premiers pas
Un guide simple pour t'aider à démarrer rapidement avec ce package est disponible dans le guide de démarrage rapide.
Exemples de cas d'usage
La technique de diagonalisation quantique basée sur l'échantillonnage peut être utilisée pour mettre en œuvre un ensemble varié de workflows. Voici quelques exemples où elle a été utilisée :
-
Calculs de structure électronique des énergies de l'état fondamental d'amas fer-soufre
-
Estimation des énergies de l'état fondamental pour prédire les bandes interdites de diélectriques
-
Estimation des états excités moléculaires de basse énergie
-
Simulation des interactions entre molécules
-
Étude des interactions soluté-solvant dans des simulations de structure électronique
-
Analyse en couches ouvertes de la dissociation moléculaire
-
Modélisation de chemins réactionnels pour des problèmes de photochimie
-
Combinaison avec le entanglement forging pour étudier les chemins réactionnels de la dégradation des matériaux via l'abstraction d'hydrogène
-
Construction de sous-espaces à partir d'états de base de Krylov quantiques pour effectuer des simulations de l'état fondamental de modèles d'impureté pour des systèmes fermioniques
-
Utilisation de la compilation aléatoire qDRIFT pour réduire le surcoût de l'implémentation des états de base de Krylov pour des hamiltoniens de chimie et avec une application à une molécule présentant une topologie électronique demi-Möbius
-
Utilisation de SQD comme solveur dans le cadre de méthodes d'embedding et de fragmentation pour des systèmes moléculaires, par exemple pour calculer les énergies d'anneaux d'hydrogène et du cyclohexane et de complexes bi- et trimétalliques, étudier la réaction de réduction de l'oxygène, estimer les énergies de protéines et de complexes protéine–ligand, et prédire la spéciation du tritium.
Discussion technique
Tailles des systèmes et besoins de calcul
Le coût de calcul de SQD est dominé par les appels au solveur d'états propres. À chaque étape de l'itération de récupération de configurations auto-cohérente, n_batches appels au solveur d'états propres sont effectués. Les différents appels sont parallélisables de façon triviale. Dans ce tutoriel, ces appels se trouvent dans une boucle for. Il est fortement recommandé d'effectuer ces appels en parallèle.
La fonction qiskit_addon_sqd.fermion.solve_fermion() est multithread et capable de traiter des systèmes d'environ 25 orbitales spatiales et d'environ 10 électrons avec des dimensions de sous-espace d'environ $10^7$, en utilisant environ 10 à 30 cœurs.
Choisir les dimensions du sous-espace
Le choix de la dimension du sous-espace influence la précision et le temps d'exécution du solveur d'états propres. Plus le sous-espace est grand, plus le calcul est précis, au prix d'une augmentation du temps d'exécution et des besoins en mémoire. La taille optimale du sous-espace d'un système donné n'est pas connue ; on peut donc réaliser une étude de convergence en fonction de la dimension du sous-espace, comme décrit dans ce guide.
Borner la dimension du sous-espace
L'argument samples_per_batch de qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() définit le nombre de chaînes de bits contenues dans chaque batch, et contrôle ainsi indirectement la dimension du sous-espace : pour les applications de chimie quantique, sa valeur fixe une borne supérieure de la dimension du sous-espace. La dimension qui en résulte réellement dépend du nombre de chaînes de bits échantillonnées qui sont distinctes, et elle croît au fil des itérations de récupération de configurations auto-cohérente ; elle n'est donc pas connue à l'avance. Consulte cet exemple pour plus de détails.
L'argument max_dim de la même fonction borne directement la dimension, en limitant le nombre de chaînes CI conservées dans chaque secteur de spin. Comme le sous-espace est engendré par le produit cartésien des deux secteurs de spin, max_dim=d plafonne la dimension du sous-espace à d**2, tandis qu'un tuple max_dim=(d_a, d_b) limite séparément les secteurs de spin alpha et de spin bêta, plafonnant la dimension du sous-espace à d_a * d_b (avec symmetrize_spin=True, les deux limites doivent être égales). Lorsqu'un batch produit plus de chaînes CI que la limite ne le permet, les chaînes demandées via include_configurations et celles reportées de l'itération précédente sont conservées en priorité, et les emplacements restants sont remplis avec les chaînes les plus fréquemment échantillonnées. Comme il plafonne la taille de la plus grande diagonalisation que le solveur d'états propres devra effectuer, max_dim est un moyen pratique de maintenir le solveur dans un budget de temps d'exécution et de mémoire. Consulte ce guide pour plus de détails.
Solveurs
Les étapes de projection et de diagonalisation sont réalisées par un solveur classique. Nous fournissons ici deux solveurs génériques, l'un pour les systèmes fermioniques et l'autre pour les systèmes de qubits. D'autres solveurs, éventuellement plus efficaces pour des systèmes spécifiques, peuvent être interfacés par les utilisateurs.
Trim SQD
Le SQD standard diagonalise chaque batch sous-échantillonné indépendamment et conserve le meilleur résultat ; le nombre de configurations qu'il peut considérer est donc limité à ce qu'un seul sous-espace abordable peut contenir. Trim SQD partitionne au contraire les chaînes de bits en batches, effectue une diagonalisation intermédiaire de chaque batch, puis effectue une diagonalisation plus grande en utilisant les déterminants de plus fort poids de chaque partition. Cette méthode repose sur une recherche conjointe de la Cleveland Clinic Foundation, de RIKEN et d'IBM [7], et peut être activée en passant un objet TrimPolicy à la fonction diagonalize_fermionic_hamiltonian().
Contribuer
Le code source est disponible sur GitHub.
Le guide du développeur se trouve dans CONTRIBUTING.md à la racine du dépôt de ce projet. En participant, tu t'engages à respecter le code de conduite de Qiskit.
Nous utilisons les issues GitHub pour suivre les demandes et les bugs.
Citer ce paquet
Si tu utilises ce paquet dans tes recherches, utilise le fichier CITATION.bib du dépôt de ce projet pour citer la ou les références appropriées.
Remerciements
Ce paquet inclut une stratégie d'échantillonnage optionnelle au sein de la boucle de récupération de configurations auto-cohérente, qui élague les déterminants à partir des résultats de diagonalisation intermédiaires. L'implémentation repose sur une recherche conjointe de la Cleveland Clinic Foundation, de RIKEN et d'IBM. Si tu utilises cette fonctionnalité dans tes recherches, utilise aussi la citation de l'article, que tu trouveras dans le fichier CITATION.bib avec la clé de citation merz2026crossing. Une implémentation du workflow complet de cet article devrait être bientôt disponible sur GitHub.
Licence
Politique de dépréciation
Nous suivons le versionnage sémantique. Il peut nous arriver de faire des changements incompatibles afin d'améliorer l'expérience utilisateur. Lorsque c'est possible, nous conserverons les anciennes interfaces et les marquerons comme dépréciées, tant qu'elles peuvent coexister avec les nouvelles. Chaque amélioration substantielle, changement incompatible ou dépréciation sera documenté dans les notes de version.
Références
-
Javier Robledo-Moreno, et al., Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].
-
Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].
-
Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].
-
Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].
-
Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].
-
Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].
-
Kenneth M. Merz Jr., et al., Crossing the 12,000-atom barrier with heterogeneous quantum-classical supercomputing: quantum chemistry of protein-ligand complexes, arXiv:2605.01138 [quant-ph].