Skip to main content
IBM Quantum Platform

Introducción a las opciones

Puedes utilizar las opciones para personalizar las primitivas de « Qiskit Runtime » según tus necesidades.


Estructura

Al llamar a las funciones primitivas, puedes pasar opciones utilizando una clase de opciones o un diccionario. Las opciones más habituales, como resilience_level, se encuentran en el primer nivel. Otras opciones se agrupan en categorías, como execution. Especifica las opciones con este formato: options.option.sub-option.sub-sub-option = choice. Por ejemplo: options.dynamical_decoupling.enable = True.


Valores predeterminados

Si no se especifica un valor para una opción, se le da un valor especial de Unset y se utiliza el valor por defecto del servidor. Así, el valor por defecto será el mismo independientemente de la versión de su código.

Las tablas de la sección «Resumen de clases de opciones» de la guía de «opciones» de cada primitiva recogen los valores predeterminados.


Establecer opciones

Las opciones se pueden definir antes de crear una primitiva y pasarlas a esta como una instancia de la clase de opciones o como un diccionario. La primitiva crea una copia de ellos, lo que significa que modificar el diccionario original o la instancia de opciones no afecta a las opciones que posee la primitiva.

Además, puedes modificar las opciones una vez creada la primitiva. Utiliza el flujo de trabajo que mejor se adapte a tu aplicación.

Notas sobre la especificación de opciones primitivas
  • Puedes ver las opciones disponibles durante o después de la inicialización de las primitivas.
  • Si no se especifica un valor para una opción, se le asigna un valor especial de Unset y se utilizan los valores predeterminados del servidor.
  • El options atributo es de dataclass tipo « Python ». Puedes utilizar el método integrado asdict para convertirlo en un diccionario.

options clase

Al crear una instancia de la clase primitiva, puedes pasar una instancia de la options clase. Esas opciones se aplican cuando utilizas run() para realizar el cálculo. Especifica las opciones con este formato: options.option.sub-option.sub-sub-option = choice. Por ejemplo: options.dynamical_decoupling.enable = True.

Consulte SamplerOptions o EstimatorOptions para obtener toda la información sobre el curso.

En el siguiente ejemplo se utiliza la primitiva «Estimator», pero la sintaxis para otras primitivas es similar.

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)

Diccionario

Al inicializar un tipo primitivo, puedes especificar las opciones en forma de diccionario.

En el siguiente ejemplo se utiliza la primitiva «Estimator», pero la sintaxis para otras primitivas es similar.

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

Opciones de actualización tras la inicialización

Puedes especificar las opciones en este formato: _primitive_.options.option.sub-option.sub-sub-option = choice para aprovechar la función de autocompletado, o utilizar el update() método para realizar actualizaciones masivas.

No es necesario instanciar la clase de opciones de la primitiva (EstimatorOptions o SamplerOptions) si vas a configurar las opciones después de inicializar la primitiva.

En el siguiente ejemplo se utiliza la primitiva «Estimator», pero la sintaxis para otras primitivas es similar.

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

Próximos pasos

Recomendaciones
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.