Configurar la gestión de ruido con Estimator
Versiones de paquetes
El código de esta página fue desarrollado con los siguientes requisitos. Recomendamos usar estas versiones o más recientes.
qiskit-ibm-runtime~=0.46.1
Hay varias formas de gestionar el ruido, generalmente usando diversas técnicas de mitigación y supresión de errores para evitar errores antes de que ocurran. Estas técnicas suelen generar una sobrecarga de preprocesamiento. Por ello, es importante lograr un equilibrio entre perfeccionar los resultados y garantizar que el trabajo se complete en un tiempo razonable.
Estimator admite las siguientes técnicas de gestión de ruido. Consulta Técnicas de mitigación y supresión de errores para ver una explicación de cada una. Consulta la sección Configuración de error personalizada para ver instrucciones sobre cómo habilitar estas técnicas.
Nivel de resiliencia
El resilience_level especifica cuánta resiliencia se debe construir frente a los errores. Los niveles más altos generan resultados más precisos, a costa de tiempos de procesamiento más largos. Los niveles de resiliencia se pueden usar para configurar el equilibrio costo/precisión al aplicar la gestión de ruido a tu consulta primitiva. La gestión de ruido reduce los errores (sesgo) en los resultados procesando las salidas de una colección, o conjunto, de circuits relacionados. El grado de reducción de errores depende del método aplicado. El nivel de resiliencia abstrae la elección detallada del método de gestión de ruido para permitir a los usuarios razonar sobre el equilibrio costo/precisión que es apropiado para su aplicación.
Dado esto, cada nivel corresponde a un método o métodos con nivel creciente de sobrecarga de muestreo cuántico para permitirte experimentar con diferentes compensaciones tiempo-precisión. La siguiente tabla muestra qué niveles y métodos correspondientes están disponibles para cada uno de los primitivos.
| Nivel de resiliencia | Descripción | Técnica |
|---|---|---|
| 0 | Sin mitigación | Ninguna |
| 1 [Predeterminado] | Costos mínimos de mitigación: Mitiga el error asociado con errores de lectura | Twirling de medición Twirled Readout Error eXtinction (TREX) |
| 2 | Costos de mitigación medios. Típicamente reduce el sesgo en los estimadores, pero no está garantizado que sea de sesgo cero. | Nivel 1 + Zero Noise Extrapolation (ZNE) y gate twirling |
Los niveles de resiliencia se encuentran actualmente en beta, por lo que la sobrecarga de muestreo y la calidad de la solución variarán de circuit a circuit. Las nuevas funciones, opciones avanzadas y herramientas de gestión se lanzarán de forma continua. No se garantiza que se apliquen métodos específicos de gestión de ruido en cada nivel de resiliencia.
Configurar Estimator con niveles de resiliencia
Puedes usar los niveles de resiliencia para especificar técnicas de gestión de ruido, o puedes establecer técnicas personalizadas individualmente como se describe en Configuración de error personalizada.
Cualquier opción que especifiques manualmente además del nivel de resiliencia se aplica en adición al conjunto base de opciones definido por el nivel de resiliencia. Por lo tanto, en principio, podrías establecer el nivel de resiliencia en 1, pero luego desactivar la mitigación de medición, aunque esto no es aconsejable.
Por ejemplo, establecer el nivel de resiliencia en 0 desactiva zne_mitigation, pero estimator.options.resilience.zne_mitigation = True anula ese valor.
Ejemplo
El siguiente código habilita ZNE, TREX y gate twirling estableciendo resilience_level 2.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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 primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
Configuración personalizada de gestión de ruido
Puedes activar y desactivar métodos individuales de gestión de ruido usando las opciones de Estimator.
No todas las opciones funcionan juntas en todos los tipos de circuits. Consulta la tabla de compatibilidad de funciones para más detalles.
Ejemplo
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(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
Desactivar toda la mitigación de errores
Para ver instrucciones sobre cómo desactivar toda la mitigación de errores, consulta la sección Desactivar toda la supresión y mitigación de errores en la guía de opciones de Estimator.
Próximos pasos
- Trabaja con un ejemplo que usa mitigación de errores en la lección de función de costo en IBM Quantum Learning.
- Aprende más sobre técnicas de mitigación y supresión de errores.
- Explora las opciones de Estimator.
- Decide en qué modo de ejecución ejecutar tu trabajo.