Aller au contenu principal

Flux de développement

Le terme patron Qiskit décrit le flux de développement permettant de décomposer des problèmes spécifiques à un domaine et de contextualiser les capacités requises par étapes. Cela permet la composabilité transparente de nouvelles capacités développées par les chercheurs d'IBM Quantum® (et d'autres) et ouvre la voie à un avenir où les tâches de calcul quantique sont exécutées par une puissante infrastructure de calcul hétérogène (CPU/GPU/QPU). Des blocs ou des groupes de blocs réalisent les étapes d'un patron, le SDK Qiskit fournissant une couche fondamentale importante, soutenue par d'autres outils ou services développés par IBM Quantum ou la communauté open source quantique. Les patrons Qiskit permettent aux experts du domaine de spécifier un problème et de composer l'outillage (les blocs) qui réalise un patron Qiskit. Ce patron peut ensuite être exécuté localement, via des services cloud, ou déployé avec Qiskit Serverless.

Les quatre étapes d'un patron Qiskit sont les suivantes :

  • Mapper le problème vers des circuits et des opérateurs quantiques
  • Optimiser pour le matériel cible
  • Exécuter sur le matériel cible
  • Post-traiter les résultats

Chaque étape est détaillée dans les sections ci-dessous.

Mapper le problème vers des circuits et des opérateurs quantiques

Cette étape décrit comment un utilisateur part d'un problème classique et détermine comment le mapper sur un ordinateur quantique. Par exemple, dans des applications telles que la chimie et la simulation quantique, cette étape implique généralement la construction d'un circuit quantique représentant le Hamiltonien que tu cherches à résoudre. Au cours de cette étape, pour certains problèmes, il peut également être souhaitable de spécifier dès le départ le mappage du problème sur les qubits dans le réseau heavy-hex (ou gross) du matériel IBM® si la structure du problème se prête à une optimisation précoce. Il vaut aussi la peine de réfléchir à ce stade au résultat de l'algorithme particulier en préparation de l'étape d'exécution ultérieure — par exemple, si le résultat souhaité implique d'inférer des fonctions de corrélation à l'aide de tests de Hadamard, tu pourrais te préparer à utiliser le Sampler, tandis que la spécification d'observables utiliserait l'Estimator et pourrait offrir de nombreuses options d'atténuation des erreurs.

La sortie de cette étape est normalement une collection de circuits ou d'opérateurs quantiques qui peuvent être optimisés pour le matériel à l'étape suivante.

Optimiser pour le matériel cible

Dans cette étape, tu prends les circuits abstraits (ou les opérateurs) produits lors de l'étape de mappage et tu effectues une série d'optimisations sur ceux-ci. Cela peut inclure le mappage du routage et de la disposition du circuit sur le matériel à qubits physiques, la conversion vers les portes de base du matériel, et la réduction du nombre d'opérations, tout cela étant conçu pour optimiser la probabilité de succès lors de l'étape d'exécution ultérieure. À ce stade, tu pourrais également vouloir tester tes circuits avec un simulateur avant de les exécuter sur du vrai matériel à l'étape suivante.

Au cours de cette étape, les circuits abstraits doivent être transpilés en circuits d'Architecture de Jeu d'Instructions (ISA). Un circuit ISA est un circuit qui ne contient que des portes comprises par le matériel cible (portes de base), et toutes les portes multi-qubits nécessaires pour respecter les contraintes de connectivité (carte de couplage). Seuls les circuits ISA peuvent être exécutés sur le matériel IBM via IBM Qiskit Runtime.

Exécuter sur le matériel cible

Cette étape consiste à exécuter tes circuits sur le matériel et à produire les sorties du calcul quantique. Les circuits ISA produits à l'étape précédente peuvent être exécutés en utilisant soit une primitive Sampler soit une primitive Estimator de Qiskit Runtime, initialisées localement sur ton ordinateur ou depuis un cluster ou un autre environnement de calcul hétérogène. Ceux-ci peuvent être exécutés dans un batch, ce qui permet une transpilation parallèle pour l'efficacité du calcul classique — ou une session, ce qui permet la mise en œuvre efficace de tâches itératives sans délais de file d'attente. Au cours de cette étape, il existe également la possibilité de configurer certaines techniques de suppression et d'atténuation des erreurs fournies par Qiskit Runtime.

Selon que tu utilises la primitive Sampler ou Estimator, le résultat de cette étape sera différent. Si tu utilises le Sampler, la sortie sera des mesures par coup sous forme de chaînes de bits. Si tu utilises l'Estimator, la sortie sera les valeurs d'espérance des observables correspondant à des grandeurs physiques ou à des fonctions de coût.

Post-traiter les résultats

Cette dernière étape consiste à assembler les sorties de l'étape précédente pour obtenir le résultat souhaité. Cela peut impliquer une série d'étapes de traitement classique des données, comme la visualisation des résultats, les techniques d'atténuation des erreurs de lecture, la marginalisation des distributions quasi-probabilistes pour obtenir des résultats sur des sous-ensembles plus petits de qubits, ou la post-sélection sur des propriétés intrinsèques du problème, telles que le spin total, la parité ou la conservation des particules en supprimant les observables non physiques.

À mesure que le domaine passe de la construction de circuits sur mesure aux flux de travail à l'échelle utilitaire, la flexibilité et la facilité avec lesquelles les patrons Qiskit permettent aux utilisateurs de composer les différentes étapes du patron ouvrent le calcul quantique à une grande variété d'applications et de techniques, pour une utilisation aisée par les scientifiques en informatique quantique.