Introduction aux options
Tu peux utiliser des options pour personnaliser les primitives Qiskit Runtime selon tes besoins.
Structure
Lorsque tu appelles les primitives, tu peux transmettre des options en utilisant une classe d'options ou un dictionnaire. Les options couramment utilisées, telles que resilience_level, se trouvent au premier niveau. Les autres options sont regroupées par catégories, par exemple execution. Spécifie les options dans ce format : options.option.sous-option.sous-sous-option = choix. Par exemple : options.dynamical_decoupling.enable = True.
Valeurs par défaut
Si tu ne spécifies pas de valeur pour une option, elle reçoit la valeur spéciale Unset et la valeur par défaut du serveur est utilisée. Ainsi, la valeur par défaut sera la même quelle que soit la version de ton code.
Les tableaux de la section « Résumé des classes d'options » sur le guide « options » de chaque primitive répertorient les valeurs par défaut.
Définir des options
Les options peuvent être définies avant la construction d'une primitive et transmises à celle-ci sous forme d'instance de la classe d'options ou de dictionnaire. La primitive en fait une copie, ce qui signifie que modifier le dictionnaire ou l'instance d'options d'origine n'affecte pas les options dont la primitive est propriétaire.
De plus, tu peux modifier les options après la construction de la primitive. Utilise le flux de travail qui convient le mieux à ton application.
- Tu peux consulter les options disponibles pendant ou après l'initialisation de la primitive.
- Si tu ne spécifies pas de valeur pour une option, elle reçoit la valeur spéciale
Unsetet les valeurs par défaut du serveur sont utilisées. - L'attribut
optionsest de type Pythondataclass. Tu peux utiliser la méthode intégréeasdictpour le convertir en dictionnaire.
Classe options
Lors de la création d'une instance de la classe primitive, tu peux transmettre une instance de la classe options. Ces options sont ensuite appliquées lorsque tu utilises run() pour effectuer le calcul. Spécifie les options dans ce format : options.option.sous-option.sous-sous-option = choix. Par exemple : options.dynamical_decoupling.enable = True.
Consulte SamplerOptions ou EstimatorOptions pour tous les détails sur la classe.
L'exemple suivant utilise la primitive Estimator, mais la syntaxe pour les autres primitives est similaire.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
Dictionnaire
Tu peux spécifier les options sous forme de dictionnaire lors de l'initialisation d'une primitive.
L'exemple suivant utilise la primitive Estimator, mais la syntaxe pour les autres primitives est similaire.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
Mettre à jour les options après l'initialisation
Tu peux spécifier les options dans ce format : _primitive_.options.option.sous-option.sous-sous-option = choix pour profiter de l'auto-complétion, ou utiliser la méthode update() pour effectuer des mises à jour groupées.
La classe d'options de la primitive (EstimatorOptions ou SamplerOptions) n'a pas besoin d'être instanciée si tu définis les options après l'initialisation de la primitive.
L'exemple suivant utilise la primitive Estimator, mais la syntaxe pour les autres primitives est similaire.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
Étapes suivantes
- Trouve des détails sur la façon de configurer la suppression d'erreurs et la mitigation d'erreurs.
- En savoir plus sur les options d'Estimator.
- En savoir plus sur les options de Sampler.
- En savoir plus sur les options d'Executor.