Référence de l'API QESEM de Qedma
Qiskit Functions — des outils prêts à l'emploi développés par des organisations partenaires — permettent d'abstraire certaines étapes du processus de développement logiciel afin de simplifier et d'accélérer la découverte d'algorithmes et le développement d'applications à grande échelle. Cliquez ici pour consulter le guide de cette fonction Qiskit.
Guide des fonctions QESEM Qiskit
Entrées
pubs
Type : EstimatorPubLike
Il s'agit de l'entrée principale. Il Pub comprend 2 à 4 éléments : un circuit, une ou plusieurs grandeurs observables, 0 ou un seul ensemble de valeurs de paramètres, ainsi qu'une précision facultative. Si aucune précision n'a été spécifiée, c'est celle default_precision de from options qui sera utilisée.
La précision de l' PUB e peut être soit un nombre à virgule flottante, soit un dictionnaire. Un nombre à virgule flottante définit la précision cible des valeurs attendues renvoyées. Un dictionnaire établit une correspondance entre les facteurs d'échelle du bruit et les précisions cibles, et fournit les résultats du réglage quasi-probabiliste des erreurs (QET) aux échelles spécifiées.
QESEM renverra également des facteurs d'échelle complémentaires autour de 1.0; la précision visée n'est garantie que pour les facteurs d'échelle demandés.
- Obligatoire : oui
- Exemple:
[(circuit, [obs1,obs2,obs3], parameter_values, 0.03)] - Exemple de QET :
[(circuit, [obs1, obs2], None, {0.5: 0.15, 1.3: 0.2})]
backend_name
Type: `str`
Valeur par défaut: QESEM will get least busy device reported by IBM
Nom du backend à utiliser
- Obligatoire : Non
- Exemple:
"ibm_fez"
instance
Type: `str`
Le nom de la ressource cloud de l'instance à utiliser dans ce format
- Obligatoire : Non
- Exemple:
"CRN"
Options
Type: `dict`
Les paramètres de cette fonction sont définis sous la forme d'un dictionnaire imbriqué. Consultez la liste complète des options et leurs valeurs par défaut.
- Obligatoire : Non
- Exemple:
{ "default_precision": 0.03, "max_execution_time": 3600, "transpilation_level": "standard"}
Liste des options
estimate_time_only
Valeur par défaut: None
Cet indicateur permet aux utilisateurs d'obtenir une estimation du temps de calcul nécessaire pour exécuter le circuit avec QESEM.
- Si l'option est réglée sur « Aucun », le circuit sera exécuté avec QESEM.
- Si cette option est activée
"analytical", une limite supérieure du temps d'exécution sur le QPU est calculée sans consommer de ressources du QPU. Cette estimation est exprimée par tranches de 30 minutes (par exemple, 30 minutes, 60 minutes, 90 minutes, etc.). Elle est généralement pessimiste et ne peut être obtenue que pour des observables de Pauli isolées ou des sommes d'observables de Pauli dont les supports ne se recoupent pas (par exemple, Z0+Z1 ). Il sert principalement à comparer les niveaux de complexité des différents paramètres fournis par l'utilisateur (circuit, précision, etc.). - Pour obtenir une estimation plus précise du temps d'exécution du QPU, activez
"empirical"cet indicateur. Bien que cette option nécessite d'exécuter un petit nombre de cycles, elle fournit une estimation du temps d'exécution du QPU nettement plus précise. Cette estimation est exprimée par tranches de 5 minutes (par exemple, 20 minutes, 25 minutes, 30 minutes, etc.). L'utilisateur peut choisir d'exécuter l'estimation empirique du temps soit en mode batch, soit en mode session. Pour plus de détails, veuillez consulter laexecution_modedescription. Par exemple, en mode batch, l'estimation empirique de la durée prendra moins de 10 minutes de temps de calcul sur le QPU. - Options :
"analytical"/"empirical"/ Aucune
default_precision
Valeur par défaut: 0.02
S'appliquera aux pubs cas où la précision fait défaut. La précision correspond à l'erreur admissible sur les valeurs attendues des observables, exprimée en valeur absolue. Plus précisément, la durée d'exécution de la QPU pour l'atténuation sera déterminée de manière à fournir des valeurs de sortie pour toutes les observables d'intérêt qui se situent dans un intervalle de confiance de 1 par rapport à la précision cible. Si plusieurs grandeurs observables sont fournies, l'atténuation se poursuivra jusqu’à ce que la précision cible soit atteinte pour chacune des grandeurs observables d’entrée.
- Valeurs : 0 < nombre à virgule flottante
max_execution_time
Valeur par défaut: 3,600 (one hour)
Vous permet de limiter la durée d'utilisation du QPU, exprimée en secondes, pour l'ensemble du processus QESEM. La valeur par défaut est de 3 600 secondes (une heure).
Étant donné que la durée totale de calcul du QPU nécessaire pour atteindre la précision cible est déterminée de manière dynamique au cours de la tâche QESEM, ce paramètre vous permet de limiter le coût de l'expérience. Si la durée d'utilisation du QPU déterminée dynamiquement est inférieure à la durée allouée par l'utilisateur, ce paramètre n'aura aucune incidence sur l'expérience. Ce max_execution_time paramètre s'avère particulièrement utile lorsque l'estimation du temps d'analyse fournie par QESEM avant le lancement de la tâche est trop pessimiste et que l'utilisateur souhaite tout de même lancer une tâche d'atténuation. Une fois le délai écoulé, QESEM cesse d'envoyer de nouveaux circuits. Les circuits déjà envoyés continuent de s'exécuter (de sorte que la durée totale peut dépasser la limite de 30 minutes au maximum), et l'utilisateur reçoit les résultats traités correspondant aux circuits qui se sont exécutés jusqu'à ce moment-là. Si vous souhaitez définir une limite de temps QPU inférieure à l'estimation du temps de calcul, veuillez contacter Qedma afin d'obtenir une estimation de la précision pouvant être atteinte dans le délai imparti.
- Valeurs possibles : 0 ≤ nombre entier ≤ 28 800 (8 heures)
transpilation_level
Valeur par défaut: standard
Une fois qu'un circuit est soumis à QESEM, celui-ci génère automatiquement plusieurs transcriptions alternatives du circuit et choisit celle qui minimise le temps de calcul sur le QPU. Par exemple, d'autres implémentations pourraient recourir à des portes RZZ fractionnaires optimisées selon la méthode Qedma afin de réduire la profondeur du circuit. Bien sûr, toutes les transpositions sont équivalentes au circuit d'entrée, en ce qui concerne leur sortie idéale. Pour mieux contrôler la transpilation du circuit, définissez le niveau de transpilation dans le fichier options. Alors que "transpilation_level": "standard" correspond au comportement par défaut décrit ci-dessus, "transpilation_level": "minimal_with_layout_opt" n'apporte que les modifications minimales nécessaires au circuit d'origine; par exemple, la mise en correspondance du circuit avec le graphe de connectivité du dispositif. Il convient de noter qu'un mappage matériel automatique vers des qubits haute fidélité est appliqué dans tous les cas.
transpilation_level | Description |
|---|---|
| « standard » | Transpilation QESEM par défaut. Prépare plusieurs transpositions alternatives et choisit celle qui minimise le temps de calcul. Les barrières peuvent être modifiées lors de l'étape de stratification. |
| « minimal_with_layout_opt » | Transpilation minimale : le circuit simplifié ressemblera étroitement, sur le plan structurel, au circuit d'entrée. Les circuits fournis dans ce niveau doivent correspondre à l'ensemble de portes de base du dispositif; vous devez donc transposer séparément votre circuit vers l'ensemble de portes de base du dispositif. Par exemple : CX, Rzz(α) et les portes standard à un qubit (U, x, sx, rz, etc.). Les barrières seront respectées lors de l'étape de stratification. |
Pour les tâches comportant plusieurs PUB d'entrée ou plusieurs instances de circuit liées à des paramètres, utilisez "minimal_with_layout_opt".
- Options : « minimal_with_layout_opt » / « standard »
execution_mode
Valeur par défaut: batch
L'utilisateur peut choisir d'exécuter la tâche QESEM soit dans une session dédiée de l' IBM, soit en plusieurs lots de l' IBM :
-
Mode session : les sessions sont plus coûteuses, mais permettent d'obtenir des résultats plus rapidement. Une fois la session lancée, le QPU est réservé exclusivement au travail QESEM. Le calcul de la durée d'exécution tient compte à la fois du temps consacré à l'exécution du QPU et des calculs classiques associés (effectués par QESEM et IBM ). La fonction QESEM Qiskit se charge automatiquement de créer et de fermer la session. Pour les utilisateurs disposant d'un accès illimité aux QPU (par exemple, dans le cadre d'installations sur site), il est recommandé d'utiliser le mode session afin d'accélérer l'exécution de QESEM.
-
Mode batch : en mode batch, le QPU est libéré pendant les calculs classiques, ce qui réduit son utilisation. Comme les tâches par lots s'étendent généralement sur une période plus longue, le risque de dérives matérielles est plus élevé; QESEM intègre des mesures permettant de détecter et de compenser ces dérives, garantissant ainsi la fiabilité lors d'exécutions prolongées.
-
Choix :
"session"/"batch"
parallel_execution
Valeur par défaut: True
Cet indicateur permet à l'utilisateur d'exécuter le circuit d'entrée en parallèle sur le QPU. QESEM vérifie si les autres correctifs présents sur le QPU présentent une fidélité suffisante. Si ces patchs permettent de réduire le temps d'exécution du QPU, QESEM exécute le circuit d'entrée sur ces patchs en parallèle. Les résultats issus des patches sont combinés à l'aide d'une pondération par la variance inverse.
-
Exemple : un utilisateur souhaite exécuter un circuit de 8 qubits sur
ibm_marrakesh, un dispositif de 156 qubits, avecparallel_execution=True. QESEM crée neuf copies du circuit transpilé, chacune étant associée à un patch distinct de 8 qubits sur le graphe de connectivité de Marrakesh. Une fois l'exécution terminée, l'utilisateur obtient une valeur attendue et une barre d'erreur pour chaque observable d'entrée. -
Choix :
"False"/"True"
description
Valeur par défaut: None
Description facultative à associer à la tâche QESEM.
L'estimation du temps d'exécution du QPU varie d'un backend à l'autre. Par conséquent, lorsque vous exécutez la fonction QESEM, veillez à la lancer sur le même backend que celui sélectionné lors de l'obtention de l'estimation du temps de calcul sur le QPU.
QESEM s'arrêtera lorsqu'il aura atteint la précision souhaitée ou lorsqu'il aura atteint max_execution_time, selon la première éventualité.
Les opérations de barrière sont généralement utilisées pour définir les couches des portes à deux qubits dans les circuits quantiques. Grâce à "minimal_with_layout_opt", QESEM conserve les couches définies par les barrières. Avec "standard", les couches spécifiées par les barrières sont considérées comme une alternative de transpilation lors de l'optimisation du temps d'exécution sur le QPU.
Sorties
La fonction QESEM génère un fichier PrimitiveResultcontenant un enregistrement PubResult par entrée PUB, ainsi que des métadonnées au niveau de la tâche.
Chacun d'entre eux PubResult est accessible par indexation et contient un champ data``PrimitiveResult et un metadata champ.
-
Ce
datachamp contient au moins un tableau de valeurs attendues (PubResult.data.evs) et un tableau d'erreurs-types (PubResult.data.stds). Il peut également contenir d'autres données, selon les options utilisées. -
Ce
metadatachamp contient des métadonnées au niveau de l' PUB (PubResult.metadata), notamment les résultats détaillés de QESEM et les indicateurs d'exécution.
Les champs les plus courants PubResult.metadata sont les suivants :
Zone | Description |
|---|---|
results | Résultats du QESEM par circuit et par grandeur observable. |
noisy_results | Valeurs attendues non pondérées et barres d'erreur, lorsqu'elles sont disponibles. |
transpiled_circs | Informations sur le circuit transpilé, notamment les correspondances entre qubits et le nombre de bases de mesure. |
total_qpu_time | Temps CPU utilisé par le travail. |
gate_fidelities | Fidélités des portes mesurées au cours de l'expérience. |
total_shots | Nombre total de prises utilisées pour cette mission. |
mitigation_shots | Nombre de tirs utilisés à des fins d'atténuation. |
resource_usage | Répartition de l'utilisation des ressources pour la tâche. |
Les détails du modèle QESEM par observable sont stockés dans metadata["results"]. Les résultats sont d'abord regroupés par instance de circuit, puis par grandeur observable.
Chaque entrée observable peut inclure le résultat QESEM (qesem), le résultat non corrigé (unmitigated), les résultats de mise à l'échelle du bruit (noise_scaling) et les résultats heuristiques QESEM (qesem_heuristic).