Ver detalles del backend
Versiones de paquetes
El código de esta página se desarrolló con los siguientes requisitos. Recomendamos usar estas versiones o más recientes.
qiskit-ibm-runtime~=0.46.1
Esta página explica cómo encontrar información sobre tus backends disponibles.
Listar o filtrar backends
Listar los backends disponibles para ti
Puedes usar Qiskit o IBM Quantum Platform para ver una lista de los backends disponibles para ti, o para buscar un backend en particular.
Las QPUs alojadas en IBM Cloud® tienen nombres que comienzan con ibm_*. A todas las QPUs se les asigna el nombre de una ciudad; por ejemplo, ibm_kingston. Este nombre no indica dónde está alojada físicamente la QPU.
- Ver backends con Qiskit
- Ver backends en IBM Quantum Platform
Usa el método QiskitRuntimeService.backends() como se muestra en el siguiente bloque de código. Este método devuelve una lista de instancias de IBMBackend.
Para ejecutar el siguiente código, asegúrate de haberte autenticado en el servicio. Consulta Configura tu cuenta de IBM Cloud para más detalles.
Para buscar un backend específico, usa el método QiskitRuntimeService.backend() (en singular: backend), que toma el nombre del backend como parámetro de entrada y devuelve una instancia de IBMBackend que representa ese backend en particular:
Para ver los backends a los que tienes acceso, navega a la lista de backends en la página Compute resources (ten en cuenta que la región seleccionada puede afectar a las QPUs listadas). Haz clic en el ícono de filtro y elige "All my instances" o un nombre de instancia específico para ver las QPUs disponibles.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()
service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
Si has iniciado sesión en una instancia o región específica, o si inicializaste el servicio con una instancia o región específica usando QiskitRuntimeService(), solo se devuelven los backends disponibles para ti en esa instancia o región.
Filtrar backends
- Filtrar por propiedades con Qiskit
- Filtrar por propiedades en IBM Quantum Platform
Puedes filtrar los backends disponibles por su configuración o estado. Para filtros más generales, establece el argumento filters como una función que acepte un objeto backend y devuelva True si cumple tus criterios. Consulta la documentación de la API para más detalles.
El siguiente código devuelve solo los backends que cumplen estos criterios y están disponibles para ti en tu instancia actualmente seleccionada:
- Son dispositivos cuánticos reales (
simulator=False) - Están operativos actualmente (
operational=True) - Tienen al menos cien qubits (
min_num_qubits=100)
Un método similar es QiskitRuntimeService.least_busy(), que acepta los mismos filtros que backends() pero devuelve el backend que coincide con los filtros y tiene el menor número de trabajos pendientes en la cola:
Para ver los backends a los que tienes acceso, consulta la tabla en la página Compute resources. Haz clic en el ícono de filtro para ver las opciones de filtrado. Puedes filtrar por tipo de procesador y estado. Ten en cuenta también que puedes ordenar la tabla por cualquier columna pasando el cursor sobre el título de la columna y haciendo clic en las flechas que aparecen.
service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>
Información estática del backend
Parte de la información sobre un backend no cambia con regularidad, como su nombre, versión, el número de qubits que tiene, su tipo de procesador (el nombre de la familia de aves, que indica la topología y el conteo aproximado de qubits), y los tipos de funciones que admite. Esta información está disponible como atributos del objeto backend. Para una lista completa de atributos, consulta la documentación de la API de IBMBackend. Encuentra más información sobre el versionado en la sección Versionado de la QPU a continuación.
La región de un backend (la ubicación del centro de datos donde se alojarán y procesarán tus datos y experimentos) aparece en su tarjeta de información detallada en la página Compute resources de IBM Quantum Platform.
- Ver información del backend con Qiskit
- Ver información del backend en IBM Quantum Platform
Navega a la página Compute resources para ver una tabla de todas las QPUs y luego haz clic en el nombre de cualquier QPU para abrir su tarjeta de información detallada. Encuentra la información del backend en la sección Detalles de la tarjeta.
backend = service.backend("ibm_fez")
print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}
Versionado de la QPU
Cada QPU tiene un número de versión con la forma X.Y.Z (mayor.menor.revisión). Un circuito compilado para un número de versión determinado tiene garantizado que se ejecutará en esa QPU. Si el número de revisión cambia, el circuito seguirá ejecutándose. Si el número mayor o menor cambia, no se garantiza que el circuito se ejecute, aunque podría hacerlo.
El número de versión de revisión se incrementará por correcciones que no rompan el circuito compilado existente.
El ejemplo de código anterior en esta sección muestra cómo encontrar la versión de un backend. En IBM Quantum Platform, puedes ver la versión en la tarjeta de información detallada de una QPU (haz clic en el nombre de la QPU en la tabla de la página Compute resources para abrir la tarjeta).
Las condiciones bajo las cuales puede cambiar un número de versión o revisión se listan en la siguiente tabla.
| Versión mayor | Versión menor | Versión de revisión |
|---|---|---|
| Cambios en la muestra (sample) | Ciclos de calentamiento / enfriamiento | Actualizaciones de software de la QPU |
| Cambios importantes en la electrónica de control | Sustitución de algún componente electrónico, si el reemplazo afecta apreciablemente a la operación | Calibraciones manuales para mejorar las fidelidades |
| Traslado de la QPU a una nueva ubicación, si como resultado se producen cambios de comportamiento significativos | Eliminación de una puerta durante cierto período de tiempo por problemas de calibración cuando las correcciones no pueden realizarse fácilmente por software | Cambios pequeños en la electrónica que no afectan a la operación |
| Cambio en la dirección de una puerta CNOT |
Instrucciones compatibles
Cada familia de procesadores admite de forma nativa un conjunto limitado de instrucciones. Este conjunto incluye puertas de un qubit y de dos qubits, así como operaciones no unitarias como measure y reset. Cada puerta del circuito debe ser traducida (por el transpilador) a los elementos del conjunto de instrucciones compatibles de una QPU antes de poder ejecutarse en ella.
Puedes ver los conjuntos de instrucciones compatibles de una QPU con Qiskit. La página Compute resources de IBM Quantum Platform lista solo las puertas unitarias compatibles (puertas base) de una QPU.
- Encontrar instrucciones compatibles con Qiskit
- Encontrar puertas base en IBM Quantum Platform
Navega a la página Compute resources para ver una tabla de todas las QPUs y luego haz clic en el nombre de cualquier QPU para abrir su tarjeta de información detallada. Las puertas base de esa QPU se listan en la sección Detalles.
Tabla de instrucciones compatibles
| Categoría de operación | Nombre |
|---|---|
| Puertas de un qubit | RZ, SX, X, ID, delay |
| Puertas de dos qubits | CZ, ECR |
| Puertas fraccionarias | RX (un qubit), RZZ (dos qubits) |
| Instrucciones no unitarias | measure, reset, measure_*, delay |
| Flujo de control | if_else (retroalimentación clásica) |
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")
print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']
Información dinámica del backend
Los backends también tienen propiedades que cambian cada vez que se calibra el backend, como el tiempo de vida de los qubits y las tasas de error de las operaciones. Las propiedades del backend se actualizan después de que la secuencia de calibración se completa. Estas propiedades pueden usarse al optimizar circuitos cuánticos o para construir modelos de ruido para un simulador clásico. Consulta la guía Trabajos de calibración para más información.
En IBM Quantum Platform, puedes descargar los datos de calibración como archivo CSV. Haz clic en una QPU en la página Compute resources para ver su tarjeta de información detallada y luego haz clic en el ícono de descarga en la esquina superior derecha de la sección Calibration data.
Puedes recuperar datos históricos de propiedades de backend en Qiskit con el siguiente código:
backend.properties(datetime=<datetime>)
Propiedades de los qubits
Ir a la lista de propiedades de los qubits
backend.properties().qubit_property() devuelve información sobre los atributos físicos de los qubits. Contiene un diccionario con diversas propiedades del qubit, cada una emparejada con su valor y la marca de tiempo de la última calibración.
Los siguientes ejemplos de código muestran cómo listar todas las propiedades, o recuperar propiedades específicas, de un qubit en particular.
Ver propiedades de los qubits
T1 (Tiempo de relajación)
El tiempo representa la duración promedio que un qubit permanece en su estado excitado antes de decaer a su estado fundamental debido a la relajación de energía. Este parámetro se utiliza para caracterizar el comportamiento de relajación de energía del qubit, y se expresa en unidades de segundos (s).
| Ver con Qiskit | backend.properties().t1(<qubit>) |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit; encuentra el valor median en la sección Details |
T2 (Tiempo de desfasamiento)
El tiempo denota la escala de tiempo en la que un qubit mantiene la coherencia de fase de una superposición entre los estados y . Tiene en cuenta tanto la relajación de energía como los procesos de desfasamiento puro, proporcionando información sobre las propiedades de coherencia del qubit. se reporta a partir de una secuencia de eco de Hahn.
| Ver con Qiskit | backend.properties().t2(<qubit>) |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit; encuentra el valor median en la sección Details |
# fundamental physical properties of qubit 1
backend = service.backend("ibm_fez")
backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)
# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]
print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 seconds
Propiedades de las instrucciones
Ir a la lista de propiedades de las instrucciones
El atributo backend.target es un objeto qiskit.transpiler.Target: un objeto que contiene toda la información necesaria para transpilar un circuito para ese backend. Esto incluye errores y duraciones de instrucciones. Por ejemplo, la siguiente celda obtiene las propiedades de una puerta cz que actúa entre los qubits 1 y 0.
La siguiente celda muestra las propiedades de una operación de medición (incluido el error de lectura) en el qubit 0.
Ver propiedades de las instrucciones
prob-meas0-prep1
Este parámetro indica la probabilidad de medir un qubit en el estado 0 cuando se pretendía prepararlo en el estado , denotada como . Refleja errores en la preparación de estados y la medición (SPAM), en particular errores de medición en qubits superconductores.
| Ver con Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1') |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit |
prob-meas1-prep0
De manera similar, este parámetro representa la probabilidad de medir un qubit en el estado 1 cuando se pretendía prepararlo en el estado , denotada como . Al igual que prob_meas0_prep1, refleja errores SPAM, siendo los errores de medición el contribuyente predominante en los qubits superconductores.
| Ver con Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0') |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit |
Error 2Q (Heron y Nighthawk: CZ, Eagle: ECR)
El error de dos qubits por arista del mismo lote de mediciones utilizado para calcular el error mediano 2Q. Error 2Q (mejor) hace referencia al menor error de dos qubits en cualquier arista del dispositivo, también de este lote de mediciones.
| Ver con Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2>] |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: pasa el cursor sobre la conexión de qubits en la vista Map, o encuentra el valor en la vista Table bajo la columna CZ error (Heron y Nighthawk) o ECR error (Eagle); encuentra el valor de 2Q error (best) en la sección Details |
Error 2Q mediano (Heron: CZ, Eagle: ECR)
Fidelidad de puerta promedio de la operación de dos qubits obtenida a partir de benchmarking aleatorizado. Medido en "aislamiento": lotes con una separación mínima de dos qubits entre aristas. Este benchmarking aleatorizado usa capas alternadas de Cliffords de un qubit y puertas de dos qubits, por lo que el valor final del error 2Q incluye el error de la capa de Cliffords de un qubit.
| Calcular con Qiskit | Sigue el ejemplo en este cuaderno de GitHub de la comunidad Qiskit |
|---|---|
| Ver en IBM Quantum Platform | Sección Details; también encuentra datos por arista en la sección Calibration data |
Error 2Q (en capas)
Error promedio por puerta en capas (EPLG) en una cadena de 100 qubits. El EPLG promedio mide el error de puerta promedio en una cadena en capas de qubits (=100 aquí). Se deriva de una cantidad similar conocida como fidelidad de capa (LF), donde EPLG = 4/5(1-LF) y la fidelidad de capa es la fidelidad de proceso de la cadena en capas de qubits. Para más detalles, consulta el artículo Benchmarking quantum processor performance at scale. Ten en cuenta que en el artículo el EPLG se define para el error de proceso, pero por coherencia con los errores de puerta reportados individualmente aquí, se cita para el error de puerta promedio, de ahí el factor 4/5.
En IBM Quantum Platform, la tarjeta de información detallada de cada QPU tiene una sección llamada Two-qubit gate error (layered), que proporciona la vista ampliada del menor error de puerta de dos qubits (en capas) medido en función del número de qubits en la cadena. El valor final, para una longitud de cadena de 100, es el valor presentado en la sección Details. En la práctica, se miden seis cadenas de 100 qubits (preseleccionadas en función del rendimiento óptimo esperado), y el valor reportado para el número de qubits N es el menor error encontrado en una subcadena de longitud N buscando entre las seis cadenas de 100 qubits.
| Calcular con Qiskit | Sigue el ejemplo en este cuaderno de GitHub de la comunidad Qiskit |
|---|---|
| Ver en IBM Quantum Platform | Sección Details, y una vista ampliada en la sección Two-qubit gate error (layered) |
Error RZZ (Heron)
Error en la puerta RZZ promediado sobre los ángulos RZZ usando una variante de benchmarking aleatorizado para unitarios arbitrarios.
| Ver con Qiskit | Importante: asegúrate de haber establecido use_fractional_gates=True al cargar el backend, luego puedes usar backend.target['rzz'][<qubit 1>, <qubit 2>] |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: selecciona RZZ en el menú desplegable Connection y pasa el cursor sobre la conexión de qubits en la vista Map. También puedes seleccionar RZZ error en el menú desplegable Graph output en la vista Graph, o encontrar el valor en la vista Table bajo la columna RZZ error |
Error ID / error √x (sx) / error Pauli-X / error RX
Error en las puertas discretas de un qubit de duración finita, medido a partir de benchmarking aleatorizado. La secuencia de benchmarking aleatorizado incluye puertas SX, ID y X, y se asume que sus errores son iguales. La puerta ID es un retardo de duración igual a la duración de las puertas √X y X. La puerta RX también tiene la misma duración que las puertas √X y X con amplitud variable, por lo que se reporta con el mismo error que estas puertas.
| Ver con Qiskit | backend.target['<instruction>'][<qubit 1>, ] |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: menú desplegable Qubit |
Error SX (mediano)
Fidelidad de puerta promedio de la puerta √X (SX) obtenida a partir de benchmarking aleatorizado, medida simultáneamente en todos los qubits. La secuencia de benchmarking aleatorizado incluye puertas SX, ID y X, y se asume que sus errores son iguales.
| Ver en IBM Quantum Platform | Sección Details |
|---|
Error de rotación en el eje Z (RZ)
Error en la puerta RZ virtual. Se reporta como 0 en todos los casos, ya que estas operaciones se realizan por software.
| Ver con Qiskit | backend.target['<instruction>'][<qubit 1>, ] |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: menú desplegable Connection |
Error de lectura
El error de lectura cuantifica la probabilidad promedio de medir incorrectamente el estado de un qubit. Generalmente se calcula como la media de prob_meas0_prep1 y prob_meas1_prep0, proporcionando una única métrica para la fidelidad de medición.
| Ver con Qiskit | backend.properties().readout_error(<qubit>) |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit |
Error de lectura (mediano)
Fidelidad de la operación de lectura. El error de lectura se mide preparando el qubit en el estado 0 (1) y midiendo la probabilidad de obtener una salida en el estado 1 (0). El valor reportado es el promedio de estos dos errores. La mediana se calcula sobre todos los qubits.
| Ver en IBM Quantum Platform | Sección Calibration data, sección Details |
|---|
Longitud de puerta de un qubit
Duración de una operación de puerta de un qubit. Ten en cuenta que los valores mostrados en IBM Quantum Platform están en nanosegundos. Los valores devueltos en Qiskit están en segundos.
| Ver con Qiskit | backend.target['<instruction>'][<qubit 1>, ].duration |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: menú desplegable Qubit |
Longitud de puerta (puertas 2Q)
Duración de la operación de puerta de dos qubits. Ten en cuenta que los valores mostrados en IBM Quantum Platform están en nanosegundos. Los valores devueltos en Qiskit están en segundos.
| Ver con Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration: menú desplegable Qubit |
Longitud de lectura
La longitud de lectura especifica la duración de la operación de lectura para un qubit. Mide el tiempo desde el inicio del pulso de medición hasta la finalización de la digitalización de la señal, tras lo cual el sistema está listo para la siguiente operación. Comprender este parámetro es fundamental para optimizar la ejecución de circuitos, especialmente cuando se incorporan mediciones a mitad del circuito.
| Ver con Qiskit |
|
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data, menú desplegable Qubit |
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)
Propiedades adicionales
CLOPS (o CLOPS_h)
Las operaciones de capa de circuito por segundo (CLOPS) son una medida de cuántas capas de un circuito 100x100 (circuito consciente del hardware) puede ejecutar una QPU por unidad de tiempo.
| Calcular con Qiskit | Encuentra el código de CLOPS en el GitHub de la comunidad de Qiskit |
|---|---|
| Ver en IBM Quantum Platform | Sección Details |
Estado
Con BackendStatus, puedes encontrar el estado de la QPU (por ejemplo, Active, Paused, Offline) así como el número de trabajos pendientes.
| Ver con Qiskit | print(backend.status().status_msg), print(backend.status().pending_jobs) |
|---|---|
| Ver en IBM Quantum Platform | Sección Details |
Diagrama de topología o mapa de acoplamiento
Un diagrama que indica los pares de qubits que admiten operaciones de puertas de dos qubits entre ellos. También se denomina mapa de acoplamiento o conectividad. Los qubits se representan como círculos y las operaciones de puertas de dos qubits admitidas se muestran como líneas que conectan los qubits.
| Ver con Qiskit | from qiskit.visualization import plot_gate_map luego plot_gate_map(backend) |
|---|---|
| Ver en IBM Quantum Platform | Sección Calibration data; haz clic en Expand para una vista más grande |
Si el benchmarking de un qubit o arista no tiene éxito durante varios días, ya sea por mala calidad de los datos u otros factores internos, el valor de error reportado se considera obsoleto y se reportará como 1. Esto no indica que el qubit o la arista no funcionen necesariamente, ni que el error sea 1; más bien, el error se considera indefinido y debes proceder con cautela al operar ese qubit o puerta.
Próximos pasos
- Aprende a construir modelos de ruido para realizar simulación clásica con ruido.
- Revisa el tema Etapas del transpilador para aprender cómo el transpilador usa las propiedades del backend para la optimización de circuitos.
- Consulta la referencia de la API de backend de QiskitRuntime.