Skip to main content
IBM Quantum Platform

Introduction aux options

Vous pouvez utiliser des options pour personnaliser les primitives d' IBM Quantum s en fonction de vos besoins.


Structure

Lorsque vous appelez les fonctions primitives, vous pouvez leur transmettre des options à l'aide d'une classe d'options ou d'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, telles que execution. Indiquez les options sous ce format : options.option.sub-option.sub-sub-option = choice. Par exemple : options.dynamical_decoupling.enable = True.


Valeurs par défaut

Si vous ne spécifiez pas de valeur pour une option, une valeur spéciale de Unset lui est attribuée 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 votre code.

Les tableaux figurant dans la section « Récapitulatif des classes d'options » du guide « Options » de chaque primitive répertorient les valeurs par défaut.


Définir les options

Les options peuvent être définies avant la création d'une primitive et transmises à celle-ci sous la forme d'une instance de la classe d'options ou d'un dictionnaire. La primitive en fait une copie, ce qui signifie que toute modification apportée au dictionnaire ou à l'instance d'options d'origine n'affecte pas les options gérées par la primitive.

De plus, vous pouvez modifier les options une fois la primitive créée. Utilisez le flux de travail le mieux adapté à votre application.

Remarques concernant la définition des options primitives
  • Vous pouvez consulter les options disponibles pendant ou après l'initialisation des primitives.
  • Unset Si vous ne spécifiez pas de valeur pour une option, celle-ci se voit attribuer la valeur spéciale et les paramètres par défaut du serveur sont utilisés.
  • options L'attribut est de dataclass type « Python ». Vous pouvez utiliser la méthode intégrée asdict pour le convertir en dictionnaire.

options Classe

Lorsque vous créez une instance de la classe primitive, vous pouvez lui passer une instance de la options classe. Ces options sont ensuite prises en compte lorsque vous utilisez run() pour effectuer le calcul. Indiquez les options sous ce format : options.option.sub-option.sub-sub-option = choice. Par exemple : options.dynamical_decoupling.enable = True.

Consultez SamplerOptions ou EstimatorOptions pour obtenir tous les détails concernant ce cours.

L'exemple suivant utilise la primitive Estimator, mais la syntaxe est similaire pour les autres primitives.

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

Vous pouvez définir des options sous forme de dictionnaire lors de l'initialisation d'une primitive.

L'exemple suivant utilise la primitive Estimator, mais la syntaxe est similaire pour les autres primitives.

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]},
        },
    },
)

Options de mise à jour après l'initialisation

Vous pouvez définir les options sous ce format : _primitive_.options.option.sub-option.sub-sub-option = choice pour bénéficier de la saisie semi-automatique, ou utiliser la update() méthode pour effectuer des mises à jour groupées.

Il n'est pas nécessaire d'instancier la classe d'options de la primitive (EstimatorOptions ou SamplerOptions) si vous configurez les options après avoir initialisé la primitive.

L'exemple suivant utilise la primitive Estimator, mais la syntaxe est similaire pour les autres primitives.

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}
)

Etapes suivantes

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