Saltar al contenido principal
Este proyecto está en fase beta. ¿Encontraste un error? Abre un issue en GitHub. ¿Tienes una pregunta o una idea? Pregunta en Discussions — ¡nos encantaría tu opinión!
¿Cómo es la calidad de la traducción en esta página?

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.47.0

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 personalizada de gestión de ruido para ver un ejemplo de cómo habilitar estas técnicas.

Desacoplamiento dinámico

Cómo habilitarlo: options.dynamical_decoupling.enable = True

Referencia de la API: DynamicalDecouplingOptions

Opciones destacadas: sequence_type

Pauli twirling

Cómo habilitarlo: options.twirling.enable_gates = True

Referencia de la API: TwirlingOptions

Opciones destacadas: num_randomizations, shots_per_randomization

TREX

Cómo habilitarlo: options.resilience.measure_mitigation = True

Referencia de la API: MeasureNoiseLearningOptions

Opciones destacadas:

ZNE

Cómo habilitarlo: options.resilience.zne_mitigation = True

Referencia de la API: ZneOptions

Opciones destacadas: noise_factors, extrapolator

PEA

Cómo habilitarlo: (también debes habilitar ZNE) options.resilience.zne_mitigation = True y options.resilience.zne.amplifier = "pea"

Referencia de la API: ZneOptions

Opciones destacadas: noise_factors, extrapolator

PEC

Cómo habilitarlo: options.resilience.pec_mitigation = True

Referencia de la API: PecOptions

Opciones destacadas: max_overhead

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 resilienciaDescripciónTécnica
0Sin mitigaciónNinguna
1 [Predeterminado]Costos mínimos de mitigación: Mitiga el error asociado con errores de lecturaTwirling de medición Twirled Readout Error eXtinction (TREX)
2Costos 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
Atención

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 gestión de ruido personalizada.

Importante

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 — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import 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.

Notas

Ejemplo completo con varias opciones​

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import 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​

Recomendaciones