ZneOptions
class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)
Bases : object
Options d'atténuation de l'extrapolation du bruit zéro. Ce paramètre n'est utilisé que par l'estimateur V2.
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 :
-
pub_result.data.evs_extrapolated et pub_result.data.stds_extrapolated,
tous deux de forme
(*shape, num_extrapolators, num_evaluation_points), oùnum_extrapolatorsest la longueur de la listeoptions.resilience.zne.extrapolators, etnum_evaluation_pointsest la longueur de la listeoptions.resilience.extrapolated_noise_factors. Ces valeurs fournissent des évaluations de chaque extrapolateur pour chaque valeur d'extrapolation du bruit spécifiée. -
pub_result.data.evs_noise_factors,pub_result.data.stds_noise_factors, etensemble_stds_noise_factorsont tous la forme(*shape, num_noise_factors)oùnum_noise_factorsest la longueur deoptions.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_factorsest dérivé de l'étalement sur les échantillons tournoyants, tandis queensemble_stds_noise_factorssuppose 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
- 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
LayerNoiseLearningOptionspour 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 exponentielledéfini comme suit : , où est la valeur au bruit nul ( ) et 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 :.
"linear"ce qui est équivalent à"polynomial_degree_1".
"fallback", qui renvoie simplement les données brutes correspondant au niveau de bruit le plus faiblefacteur (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