Aller au contenu principal

Modèle d'exécution dirigée (bêta)

Version bêta

Tous les composants du modèle d'exécution dirigée sont actuellement en bêta et peuvent ne pas être stables. Tu es invité(e) à les tester et à fournir des retours en ouvrant une issue dans les dépôts GitHub de Samplomatic ou de Qiskit Runtime.

Les interfaces primitives Sampler et Estimator fournissent une abstraction de plus haut niveau permettant aux développeurs d'algorithmes de se concentrer davantage sur l'innovation et moins sur la conversion des données. Cependant, elles sont moins adaptées aux scientifiques de l'information quantique, qui ont besoin de plus de contrôle et de flexibilité pour leurs expériences à l'échelle utilitaire. Le modèle d'exécution dirigée, actuellement en version bêta, répond à ce besoin. Ce modèle d'exécution fournit les ingrédients nécessaires pour capturer les intentions de conception côté client, et transfère la génération coûteuse des variantes de circuits côté serveur, afin que tu puisses affiner l'atténuation des erreurs et d'autres techniques sans sacrifier les performances. Ce modèle explicite et composable facilite l'expérimentation de nouvelles techniques, la reproduction des résultats et le partage des méthodes.

Dans sa version bêta, le modèle d'exécution dirigée se concentre sur le fait de te donner le contrôle sur les techniques intégrées aux Sampler et Estimator existants, notamment le twirling de Pauli, l'apprentissage et l'injection de modèles de bruit, et les changements de base. La prise en charge d'autres fonctionnalités sera ajoutée progressivement au fil du temps.

Flux de travail

L'un des objectifs principaux du modèle d'exécution dirigée est de fournir une façon modulaire d'appliquer des méthodes d'atténuation des erreurs. Par exemple, tu peux définir quelles couches du circuit atténuer, ou ajuster les taux de bruit injectés dans le circuit.

Pour appliquer l'atténuation des erreurs à un circuit dans ce cadre, ton flux de travail impliquera généralement les étapes suivantes (les outils mentionnés ici sont décrits plus en détail dans la section suivante) :

  1. Regroupe les instructions dans des boîtes et applique-leur des annotations. Les annotations capturent la transformation prévue sans générer réellement les variantes de circuits.

  2. Apprends les modèles de bruit des couches uniques, si nécessaire, en utilisant le nouveau NoiseLearnerV3.

  3. Construis le circuit modèle et le samplex à partir du circuit encadré.

  4. Exécute le circuit modèle et le samplex avec la primitive Executor, qui générera et exécutera les variantes de circuits selon les instructions.

  5. Post-traite les résultats d'exécution. Par exemple, tu peux appliquer une post-sélection, ou extrapoler les valeurs d'espérance atténuées à partir des résultats d'exécution.

Outils pour le modèle d'exécution dirigée

Les outils suivants peuvent être utilisés conjointement pour implémenter une technique d'atténuation des erreurs dans le modèle d'exécution dirigée.

Samplomatic

Samplomatic est une nouvelle bibliothèque open source qui prend en charge les randomisations d'échantillonnage personnalisées. Elle utilise la construction box pour raisonner sur des collections d'opérations de circuit qui doivent être traitées comme ayant un contexte de bruit stable, et utilise des annotations sur les boîtes pour te permettre de déclarer et de configurer des intentions. Par exemple, tu peux stratifier ton circuit en boîtes, ajouter une annotation de twirling à chaque boîte, et spécifier quel groupe de twirling utiliser, comme illustré dans la figure suivante :

Exemple d'utilisation de boîtes et d'annotations de twirling

Un circuit avec des boîtes annotées peut ensuite être utilisé pour générer un circuit modèle et un samplex. Le circuit modèle en sortie est un circuit paramétrique qui sera exécuté sans modification ultérieure (sauf pour l'attribution de différentes valeurs de paramètres). Le samplex, qui est le type central de la bibliothèque Samplomatic, représente une distribution de probabilité paramétrique sur les paramètres du circuit modèle et d'autres champs à valeurs vectorielles. Ces champs peuvent être utilisés pour post-traiter les données collectées lors de l'exécution du circuit modèle lié. En d'autres termes, la paire circuit modèle et samplex indique à la primitive Executor (décrite ci-dessous) exactement quels paramètres générer et quels circuits liés exécuter. Comme ces deux constructions sont créées côté client, tu peux effectuer une inspection locale et un échantillonnage pour vérifier les sorties avant de les envoyer pour exécution sur le matériel.

Pour simplifier le processus de génération de boîtes annotées, la bibliothèque Samplomatic fournit également des passes du transpiler qui regroupent automatiquement les instructions de circuits dans des boîtes annotées, selon les stratégies que tu fournis.

Pour en savoir plus sur Samplomatic, consulte la documentation des guides et de la référence API. N'hésite pas à soumettre des retours et à signaler des bugs dans son dépôt GitHub.

Primitive Executor

Executor est une nouvelle primitive Qiskit Runtime qui prend en entrée la paire circuit modèle et samplex, génère et lie des valeurs de paramètres selon le samplex, exécute les circuits liés sur le matériel, et retourne les résultats d'exécution et les métadonnées. Elle suit les directives de la paire en entrée et ne prend aucune décision implicite pour toi, de sorte que le processus soit transparent tout en étant performant.

Pour accéder à Executor, installe la branche executor_preview depuis qiskit-ibm-runtime :

pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview

Les entrées et la sortie de la primitive Executor sont très différentes de celles de Sampler et Estimator. Consulte la référence API d'Executor pour plus d'informations. De plus, le guide de démarrage rapide d'Executor fournit une vue d'ensemble et des exemples de code.

NoiseLearnerV3

Similaire au NoiseLearner actuel, ce programme auxiliaire Qiskit Runtime retourne le modèle de bruit de Pauli-Lindblad épars utilisé dans de nombreuses méthodes d'atténuation des erreurs, notamment PEC, PEA, et PNA. Dans le NoiseLearner d'origine, tu passes une liste de circuits, et le programme stratifie les circuits en couches et retourne le modèle de bruit pour chaque couche unique. NoiseLearnerV3, en revanche, te donne le contrôle sur la façon de stratifier tes circuits, et le programme prend simplement une liste d'instructions de circuits encadrés (par exemple, des couches uniques) comme entrées.

NoiseLearnerV3 prend également en charge l'apprentissage du bruit de mesure. Pour chaque ensemble d'instructions dans la liste d'entrée, il exécute le protocole d'apprentissage de Pauli-Lindblad si l'ensemble contient des portes à un et deux qubits, et le protocole TREX si l'ensemble contient des mesures. Pour accéder à NoiseLearnerV3, installe la branche executor_preview depuis qiskit-ibm-runtime :

pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview

Pour en savoir plus sur NoiseLearnerV3, consulte sa documentation de référence API.

Étapes suivantes

Recommandations