Propagation de Pauli
Ce paquet pauli-prop fournit une interface « Python » optimisée par Rust permettant d'effectuer la propagation de Pauli.
La propagation de Pauli est un cadre permettant d'approximer l'évolution d'opérateurs dans la base de Pauli sous l'action d'autres opérateurs, tels que les portes de circuits quantiques et les canaux de bruit. Cette approche peut s'avérer efficace lorsque l'on s'attend à ce que les opérateurs concernés restent dispersés dans la base de Pauli.
Les sous-routines de ce module peuvent être utilisées pour mettre en œuvre des techniques d'atténuation des erreurs telles que l'ombrage par cône de lumière [6] et l'absorption du bruit propagé [7], la rétropropagation des opérateurs [8] pour la réduction de la profondeur des circuits, ainsi que la simulation classique des valeurs d'espérance [1-5].
Mise en route
Un guide simple destiné à vous aider à vous familiariser rapidement avec ce logiciel est disponible dans le guide de démarrage rapide.
Exemples de cas d'utilisation
La propagation de Pauli peut être utilisée comme moteur de bas niveau pour mettre en œuvre diverses techniques. Voici quelques exemples d'applications de cette technique :
- Ombrage par cône de lumière pour réduire la charge d'échantillonnage liée à l'annulation probabiliste des erreurs (PEC) afin d'atténuer les valeurs d'espérance dans un modèle d'Ising à champ transversal à 1 et 2D s [6] [
qiskit-addon-slcdocs ] - Intégration d'informations issues d'un modèle de bruit dans une observable cible afin d'atténuer les valeurs attendues dans un modèle d'Ising à champ transversal « 2D » [7] [
qiskit-addon-pnadocs ] - Réduction des portes de sortie pour obtenir des circuits de Trotter de profondeur réduite destinés à l'évolution temporelle d'un modèle de spin « 2D » [8] [
qiskit-addon-obpdocs ]
Débat technique
Détails du logiciel
- Interface « Python » optimisée pour Rust
- Prise en charge des simulations avec bruit [ guide ]
- Possibilité de tronquer des termes au cours de l'évolution en fonction d'une tolérance absolue du coefficient, d'un nombre fixe de termes dans l'opérateur en évolution, ou d'une combinaison des deux
- Capacité à effectuer une propagation de Pauli à la fois dans le cadre de Schrödinger et dans celui de Heisenberg
- Nouvelle technique permettant d'approximer la conjugaison d'un opérateur de somme de Pauli par un autre opérateur de Pauli. Cette implémentation heuristique génère de manière « gloutonne » les contributions au produit qui devraient s'avérer les plus significatives. Pour plus d'informations, voir l'annexe B de [7].
- unité d'exécution unique
Configuration informatique requise
Tant la consommation de mémoire que le temps d'exécution des routines de propagation de Pauli varient généralement proportionnellement à la taille maximale que peut atteindre l'opérateur évolué.
propagate_through_rotation_gates(): À mesure que l'opérateur de Pauli se propage dans la base de Pauli sous l'action d'une séquence de portes de rotation de Pauli de type « » d'un circuit à qubits, le nombre de termes augmentera selon la relation pour atteindre un maximum de composantes de Pauli distinctes. Afin de limiter l'utilisation de la mémoire, l'opérateur est tronqué après l'application de chaque porte, ce qui introduit une erreur proportionnelle à l'amplitude des coefficients des termes tronqués. Les besoins en mémoire sont linéaires par rapport à la taille de l'opérateur évolué, et la durée d'exécution évolue linéairement tant en fonction de la taille de l'opérateur que du nombre de portes.
propagate_through_operator(): Conjuge un opérateur de la base de Pauli par un autre en accumulant de manière gloutonne les termes de la somme, , où sont des indices clairsemés sur la base de Pauli. Cette implémentation trie les coefficients de chaque opérateur par ordre décroissant de grandeur, puis parcourt l'espace d'indices 3D à la recherche des termes présentant les coefficients les plus élevés, en commençant par l'origine et en accumulant des triplets jusqu'à une limite spécifiée. Le temps consacré à la recherche peut souvent être réduit à un niveau négligeable en augmentant le pas de recherche dans l'espac , ce qui permet d'obtenir un gain de vitesse cubique pour cette sous-routine. Dans notre analyse de profil, une partie importante du temps peut être consacrée au tri des opérateurs et à l'application de la multiplication de Pauli pour générer les termes du nouvel opérateur.
Contribuer
Le code source est disponible sur GitHub.
Le guide du développeur se trouve à l'adresse CONTRIBUTING.md, à la racine du dépôt de ce projet. En participant, vous vous engagez à respecter le code de conduite de Qiskit.
Nous utilisons les tickets d' GitHub pour suivre les demandes et les bogues.
En citant ce paquet
Si vous utilisez ce package dans le cadre de vos travaux de recherche, veuillez vous reporter au fichier « CITATION.bib » présent dans le dépôt de ce projet afin de citer la ou les références appropriées.
Licence
Politique de dépréciation
Nous suivons la politique de versionnement sémantique. Il peut nous arriver occasionnellement d'apporter des modifications importantes afin d'améliorer l'expérience utilisateur. Dans la mesure du possible, nous conserverons les anciennes interfaces et les marquerons comme obsolètes, à condition qu'elles puissent coexister avec les nouvelles. Chaque amélioration majeure, changement entraînant une incompatibilité ou fonctionnalité obsolète sera consignée dans les notes de mise à jour.
Références
-
[Tomislav Begušić, Johnnie Gray, Garnet Kin-Lic Chan, « Simulations classiques rapides et convergentes démontrant l’utilité de l’informatique quantique avant la tolérance aux pannes », arXiv:2308.05077 [quant-ph].
-
Nicolas Loizeau et al., Simulations quantiques à plusieurs corps avec PauliStrings.jl, arXiv:2410.09654 [quant-ph].
-
Manuel S. Rudolph et al., Propagation de Pauli : un cadre de calcul pour la simulation de systèmes quantiques, arXiv:2505.21606 [quant-ph].
-
Hrant Gharibyan et al., Guide pratique d'utilisation des simulateurs de trajectoires de Pauli pour les expériences quantiques à grande échelle, arXiv:2507.10771 [quant-ph].
-
Lukas Broers et al., Simulation évolutive de la dynamique quantique à plusieurs corps à l'aide d'une algèbre quantique représentée par « or », arXiv:2506.13241 [quant-ph].
-
Andrew Eddins, Minh C. Tran, Patrick Rall, « Lightcone shading for classically accelerated quantum error mitigation », arXiv:2409.04401 [quant-ph].
-
Andrew Eddins et al., Calcul des observables à annulation de bruit via la propagation de Pauli, arXiv:2606.20441 [quant-ph].
8 Bryce Fuller et al., Amélioration du calcul quantique grâce à la rétropropagation des opérateurs, arXiv:2502.01897 [quant-ph].