Skip to main content
IBM Quantum Platform

ZneOptions

class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)

GitHub

Bases : object

Options d'atténuation de l'extrapolation du bruit zéro. Ce paramètre n'est utilisé que par l'estimateur V2.

Remarque

Tout estimateur V2 est assuré de renvoyer des champs de données appelés evs et stds qui indiquent respectivement les estimations et les erreurs de la valeur espérée souhaitée. Lorsque les options ZNE sont activées dans l'estimateur de durée d'exécution, des données supplémentaires sont renvoyées.

En particulier, supposons qu'une pub d'entrée ait une forme de tableau observable obs_shape et une forme de valeurs de paramètres par_shape, avec une forme de pub correspondante shape=np.broadcast_shapes(obs_shape, par_shape). Le résultat de la publication correspondante contiendra alors en plus :

  1. pub_result.data.evs_extrapolated et pub_result.data.stds_extrapolated,

    tous deux de forme (*shape, num_extrapolators, num_evaluation_points), où num_extrapolators est la longueur de la liste options.resilience.zne.extrapolators, et num_evaluation_points est la longueur de la liste options.resilience.extrapolated_noise_factors. Ces valeurs fournissent des évaluations de chaque extrapolateur pour chaque valeur d'extrapolation du bruit spécifiée.

  2. pub_result.data.evs_noise_factors, pub_result.data.stds_noise_factors, et ensemble_stds_noise_factors ont tous la forme (*shape, num_noise_factors)num_noise_factors est la longueur de options.resilience.zne.noise_factors. Ces valeurs fournissent des valeurs d'espérance brutes, moyennées sur le tourbillonnement le cas échéant, à chacune des amplifications du bruit; vous pouvez baser vos propres routines d'ajustement sur ces valeurs. Dans le cas où il n'y a pas de tournoiement, les deux tableaux *stds* seront égaux, sinon, stds_noise_factors est dérivé de l'étalement sur les échantillons tournoyants, tandis que ensemble_stds_noise_factors suppose uniquement un bruit de tir et aucune dérive.

Note technique : pour les observables uniques avec plusieurs termes de base, il peut s'avérer que plusieurs méthodes d'extrapolation sont utilisées dans la même valeur d'espérance, par exemple, XX est extrapolé linéairement mais XY est extrapolé exponentiellement dans l'observable {"XX": 0.5, "XY": 0.5}. C'est ce qu'on appelle une adaptation hétérogène. Les données de (2) sont évaluées à partir d'ajustements hétérogènes en sélectionnant le meilleur ajustement pour chaque terme distinct, tandis que les données de (1) sont évaluées à partir d'ajustements homogènes forcés, un pour chaque extrapolateur fourni. Si votre travail nécessite une distinction nuancée à cet égard, nous vous recommandons actuellement d'utiliser des observables à un seul terme en plus de vos observables à plusieurs termes.

Références

  1. Z. Cai, Multi-exponential error extrapolation and combining error mitigation techniques for NISQ applications, npj Quantum Inf 7, 80 (2021)

Attributs

Paramètres

  • amplifier (UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea'])
  • noise_factors (UnsetType | Sequence[float])
  • extrapolator (UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback'] | ~collections.abc.Sequence[~typing.Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']])
  • extrapolated_noise_factors (UnsetType | Sequence[float])

amplifier

Type : UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea']

Valeur par défaut : Unset

Quelle technique utiliser pour amplifier le bruit.

L'une des entrées suivantes :

  • "gate_folding" (par défaut) utilise le pliage de porte à 2 qubits pour amplifier le bruit. Si le bruit

    ne nécessite l'amplification que d'un sous-ensemble de portes, ces portes sont choisies de manière aléatoire.

  • "gate_folding_front" utilise le pliage de portes à 2 qubits pour amplifier le bruit. Si le bruit

    ne nécessite l'amplification que d'un sous-ensemble de portes, ces portes sont sélectionnées à l'avant du circuit DAG topologiquement ordonné.

  • "gate_folding_back" utilise le pliage de porte à 2 qubits pour amplifier le bruit. Si le bruit

    ne nécessite l'amplification que d'un sous-ensemble de portes, ces portes sont sélectionnées à l'arrière du circuit DAG topologiquement ordonné.

  • pea" utilise une technique appelée "Probabilistic Error Amplification" (amplification probabiliste des erreurs)

    (PEA ) pour amplifier le bruit. Lorsque cette option est sélectionnée, le tournoiement du portail sera toujours utilisé, qu'il ait été activé ou non dans les options. Dans cette technique, le modèle de bruit tourbillonnant de chaque couche unique de portes enchevêtrées dans vos circuits ISA est appris à l'avance LayerNoiseLearningOptions pour les options d'apprentissage correspondantes. Une fois terminés, vos circuits sont exécutés à chaque facteur de bruit, où chaque couche enchevêtrée de vos circuits est amplifiée par l'injection probabiliste d'un bruit de qubit unique proportionnel au modèle de bruit appris correspondant.

extrapolated_noise_factors

Type : UnsetType | Sequence[float]

Valeur par défaut : Unset

Facteurs de bruit pour évaluer l'adéquation des modèles d'extrapolation.

[0, *noise_factors]Si cette option n'est pas définie, la valeur par défaut sera. Cette option n'a aucune incidence sur l'exécution ou l'ajustement du modèle; elle détermine uniquement les points auxquels les extrapolatorvaleurs s sont évaluées pour être renvoyées dans les champs de données appelés evs_extrapolated et stds_extrapolated.

extrapolator

Type : UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback' |] Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']]

Valeur par défaut : Unset

Extrapolateur(s) à essayer (dans l'ordre) pour l'extrapolation à zéro bruit.

Les options disponibles sont les suivantes :

  • "exponential", qui ajuste les données à l'aide d'une fonction d'atténuation exponentielle

    défini comme suit : f(x;A,τ)=Aex/τf(x; A, \tau) = A e^{-x/\tau}, où A=f(0;A,τ)A = f(0; A, \tau) est la valeur au bruit nul ( x=0x=0 ) et τ>0\tau>0 est un taux positif.

  • "double_exponential"qui utilise une somme de deux exponentielles comme dans Ref. 1.

  • "polynomial_degree_(1 <= k <= 7)", qui utilise une fonction polynomiale définie comme suit :

    f(x;c0,c1,,ck)=i=0,kcixif(x; c_0, c_1, \ldots, c_k) = \sum_{i=0, k} c_i x^i.

  • "linear"ce qui est équivalent à "polynomial_degree_1".

  • "fallback", qui renvoie simplement les données brutes correspondant au niveau de bruit le plus faible

    facteur (généralement 1) sans procéder à aucune extrapolation.

Les valeurs extrapolées (evs_extrapolated et stds_extrapolated) sont triées selon l'ordre des extrapolateurs fournis. Si plusieurs extrapolateurs sont spécifiés, les valeurs evs et stds indiquées dans les données du résultat se réfèrent au premier extrapolateur réussi, le succès d'un extrapolateur étant déterminé de manière heuristique.

Valeur par défaut : ("exponential", "linear").

noise_factors

Type : UnsetType | Sequence[float]

Valeur par défaut : Unset

Facteurs de bruit à utiliser pour l'amplification du bruit.

Valeur par défaut : (1, 3, 5).

Type

facteurs_de_bruit


Méthodes

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.