Aller au contenu principal
Ce projet est en phase bêta. Tu as trouvé un bug ? Ouvrir un ticket GitHub. Une question ou une idée ? Pose ta question dans Discussions — tes retours sont les bienvenus !
Quelle est la qualité de la traduction sur cette page ?

Configurer la gestion du bruit avec Estimator

Versions des packages

Le code sur cette page a été développé en utilisant les exigences suivantes. Nous recommandons d'utiliser ces versions ou des versions plus récentes.

qiskit-ibm-runtime~=0.47.0

Il existe plusieurs façons de gérer le bruit, généralement en utilisant diverses techniques d'atténuation et de suppression d'erreurs pour éviter les erreurs avant qu'elles ne se produisent. Ces techniques entraînent généralement une surcharge de pré-traitement. Par conséquent, il est important d'atteindre un équilibre entre la perfection de tes résultats et la garantie que ton job se termine dans un délai raisonnable.

Estimator prend en charge les techniques de gestion du bruit suivantes. Consulte Techniques d'atténuation et de suppression d'erreurs pour une explication de chacune. Consulte la section Paramètres de gestion du bruit personnalisés pour un exemple d'activation de ces techniques.

Découplage dynamique

Comment l'activer : options.dynamical_decoupling.enable = True

Référence de l'API : DynamicalDecouplingOptions

Options notables : sequence_type

Twirling de Pauli

Comment l'activer : options.twirling.enable_gates = True

Référence de l'API : TwirlingOptions

Options notables : num_randomizations, shots_per_randomization

TREX

Comment l'activer : options.resilience.measure_mitigation = True

Référence de l'API : MeasureNoiseLearningOptions

Options notables :

ZNE

Comment l'activer : options.resilience.zne_mitigation = True

Référence de l'API : ZneOptions

Options notables : noise_factors, extrapolator

PEA

Comment l'activer : (il faut aussi activer ZNE) options.resilience.zne_mitigation = True et options.resilience.zne.amplifier = "pea"

Référence de l'API : ZneOptions

Options notables : noise_factors, extrapolator

PEC

Comment l'activer : options.resilience.pec_mitigation = True

Référence de l'API : PecOptions

Options notables : max_overhead

Niveau de résilience​

Le resilience_level spécifie la résilience à construire contre les erreurs. Des niveaux plus élevés génèrent des résultats plus précis, au prix de temps de traitement plus longs. Les niveaux de résilience peuvent être utilisés pour configurer le compromis coût/précision lors de l'application de la gestion du bruit à ta requête de primitive. La gestion du bruit réduit les erreurs (biais) dans les résultats en traitant les sorties d'une collection, ou d'un ensemble, de circuits apparentés. Le degré de réduction des erreurs dépend de la méthode appliquée. Le niveau de résilience abstrait le choix détaillé de la méthode de gestion du bruit pour permettre aux utilisateurs de raisonner sur le compromis coût/précision approprié à leur application.

Compte tenu de cela, chaque niveau correspond à une méthode ou à des méthodes avec un niveau croissant de surcharge d'échantillonnage quantique pour te permettre d'expérimenter avec différents compromis temps-précision. Le tableau suivant te montre quels niveaux et méthodes correspondantes sont disponibles pour chacune des primitives.

Niveau de résilienceDescriptionTechnique
0Aucune atténuationAucune
1 [Par défaut]Coûts d'atténuation minimaux : Atténuer les erreurs associées aux erreurs de lectureTwirling de mesure Twirled Readout Error eXtinction (TREX)
2Coûts d'atténuation moyens. Réduit généralement le biais dans les estimateurs, mais n'est pas garanti d'être sans biais.Niveau 1 + Extrapolation zéro-bruit (ZNE) et twirling de portes
Attention

Les niveaux de résilience sont actuellement en version bêta, donc la surcharge d'échantillonnage et la qualité de la solution varieront d'un circuit à l'autre. De nouvelles fonctionnalités, des options avancées et des outils de gestion seront publiés en continu. Les méthodes spécifiques de gestion du bruit ne sont pas garanties d'être appliquées à chaque niveau de résilience.

Configurer Estimator avec des niveaux de résilience​

Tu peux utiliser des niveaux de résilience pour spécifier des techniques de gestion du bruit, ou tu peux définir des techniques personnalisées individuellement comme décrit dans Paramètres de gestion du bruit personnalisés.

Important

Toutes les options que tu spécifies manuellement en plus du niveau de résilience sont appliquées en plus de l'ensemble d'options de base définies par le niveau de résilience. Par conséquent, en principe, tu pourrais définir le niveau de résilience à 1, mais ensuite désactiver l'atténuation de mesure, bien que cela ne soit pas conseillé.

Par exemple, définir le niveau de résilience à 0 désactive zne_mitigation, mais estimator.options.resilience.zne_mitigation = True remplace cette valeur.

Exemple​

Le code suivant active ZNE, TREX et le twirling de portes en définissant resilience_level 2.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})

Paramètres de gestion du bruit personnalisés​

Tu peux activer et désactiver individuellement les méthodes de gestion du bruit en utilisant les options Estimator.

Remarques

Exemple complet avec plusieurs options​

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True

print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True

Désactiver toute atténuation d'erreurs​

Pour les instructions pour désactiver toute atténuation d'erreurs, consulte la section Désactiver toute suppression et atténuation d'erreurs dans le guide des options Estimator.

Étapes suivantes​

Recommandations