Saltar al contenido principal

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.

Nombres de las QPUs

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.

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:

# 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')>]
nota

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

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:

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.

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 mayorVersión menorVersión de revisión
Cambios en la muestra (sample)Ciclos de calentamiento / enfriamientoActualizaciones de software de la QPU
Cambios importantes en la electrónica de controlSustitución de algún componente electrónico, si el reemplazo afecta apreciablemente a la operaciónCalibraciones manuales para mejorar las fidelidades
Traslado de la QPU a una nueva ubicación, si como resultado se producen cambios de comportamiento significativosEliminación de una puerta durante cierto período de tiempo por problemas de calibración cuando las correcciones no pueden realizarse fácilmente por softwareCambios 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.

Tabla de instrucciones compatibles

Categoría de operaciónNombre
Puertas de un qubitRZ, SX, X, ID, delay
Puertas de dos qubitsCZ, ECR
Puertas fraccionariasRX (un qubit), RZZ (dos qubits)
Instrucciones no unitariasmeasure, reset, measure_*, delay
Flujo de controlif_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.

Recuperar datos históricos

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 T1T_1 representa la duración promedio que un qubit permanece en su estado excitado 1|1\rangle antes de decaer a su estado fundamental 0|0\rangle 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 Qiskitbackend.properties().t1(<qubit>)
Ver en IBM Quantum PlatformSección Calibration data, menú desplegable Qubit; encuentra el valor T1T_1 median en la sección Details
T2 (Tiempo de desfasamiento)

El tiempo T2T_2 denota la escala de tiempo en la que un qubit mantiene la coherencia de fase de una superposición entre los estados 0|0\rangle y 1|1\rangle. 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. T2T_2 se reporta a partir de una secuencia de eco de Hahn.

Ver con Qiskitbackend.properties().t2(<qubit>)
Ver en IBM Quantum PlatformSección Calibration data, menú desplegable Qubit; encuentra el valor T2T_2 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 1|1\rangle, denotada como P(01)P(0 | 1). Refleja errores en la preparación de estados y la medición (SPAM), en particular errores de medición en qubits superconductores.

Ver con Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
Ver en IBM Quantum PlatformSecció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 0|0\rangle, denotada como P(10)P(1 | 0). Al igual que prob_meas0_prep1, refleja errores SPAM, siendo los errores de medición el contribuyente predominante en los qubits superconductores.

Ver con Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
Ver en IBM Quantum PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]
Ver en IBM Quantum PlatformSecció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 QiskitSigue el ejemplo en este cuaderno de GitHub de la comunidad Qiskit
Ver en IBM Quantum PlatformSecció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 NN qubits (NN=100 aquí). Se deriva de una cantidad similar conocida como fidelidad de capa (LF), donde EPLG100_{100} = 4/5(1-LF199^{\frac{1}{99}}) y la fidelidad de capa es la fidelidad de proceso de la cadena en capas de NN 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 QiskitSigue el ejemplo en este cuaderno de GitHub de la comunidad Qiskit
Ver en IBM Quantum PlatformSecció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 QiskitImportante: 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 PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, ]
Ver en IBM Quantum PlatformSecció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 PlatformSecció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 PlatformSecció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 Qiskitbackend.properties().readout_error(<qubit>)
Ver en IBM Quantum PlatformSecció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 PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, ].duration
Ver en IBM Quantum PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
Ver en IBM Quantum PlatformSecció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
  • Para measure: backend.properties().readout_length(<qubit>)
  • Para measure_2: backend.target['measure_2'][<qubit 1>, ].duration
Ver en IBM Quantum PlatformSecció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 QiskitEncuentra el código de CLOPS en el GitHub de la comunidad de Qiskit
Ver en IBM Quantum PlatformSecció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 Qiskitprint(backend.status().status_msg), print(backend.status().pending_jobs)
Ver en IBM Quantum PlatformSecció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 Qiskitfrom qiskit.visualization import plot_gate_map luego plot_gate_map(backend)
Ver en IBM Quantum PlatformSección Calibration data; haz clic en Expand para una vista más grande
¿Qué significa `error = 1`?

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

Recomendaciones