Instrucciones con calibración especial
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 casos de uso generales. Sin embargo, algunas cargas de trabajo se benefician de instrucciones cuyos parámetros están ajustados de otra manera. Por ejemplo, MidCircuitMeasure (measure_2) es una operación de lectura diseñada para mediciones en mitad de un circuito, y las puertas cz más lentas pueden mejorar los resultados de algunos flujos de trabajo de mitigación de errores.
Las instrucciones con calibración especial vienen en dos formas, y se accede a ellas de manera diferente:
-
Las instrucciones con firmas distintas se calibran junto con las instrucciones estándar en la calibración predeterminada, por lo que las añades a tus circuitos como cualquier otra instrucción. Normalmente se identifican por un sufijo, como
measure_2. -
Las calibraciones alternativas reemplazan partes de la calibración predeterminada con parámetros ajustados de otra manera. Seleccionas una pasando un
calibration_idal obtener el backend.
Para saber cómo se calibran los ordenadores cuánticos de IBM, consulta Monitorizar, calibrar y evaluar el rendimiento.
Instrucciones con firmas distintas
Estas instrucciones se calibran junto con el conjunto de instrucciones estándar, por lo que no necesitas hacer nada especial para obtener un backend que las admita. Para usar una, añade a tu circuito la instrucción correspondiente de qiskit-ibm-runtime.
| Instrucción | Descripción | Caso de uso típico | Uso en Qiskit | Familia de procesadores |
|---|---|---|---|---|
measure_2 | Pulso de medición más corto | Mediciones a mitad de circuito | MidCircuitMeasure (v0.43.0 o posterior) | Heron, Nighthawk r2 |
reset_2 | Pulso de reinicio condicional más corto que usa measure_2 | Reinicio de qubits a mitad de circuito | MidCircuitReset (v0.49.0 o posterior) | Heron |
measure_reset | Medición como measure que además reinicia el qubit* | Medir y reiniciar un qubit | MeasureReset (v0.50.0 o posterior) | Heron, Nighthawk r2 |
measure_reset_2 | Medición más corta como measure_2 que además reinicia el qubit* | Medir y reiniciar un qubit a mitad de circuito | Inicializa MeasureReset con name="measure_reset_2" (v0.50.0 o posterior) | Heron, Nighthawk r2 |
xslow | Puerta de inversión de bit (X) con una duración extendida | Postselección y mitigación de errores. Es el valor predeterminado de la opción x_pulse_type en los pases de postselección | Todas |
. | XSlowGate (v0.50.0 o posterior) | Todas |
* En los procesadores Heron, el reinicio depende del resultado de la medición. En los procesadores Nighthawk r2, el reinicio es incondicional.
Como estas instrucciones no son compatibles con todos los backends, comprueba las instrucciones admitidas por el backend antes de usarlas:
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, usa:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Usa instruction_signatures para ver las firmas de estas instrucciones con calibración especial:
print(backend.configuration().instruction_signatures)
Calibraciones alternativas
Las calibraciones alternativas reemplazan partes de la calibración predeterminada con parámetros ajustados de otra manera. Cada calibración alternativa tiene un ID de calibración, y su disponibilidad depende de la QPU.
Para usar una calibración alternativa, pasa su calibration_id al obtener el backend. El target del backend y, por lo tanto, el transpilador, usan las propiedades de instrucción de esa calibración, y los jobs de primitivas que ejecutes en el backend se ejecutan con ella.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Las calibraciones alternativas no están disponibles en todas las QPU.
Calibraciones de puertas lentas
Las calibraciones de puertas lentas ajustan la puerta cz para que sea más lenta que en la calibración predeterminada. Las puertas cz más lentas pueden mejorar el rendimiento de los flujos de trabajo de estimación de observables a gran escala con mitigación de errores, pero también aumentan la duración total de tu circuito, lo que provoca algo de decoherencia adicional.
En los procesadores Heron, las calibraciones de puertas lentas también están disponibles con dos modos de control del sesgo de sistemas de dos niveles (TLS):
-
Sesgo TLS de DC está optimizado para obtener el mejor rendimiento instantáneo. La calibración predeterminada usa sesgo TLS de DC.
-
Sesgo TLS de AC 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. Consulta "Noise stabilization" en Observable Estimation in the Absence of Classical Verification para más detalles.
Los procesadores Nighthawk no usan sesgo TLS, por lo que tienen una única calibración de puertas lentas.
| ID de calibración | Familia de procesadores | Sesgo TLS | Recomendado para |
|---|---|---|---|
| Ninguno (calibración predeterminada) | Todas | DC (Heron) | Uso general. Especialmente recomendado para cargas de trabajo cuyas cadenas de bits pueden destilarse de forma clásica, como los circuitos con picos y los flujos de trabajo de SQD o SKQD, y para cargas de trabajo con detección de errores. |
slow_gates_dc | Heron | DC | Flujos de trabajo de estimación de observables a gran escala, especialmente los que usan mitigación de errores heurística como la extrapolación a ruido cero (ZNE). |
slow_gates_ac | Heron | AC | Flujos de trabajo que requieren tasas de error estables durante sesiones largas. Muy recomendado para flujos de trabajo que implican aprendizaje de ruido, como la amplificación probabilística de errores (PEA) y la cancelación probabilística de errores (PEC). |
slow_gates | Nighthawk | No aplicable | Flujos de trabajo de estimación de observables que usan 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")
Cuando uses slow_gates_ac, envía todos los jobs del flujo de trabajo a una única sesión para que se ejecuten mientras el ruido del dispositivo se mantiene estable.
Comprobar las duraciones de las puertas
Como las calibraciones de puertas lentas aumentan las duraciones de la puerta cz, compara las duraciones con la calibración predeterminada para entender el efecto en tu circuito. Usa el target del backend para encontrar la duración, en segundos, de la puerta cz en un par específico 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)
Como el target refleja la calibración seleccionada, transpila tus circuitos con el backend que use el mismo calibration_id con el que planeas ejecutar.
Próximos pasos
- Aprende a ejecutar circuitos dinámicos con mediciones a mitad de circuito.
- Usa la postselección para filtrar los resultados afectados por ruido correlacionado.
- Lee cómo se monitorizan, calibran y evalúan los ordenadores cuánticos de IBM.