Référence de l'API Algorithmiq pour l'atténuation des erreurs dans les réseaux Tensor
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 Algorithmiq TEM Qiskit
Entrées
TEM présente actuellement les limites suivantes :
- Les circuits paramétrés ne sont pas pris en charge. L'argument « parameters » doit être défini sur
Nonesi la précision est spécifiée. Cette restriction sera supprimée dans les prochaines versions. - Seuls les circuits sans boucles sont pris en charge. Cette restriction sera supprimée dans les prochaines versions.
- Les portes non unitaires, telles que les portes de réinitialisation, de mesure et toutes les formes de contrôle de flux, ne sont pas prises en charge. La prise en charge de la réinitialisation sera ajoutée dans les prochaines versions.
Paramètres
pubs
Type: Iterable[EstimatorPubLike]
Une collection d'objets de type « bloc unifié primitif » ( PUB ), tels que des tuples (circuit, observables) ou (circuit, observables, parameters, precision). Pour plus d'informations, consultez la présentation des PUB. Si un circuit non ISA est validé, il sera transcompilé avec des paramètres optimaux. Si un circuit ISA est transmis, il ne sera pas transpilé; dans ce cas, l'observable doit être défini sur l'ensemble du QPU.
- Obligatoire : oui
- Exemple:
(circuit, observables)
backend_name
Type: str
Valeur par défaut: Least busy backend
Nom du backend sur lequel effectuer la requête
- Obligatoire : Non
- Exemple:
"ibm_fez"
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:
{"max_bond_dimension": 100}
Un dictionnaire contenant les options avancées du TEM. Le dictionnaire peut contenir les clés figurant dans la liste suivante. Si l'une des options n'est pas fournie, la valeur par défaut indiquée dans la liste sera utilisée. Les valeurs par défaut conviennent à une utilisation classique de TEM.
Liste des options
tem_max_bond_dimension
Type: int
Valeur par défaut: 500
La dimension maximale des liaisons à utiliser pour les réseaux de tenseurs.
tem_compression_cutoff
Type: float
Valeur par défaut: 1e-16
La valeur seuil à utiliser pour les réseaux de tenseurs.
compute_shadows_bias_from_observable
Type: bool
Valeur par défaut: False
Un indicateur booléen précisant si le biais du protocole classique de mesure des ombres doit être adapté à l'observable « PUB » ou non. Si la valeur est « False », le protocole classique des ombres (probabilité égale de mesurer Z, X, Y) sera utilisé.
shadows_bias
Type: np.ndarray
Valeur par défaut: np.array([1 / 3, 1 / 3, 1 / 3])
Le biais à utiliser pour le protocole de mesure aléatoire des ombres classiques, un tableau de type 1d ou 2d de taille 3 ou de forme (num_qubits, 3) respectivement. L'ordre est ZXY.
max_execution_time
Type: int or None
Valeur par défaut: None
Durée maximale d'exécution sur le QPU, en secondes. Si la durée d'exécution dépasse cette valeur, la tâche sera annulée. Dans ce cas None, la limite par défaut définie par le service Compute d' IBM Quantum s s'appliquera.
num_randomizations
Type: int
Valeur par défaut: 32
Le nombre de randomisations à utiliser pour l'apprentissage du bruit et la rotation des portes.
max_layers_to_learn
Type: int
Valeur par défaut: True
Nombre maximal de couches distinctes à apprendre.
mitigate_readout_error
Type: bool
Valeur par défaut: True
Un indicateur booléen précisant s'il faut ou non appliquer la correction des erreurs de lecture.
num_readout_calibration_shots
Type: int
Valeur par défaut: 10000
Le nombre de mesures à utiliser pour atténuer les erreurs de lecture.
default_precision
Type: float
Valeur par défaut: 0.02
La précision par défaut à utiliser pour les PUB pour lesquels la précision n'est pas spécifiée.
seed
Type: int or None
Valeur par défaut: None
Définissez la graine du générateur de nombres aléatoires pour garantir la reproductibilité. Dans ce cas None, ne définissez pas la graine.
shots_per_randomization
Type: int
Valeur par défaut: 128
Le nombre total de tentatives à utiliser par circuit d'apprentissage aléatoire.
layer_pair_depths
Type: list[int]
Valeur par défaut: [0, 1, 2, 4, 16, 32]
La profondeur des circuits (mesurée en nombre de paires) à utiliser dans les expériences d'apprentissage.
layer_noise_model
Type: NoiseLearnerResult, Sequence[LayerError], or None
Valeur par défaut: None
Le bruit précalculé provient d'un cycle précédemment exécuté.
private
Type: bool
Valeur par défaut: False
Les tâches QPU doivent-elles être privées? Si vous définissez cette option sur « True », cela empêchera tout téléchargement ultérieur des données de l'expérience; cette option est recommandée pour les tâches confidentielles.
tem_enforce_linear_circuit
Type: bool
Valeur par défaut: False
Déterminer s'il faut que le circuit présente une topologie linéaire.
Précision
La précision des résultats peut être demandée de trois manières différentes. La précision peut être spécifiée dans l' PUB, et elle ne s'appliquera qu'à cette PUB. Sinon, on peut passer default_precision un dans les options, comme indiqué ci-dessus. Enfin, pour une utilisation avancée, le nombre précis de tirs par PUB peut être spécifié dans les options. default_shots et elle prévaudra sur toute autre option de précision.
Si une valeur default_precision ou une valeur par é PUB e est fournie, le nombre d'itérations est estimé afin d'atteindre la précision souhaitée. Cette opération s'effectue en fonction des paramètres du QPU et des taux d'erreur choisis, comme suit :
- Calcul de l'erreur par porte superposée (EPLG), qui quantifie le bruit introduit par les couches de portes à deux qubits. Si des propriétés du backend sont disponibles, il extrait la fidélité correspondante; sinon, il utilise une valeur par défaut.
- En comptant le nombre de portes à deux qubits dans le circuit, car ce sont généralement celles qui contribuent le plus au bruit.
- Calcul d'un préfacteur de bruit à partir du nombre de portes à deux qubits et de l'EPLG.
- En utilisant la précision demandée, il estime le nombre de mesures nécessaires en effectuant une mise à l'échelle à l'aide du facteur de bruit et de l'inverse du carré de la précision.
Cette approche garantit que le nombre de tirs est suffisant pour atteindre la précision souhaitée, en tenant compte à la fois de la structure du circuit et des caractéristiques de bruit du backend.
Sorties
Un Qiskit PrimitiveResults contenant le résultat corrigé par TEM. Le résultat pour chaque PUB est renvoyé sous la forme d'un objet PubResult contenant les champs suivants :
données
Type: Databin
Un Qiskit DataBin contenant l'observable corrigée par TEM et son erreur type. Le fichier « DataBin » contient les champs suivants :
evs: La valeur observable corrigée par TEM.stds: L'erreur-type de la grandeur observable corrigée par TEM.
Métadonnées
Type: dict
Un dictionnaire contenant des résultats supplémentaires. Le dictionnaire contient les clés suivantes :
"evs_non_mitigated": La valeur observable sans atténuation des erreurs."stds_non_mitigated": L'erreur type du résultat sans atténuation des erreurs."evs_mitigated_no_readout_mitigation": La valeur observée avec correction des erreurs, mais sans correction des erreurs de lecture."stds_mitigated_no_readout_mitigation": L'erreur type du résultat avec atténuation des erreurs, mais sans atténuation des erreurs de lecture."evs_non_mitigated_with_readout_mitigation": La valeur observée sans correction d'erreur, mais avec correction d'erreur de lecture."stds_non_mitigated_with_readout_mitigation": L'erreur type du résultat sans correction d'erreur, mais avec correction d'erreur de lecture."resource_usage": Un dictionnaire contenant les ressources temporelles utilisées par le TEM.