Skip to main content
IBM Quantum Platform

Instrucciones especialmente adaptadas

De forma predeterminada, las puertas cuánticas y las operaciones de lectura de los ordenadores cuánticos de IBM® están calibradas para ofrecer un rendimiento óptimo en los casos de uso más habituales. Sin embargo, algunas cargas de trabajo se benefician de instrucciones cuyos parámetros están ajustados de forma diferente. Por ejemplo, ( MidCircuitMeasuremeasure_2 ) es una operación de lectura diseñada específicamente para realizar mediciones en el centro de un circuito, y las cz puertas más lentas pueden mejorar los resultados de algunos flujos de trabajo de mitigación de errores.

Las instrucciones especialmente calibradas se presentan en dos formatos, y se accede a ellas de forma diferente:

  • Las instrucciones con diferentes firmas se calibran junto con las instrucciones estándar en la calibración predeterminada, por lo que puedes añadirlas a tus circuitos como cualquier otra instrucción. Normalmente se identifican mediante un sufijo, como por ejemplo measure_2.
  • Las calibraciones alternativas sustituyen partes de la calibración predeterminada por parámetros ajustados de forma diferente. Se selecciona uno pasando un calibration_id al recuperar el backend.

Para saber cómo se calibran los ordenadores cuánticos de IBM, consulta «Supervisar, calibrar y evaluar el rendimiento ».


Instrucciones con diferentes firmas

Estas instrucciones están calibradas con el conjunto de instrucciones estándar, por lo que no es necesario realizar ningún paso especial para obtener un backend que las admita. Para utilizar uno, añade la instrucción qiskit-ibm-runtime correspondiente a tu circuito.

Instrucción
Descripción
Caso de uso típico
Uso en Qiskit
Familia del procesador
measure_2Pulso de medición más cortoMediciones a mitad del circuitoMidCircuitMeasure (versión v0.43.0 o posterior)Garza, Chotacabras r2
reset_2Un pulso de reinicio condicional más corto que utiliza measure_2Restablecimiento de qubits a mitad del circuitoMidCircuitReset (versión v0.49.0 o posterior)Garza
measure_resetUna medición como measure esa también reinicia el qubit*Medir y reiniciar un qubitMeasureReset (versión v0.50.0 o posterior)Garza, Chotacabras r2
measure_reset_2Una medición más corta como measure_2 esa también reinicia el qubit*Medir y reiniciar un qubit en medio de un circuitoInicializar MeasureReset con ( name="measure_reset_2" versión v0.50.0 o posterior)Garza, Chotacabras r2
xslowPuerta «bit-flip» (X) con duración ampliadaSelección posterior y mitigación de errores. Es el valor por defecto de la opción x_pulse_type en las pasadas de postselecciónXSlowGate (versión v0.50.0 o posterior)Todos

* En los procesadores Heron, el reinicio depende del resultado de la medición. En los procesadores Nighthawk r2, el reinicio es incondicional.

Dado que estas instrucciones no son compatibles con todos los backends, comprueba las instrucciones compatibles con el backend antes de utilizarlas:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>")

print(backend.supported_instructions)

Para encontrar todos los backends que admiten una instrucción, utiliza:

service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)

Utiliza instruction_signatures para ver las firmas de estas instrucciones especialmente calibradas:

print(backend.configuration().instruction_signatures)

Calibraciones alternativas

Las calibraciones alternativas sustituyen partes de la calibración predeterminada por parámetros ajustados de forma diferente. Cada calibración alternativa tiene un identificador de calibración, y su disponibilidad depende de la QPU.

Para utilizar una calibración alternativa, pasa su valor calibration_id al recuperar el backend. El destino del backend —y, por lo tanto, el transpilador— utiliza las propiedades de las instrucciones derivadas de esa calibración, y las tareas primitivas que se ejecutan en el backend se ejecutan con ellas.

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")

print(backend.calibration_id)
Note

No todas las QPU disponen de calibraciones alternativas.

Calibraciones lentas de la compuerta

Las calibraciones de puerta lenta ajustan la cz puerta para que sea más lenta que en la calibración predeterminada. Las puertas cz más lentas podrían mejorar el rendimiento en flujos de trabajo de estimación de observables a gran escala con mitigación de errores, pero también aumentan la duración total del circuito, lo que provoca cierta decoherencia adicional.

En los procesadores Heron, también se dispone de calibraciones de puerta lenta con dos modos de control de polarización del sistema de dos niveles ( TLS ):

  • El sesgo de TLS de CC está optimizado para ofrecer el mejor rendimiento instantáneo. La calibración predeterminada utiliza un sesgo de TLS de corriente continua.
  • El sesgo AC TLS modula el sesgo TLS para estabilizar los errores del dispositivo a lo largo del tiempo, lo que mantiene estable el modelo de ruido del dispositivo durante flujos de trabajo prolongados. Para más detalles, véase «Estabilización del ruido» en «Estimación observable en ausencia de verificación clásica ».

Los procesadores Nighthawk no utilizan el sesgo de TLS, por lo que cuentan con una única calibración de puerta lenta.

N.º de calibración
Familia del procesador
Sesgo TLS
Recomendado para
Ninguna (calibración predeterminada)TodosDC (Garza)Uso general. Especialmente recomendado para cargas de trabajo cuyas cadenas de bits puedan destilarse de forma clásica, como los circuitos de picos y los flujos de trabajo SQD o SKQD, así como para cargas de trabajo con detección de errores.
slow_gates_dcGarzaDCFlujos de trabajo de estimación de observables a gran escala, especialmente aquellos que utilizan técnicas heurísticas de mitigación de errores, como la extrapolación sin ruido (ZNE).
slow_gates_acGarzaCAFlujos de trabajo que requieren índices de error estables durante sesiones prolongadas. Muy recomendable para flujos de trabajo que impliquen el aprendizaje del ruido, como la amplificación probabilística de errores (PEA) y la cancelación probabilística de errores (PEC).
slow_gatesNighthawkNo aplicableFlujos de trabajo de estimación de observables que utilizan técnicas de mitigación de errores, como ZNE, PEA y PEC.

Por ejemplo:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")

# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Tip

Cuando utilices slow_gates_ac, envía todos los trabajos del flujo de trabajo a una única sesión para que se ejecuten mientras el ruido del dispositivo se mantenga estable.

Comprobar la duración de los controles de acceso

Dado que las calibraciones lentas de las puertas aumentan la duración de estas cz , compara dichas duraciones con las de la calibración predeterminada para comprender el efecto que tienen en tu circuito. Utiliza el objetivo del backend para averiguar la duración, en segundos, de la puerta cz en un par concreto de qubits:

default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
    "<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk

qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)

Dado que el destino refleja la calibración seleccionada, compila tus circuitos para el backend que utilice la misma calibración que la que tienes calibration_id previsto ejecutar.


Próximos pasos

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