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.
- 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
Unsety se utilizan los valores predeterminados del servidor. - El
optionsatributo es dedataclasstipo « Python ». Puedes utilizar el método integradoasdictpara 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
- Consulte los detalles sobre cómo configurar la supresión y la mitigación de errores.
- Más información sobre las opciones de Estimator.
- Más información sobre las opciones de Sampler.
- Más información sobre las opciones de Executor.