Qiskit Paulice
qiskit-paulice est un package permettant d'intégrer des vérifications de Pauli optimisées sur le plan matériel dans des circuits de Clifford arbitraires, sur des connectivités de qubits arbitraires, à l'aide de codes stabilisateurs spatio-temporels. Ces vérifications permettent de détecter des erreurs logiques lors de l'exécution du circuit. La sélection a posteriori des échantillons ne présentant aucune erreur détectée peut améliorer la fidélité des états échantillonnés à l'aide d'un processeur quantique, au prix de la perte de certains qubits auxiliaires et d'une augmentation de la charge liée à l'échantillonnage. Cette méthode est particulièrement adaptée au matériel de demain, car elle implique une surcharge bien moindre en termes de qubits et de portes par rapport à l'informatique quantique tolérante aux défauts, tout en offrant une meilleure efficacité d'échantillonnage que les méthodes d'atténuation des erreurs telles que ZNE ou PEC [1].
Bien que les contrôles de Pauli dans l'espace-temps puissent être utilisés pour mettre en œuvre des routines autonomes de détection d'erreurs, ils trouvent également leur place dans le cadre de l'atténuation et de la correction des erreurs. La détection d'erreurs peut venir compléter les techniques d'atténuation des erreurs, telles que l'annulation probabiliste des erreurs (PEC), en capturant une partie du bruit affectant les portes logiques et les mesures, ce qui réduit l'impact de l'inversion du canal de bruit et, par conséquent, diminue la surcharge liée à l'échantillonnage. Ils peuvent également être considérés comme une première étape vers une tolérance aux pannes concrète, puisque la mise en œuvre de codes stabilisateurs visant à protéger les qubits de données contre les erreurs logiques constitue un concept fondamental de la correction d'erreurs traditionnelle. Cette méthode permettant d'accéder à l'état quantique en une seule opération, elle peut être utilisée aussi bien dans les flux de travail basés sur l'échantillonnage que dans ceux basés sur la valeur d'espérance.
Mise en route
Un guide simple, conçu pour vous aider à vous familiariser rapidement avec ce logiciel, est disponible dans le guide de démarrage rapide.
Exemples de cas d'utilisation
Cette technique a été utilisée pour améliorer la fidélité des échantillons issus de circuits dominés par Clifford, pouvant compter jusqu'à 50 qubits et 2 450 portes d'intrication [1].
Débat technique
Recherche de bons ensembles de vérifications de Pauli dans l'espace-temps
Un ensemble de contrôles de Pauli spatio-temporels est dit « bon » si chaque contrôle est valide, de faible poids et efficace.
Une vérification se compose d’un certain nombre de rotations de Pauli contrôlées, , appliquées à certaines liaisons du circuit, : . Pour une vérification donnée, les commandes s’exercent sur un seul qubit auxiliaire, et les rotations s’effectuent sur les liaisons d’un seul qubit cible. Pour les circuits de Clifford, une vérification est valide si son produit de rétropropagation est un stabilisateur de l'état préparé par le circuit idéal : , où est le rétropropagateur de depuis jusqu'au début du circuit, et est l'ensemble de tous les stabilisateurs du circuit.
Une vérification est dite « de faible poids » si sa mise en œuvre ne nécessite que peu de portes d'entrelacement. L'algorithme de sélection des chèques privilégiera les chèques de faible poids qui permettent la détection d'erreurs la plus efficace.
Un contrôle est efficace s'il détecte beaucoup plus d'erreurs qu'il n'en introduit. Une vérification de Pauli est composée d'un certain nombre de portes d'intrication et introduit donc un peu de bruit de porte supplémentaire dans le calcul. Il est important de veiller à ce que chaque vérification supplémentaire apporte une capacité supplémentaire de détection des erreurs. On peut estimer l'efficacité d'un ensemble de contrôles en regroupant les erreurs de Pauli détectées par ces contrôles dans un canal de bruit post-sélectionné, puis en calculant l'impact de ce dernier. Réduire au minimum la surcharge d'échantillonnage liée à la mise en œuvre du canal de bruit inverse non couvert constitue une heuristique fiable pour sélectionner de bons contrôles, car cela donne une indication de l'ampleur des erreurs que ces contrôles ne peuvent pas détecter. Une approche plus lente mais plus réaliste consiste à effectuer un échantillonnage de Monte Carlo à partir de l'état bruité et à calculer de manière empirique le taux d'erreur logique de la distribution post-sélectionnée. Ces deux approches sont disponibles sous forme de fonctions de coût intégrées dans la qiskit_paulice.add_pauli_checks fonction.
Sélection a posteriori d'échantillons sur la base des données relatives aux syndromes
Dans ce module, un contrôle est mis en œuvre à l'aide de portes d'intrication entre un qubit auxiliaire et un qubit cible. Chaque ancilla démarre à l'état « », de sorte que la commande « » stabilise son état d'entrée. La propagation vers l’avant de l’ , depuis le début de l’ancilla jusqu’à l’ensemble du circuit vérifié, produit un opérateur de Pauli en sortie, qui pourrait avoir un poids plus élevé et s’étendre jusqu’au circuit de charge utile. Les indices des qubits sur lesquels cet opérateur de sortie comporte des termes non identitaires sont appelés « support du contrôle »; le contrôle est réussi si les bits, , appartenant à ce support ont une parité paire : . Un échantillon est conservé si chaque contrôle produit pour son contrôle de parité.
Fonctionnalités du logiciel
- Création automatique de modèles de bruit à partir des données de benchmark du backend
- Détection accélérée des checks dans Rust
- Trois algorithmes intégrés pour la détection des chèques
- Évaluer l'efficacité des contrôles en fonction de la charge d'échantillonnage du canal de bruit inverse présélectionné ou du taux d'erreur logique, sur la base d'un échantillonnage de Monte Carlo de l'état bruité
- Fonctionnalité d'aide permettant de trouver des paires de qubits auxiliaires/cibles pour un backend donné
Problèmes connus
- Le bruit au ralenti n'est pas fourni via
NoiseModel.get_backendet est ignoré lors de la sélection de contrôle - Si de nombreuses étapes stochastiques de l'algorithme peuvent être contrôlées à l'aide d'une graine aléatoire, certaines caractéristiques présentent toutefois un caractère aléatoire qui ne peut être contrôlé par une graine. Plus précisément, les valeurs suivantes des arguments « kwargs » pour
add_pauli_checksentraîneront un choix aléatoire des vérifications :cost="LER",method="genetic", etmethod="windowed_genetic".add_pauli_checks(..., cost="gamma", method="windowed")Pour un comportement déterministe, utilisez les valeurs par défaut.
Travaux futurs
- Prise en charge des systèmes non-Clifford
- Prise en charge accrue de l'analyse du canal de bruit post-sélectionné
- Gestion du bruit du moteur au ralenti lors de la collecte des chèques
- Aléatoire contrôlable pour la fonction de coût du taux d'erreur logique et les algorithmes de recherche génétique
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.
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
Simon Martiel, Ali Javadi-Abhari, « Détection d'erreurs à faible surcoût à l'aide de codes spatio-temporels », arXiv:2504.15725 [quant-ph].