Skip to main content
IBM Quantum Platform

Ver detalles del backend

  • El código de esta página se ha desarrollado siguiendo los siguientes requisitos. Recomendamos utilizar estas versiones o posteriores.

    qiskit-ibm-runtime~=0.47.0
    

Esta página explica cómo encontrar información sobre los backends disponibles.


Lista o filtro de backends

Lista de backends disponibles para usted

Puede utilizar Qiskit o IBM Quantum Platform para ver una lista de los backends disponibles o para buscar un backend concreto.

Nombres de QPU

Las QPU alojadas en IBM Cloud® tienen nombres que comienzan por ibm_*. A todas las QPU se les asigna un nombre de ciudad, por ejemplo, ibm_kingston. Este nombre no indica dónde se aloja realmente la QPU.

Utilice el QiskitRuntimeService.backends() método, tal y como se muestra en el siguiente bloque de código. Este método devuelve una lista de IBMBackend instancias.

Para ejecutar el siguiente código, asegúrese de que ya se ha autenticado en el servicio. Consulte Configurar su cuenta de IBM Cloud para obtener más detalles.

# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()

Output:

[<IBMBackend('ibm_pittsburgh')>,
 <IBMBackend('ibm_boston')>,
 <IBMBackend('ibm_fez')>,
 <IBMBackend('ibm_miami')>,
 <IBMBackend('ibm_marrakesh')>,
 <IBMBackend('ibm_kingston')>]

Para buscar un backend específico, utilice el QiskitRuntimeService.backend() método (tenga en cuenta que es singular: backend ), que toma el nombre del backend como parámetro de entrada y devuelve una IBMBackend instancia que representa ese backend en particular:

service.backend("ibm_fez")

Output:

<IBMBackend('ibm_fez')>
Note

Si ha iniciado sesión en una instancia o región específica, o si ha inicializado el servicio con una instancia o región específica mediante QiskitRuntimeService(), solo se devolverán los backends disponibles para usted en esa instancia o región.

Backends de filtro

Puede filtrar los backends disponibles por su configuración o estado. Para filtros más generales, establezca el filters argumento en una función que acepte un objeto backend y devuelva True si cumple con sus criterios. Consulte la documentación de la API para obtener más detalles.

El siguiente código devuelve solo los backends que cumplen estos criterios y que están disponibles para usted en la instancia seleccionada actualmente :

  • ¿Son dispositivos cuánticos reales (simulator=False)
  • Actualmente en funcionamiento (operational=True)
  • Tener al menos cien qubits (min_num_qubits=100)
# 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)

Output:

[<IBMBackend('ibm_pittsburgh')>,
 <IBMBackend('ibm_boston')>,
 <IBMBackend('ibm_fez')>,
 <IBMBackend('ibm_miami')>,
 <IBMBackend('ibm_marrakesh')>,
 <IBMBackend('ibm_kingston')>]

Un método similar es QiskitRuntimeService.least_busy(), que toma 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)

Output:

<IBMBackend('ibm_marrakesh')>

Información estática del backend

Algunos datos sobre un backend no cambian con regularidad, como su nombre, versión, número de qubits, tipo de procesador (el nombre de la familia de aves, que indica la topología y el número aproximado de qubits) y los tipos de funciones que admite. Esta información está disponible como atributos del backend objeto. Para obtener una lista completa de atributos, consulte la IBMBackend documentación de la API. Encuentre más información sobre el control de versiones en la sección de control de versiones de QPU más abajo.

La región de un backend (la ubicación del centro de datos donde se alojarán y procesarán sus datos y experimentos) aparece en su tarjeta de información detallada en la página Recursos informáticos de IBM Quantum Platform.

backend = service.backend("ibm_fez")

print(
    f"Name: {backend.name}\n"
    f"Version: {backend.backend_version}\n"
    f"No. of programmable qubits: {backend.num_qubits}\n"
    f"Processor type: {backend.processor_type}\n"
)

Output:

Name: ibm_fez
Version: 1.3.37
No. of programmable qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

Versiones de QPU

Cada QPU tiene un número de versión con el formato X.Y.Z ( major.minor.revision ). Se garantiza que un circuito compilado para un número de versión determinado se ejecutará en esa QPU. Si cambia el número de revisión, el circuito seguirá funcionando. Si cambia el número mayor o menor, no se garantiza que el circuito funcione, aunque es posible que lo haga.

El número de versión de revisión aumentará para las correcciones que no afecten al 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, puede ver la versión en la tarjeta de información detallada de una QPU (haga clic en el nombre de la QPU en la tabla de recursos informáticos para abrir la tarjeta).

Las condiciones en las que puede cambiar un número de versión o revisión se enumeran en la siguiente tabla.

Versión principal
Versión secundaria
Versión revisada
Cambios en las muestrasCiclos de calentamiento/enfriamientoActualizaciones de software de QPU
Cambios importantes en la electrónica de controlSi al cambiar algunos componentes electrónicos, el reemplazo afecta notablemente al funcionamientoCalibraciones manuales para mejorar la fidelidad
Trasladar la QPU a una nueva ubicación, si se producen cambios significativos en el comportamientoBajar una compuerta durante un tiempo debido a problemas de calibración, y las correcciones no se pueden realizar fácilmente en el softwarePequeños cambios electrónicos que no afectan al funcionamiento
Cambiar 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 uno y dos qubits, así como operaciones no unitarias como medición y reinicio. Cada puerta del circuito debe ser traducida (por el transpilador) a los elementos del conjunto de instrucciones compatibles con la QPU antes de que pueda ejecutarse en la QPU.

Puede ver los conjuntos de instrucciones compatibles con una QPU con Qiskit. La página de recursos informáticos de IBM Quantum Platform solo incluye las puertas unitarias compatibles (puertas básicas) para una QPU.

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}")

Output:

Backend: ibm_kingston
    Processor type: {'family': 'Heron', 'revision': '2'}
    Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

Tabla de instrucciones compatibles

Categoría de operación
Nombre
Puertas de un solo qubitRZ, SX, X, ID, delay
Puertas de dos qubitsCZ, ECR
Puertas fraccionariasRX (un solo qubit), RZZ (dos qubits)
Instrucciones no unitariasmeasure, reset, measure_*, delay
Controlar flujoif_else (alimentación directa clásica)

Información dinámica del backend

Los backends también tienen propiedades que cambian cada vez que se calibra el backend, como la vida útil de los qubits y las tasas de error de funcionamiento. Las propiedades del backend se actualizan una vez completada la secuencia de calibración. Estas propiedades pueden utilizarse para optimizar circuitos cuánticos o para construir modelos de ruido para un simulador clásico. Consulte la guía de trabajos de calibración para obtener más información.

En IBM Quantum Platform, puede descargar los datos de calibración como un archivo CSV. Haga clic en una QPU en la página Recursos informáticos para ver su tarjeta de información detallada y, a continuación, haga clic en el icono de descarga situado en la esquina superior derecha de la sección Datos de calibración.

Recuperar datos históricos

Puede recuperar datos históricos de propiedades del backend en Qiskit con el siguiente código:

backend.properties(datetime=<datetime>)

Propiedades del qubit

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 de ellas emparejada con su valor y la marca de tiempo de la última calibración.

Los siguientes ejemplos de código muestran cómo enumerar todas las propiedades o recuperar propiedades específicas de un qubit concreto.

# fundamental physical properties of qubit 1

backend = service.backend("ibm_fez")

backend.qubit_properties(1)

Output:

QubitProperties(t1=0.00023525336833619243, t2=0.0002320821005698974, 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")

Output:

Qubit 126 Properties:
  T1: 9.634806748588717e-05 seconds
  T2: 8.579257084098977e-05 seconds
  Readout Error: 0.050048828125
  P(0 | 1): 0.0751953125
  P(1 | 0): 0.02490234375
  Readout Length: 1.7e-06 seconds

Ver propiedades del qubit

  • El tiempo de vida de la excitación ( T1T_1 ) representa la duración media 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 la energía. Este parámetro se utiliza para caracterizar el comportamiento de relajación energética del qubit y se expresa en segundos (s).

    Ver con Qiskit
    backend.properties().t1(<qubit>)
    Ver en IBM Quantum Platform
    Sección de datos de calibración, menú desplegable Qubit; busque el valor mediano de T1T_1 en la sección Detalles
  • El tiempo de superposición ( T2T_2 ) denota la escala de tiempo durante la cual 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 los procesos de relajación energética como los de desfasamiento puro, lo que proporciona información sobre las propiedades de coherencia del qubit. Se informa de la aparición de « T2T_2 » a partir de una secuencia de eco de Hahn.

    Ver con Qiskit
    backend.properties().t2(<qubit>)
    Ver en IBM Quantum Platform
    Sección de datos de calibración, menú desplegable Qubit; busque el valor mediano de T2T_2 en la sección Detalles

Propiedades de instrucción

Ir a la lista de propiedades de instrucción

El backend.target atributo es un qiskit.transpiler.Target objeto: un objeto que contiene toda la información necesaria para transpilear un circuito para ese backend. Esto incluye errores de instrucción y duraciones. Por ejemplo, la siguiente celda obtiene las propiedades de un cz puerta que actúa entre los qubits 1 y 0.

backend.target["cz"][(1, 0)]

Output:

InstructionProperties(duration=6.8e-08, error=0.008303008840692683)

La siguiente celda muestra las propiedades de una operación de medición (incluido el error de lectura) en el qubit 0.

backend.target["measure"][(0,)]

Output:

InstructionProperties(duration=1.7e-06, error=0.0302734375)

Ver propiedades de la instrucción

  • Este parámetro indica la probabilidad de medir un qubit en el estado 0 cuando se pretendía prepararlo en el estado 0 ( 1|1\rangle ), denotado como P(01)P(0 | 1). Refleja los errores en la preparación y medición del estado (SPAM), en particular los errores de medición en los qubits superconductores.

    Ver con Qiskit
    backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
    Ver en IBM Quantum Platform
    Sección de datos de calibración, menú desplegable Qubit
  • 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, denotado como P(10)P(1 | 0). Al igual que prob_meas0_prep1, refleja los errores SPAM, siendo los errores de medición el factor predominante en los qubits superconductores.

    Ver con Qiskit
    backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
    Ver en IBM Quantum Platform
    Sección de datos de calibración, menú desplegable Qubit
  • El error de dos qubits por borde del mismo lote de mediciones utilizado para calcular el error mediano e 2Q. 2Q El error (óptimo) se refiere al error de dos qubits más bajo en cualquier borde del dispositivo, también a partir de este lote de mediciones.

    Ver con Qiskit
    backend.target['<instruction>'][<qubit 1>, <qubit 2>]
    Ver en IBM Quantum Platform
    Sección de calibración: coloque el cursor sobre la conexión del qubit en la vista Mapa, o busque el valor en la vista Tabla en la columna Error CZ (Heron y Nighthawk) o Error ECR (Eagle); busque el valor del error de la conexión de la fuente de calor ( 2Q ) (óptimo) en la sección Detalles
  • Fidelidad media de la puerta de la operación de dos qubits a partir de pruebas comparativas aleatorias. Medido en «aislamiento»: lotes con una separación mínima de dos qubits entre los bordes. Esta comparativa aleatoria utiliza capas alternas de puertas Clifford de un solo qubit y puertas de dos qubits, por lo que el valor final del error de la puerta ( 2Q ) incluye el error de la capa de puertas Clifford de un solo qubit.

    Calcular con Qiskit
    Siga el ejemplo de este cuaderno de la comunidad Qiskit GitHub.
    Ver en IBM Quantum Platform
    Sección Detalles; también encontrará datos por borde en la sección Datos de calibración
  • Error medio por puerta en capas (EPLG) en una cadena de 100 qubits. El EPLG promedio mide el error promedio de puerta en una cadena en capas de qubits e NN es ( NN =100 aquí). Se deriva de una cantidad similar conocida como fidelidad de capa (LF), donde EPLG 100_{100} = 4/5(1-LF 199^{\frac{1}{99}} ) y la fidelidad de capa es la fidelidad del proceso de la cadena en capas de qubits NN. Para más detalles, consulte el artículo Benchmarking quantum processor performance at scale (Evaluación comparativa del rendimiento de los procesadores cuánticos a gran escala). Tenga en cuenta que en el artículo EPLG se define para el error de proceso, pero para mantener la coherencia con los errores de puerta notificados individualmente, aquí se cita para el error de puerta medio, de ahí el factor de 4/5.

    En IBM Quantum Platform, la ficha informativa detallada de cada QPU tiene una sección llamada «Error de puerta de dos qubits (por capas)», que ofrece una vista ampliada del valor más bajo two-qubit gate error (layered) medido en función del número de qubits de la cadena. El valor final, con una longitud de cadena de 100, es el valor que se muestra en la sección Detalles. En la práctica, se miden seis cadenas de 100 qubits (preseleccionadas en función del rendimiento óptimo esperado) y el valor indicado para el número de qubits N es el error más bajo encontrado en una cadena de N longitud subconjunto que busca en las seis cadenas de 100 qubits.

    Calcular con Qiskit
    Siga el ejemplo de este cuaderno de la comunidad Qiskit GitHub.
    Ver en IBM Quantum Platform
    Sección Detalles y vista ampliada en la sección Error de puerta de dos qubits (en capas)
  • Error en la puerta RZZ promediado sobre los ángulos RZZ utilizando una variante de benchmarking aleatorio para unitarios arbitrarios.

    Ver con Qiskit
    Importante: Asegúrate de haber configurado use_fractional_gates=True cuando cargues el backend, entonces podrás usar backend.target['rzz'][<qubit 1>, <qubit 2>]
    Ver en IBM Quantum Platform
    Sección de calibración: Seleccione RZZ en el menú desplegable Conexión y coloque el cursor sobre la conexión del qubit en la vista Mapa. También puede seleccionar el error RZZ en el menú desplegable Salida gráfica de la vista Gráfico, o buscar el valor en la vista Tabla, en la columna Error RZZ
  • Error en las puertas discretas de un qubit de duración finita, medido a partir de pruebas comparativas aleatorias. La secuencia de benchmarking aleatoria incluye puertas SX, ID y X, y se supone que sus errores son los mismos. La puerta ID es un retardo cuya duración es 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 informa que tiene el mismo error que estas puertas.

    Ver con Qiskit
    backend.target['<instruction>'][<qubit 1>,]
    Ver en IBM Quantum Platform
    Sección de calibración: menú desplegable Qubit
  • Fidelidad media de la puerta √X (SX) a partir de pruebas comparativas aleatorias, medida simultáneamente en todos los qubits. La secuencia de benchmarking aleatoria incluye puertas SX, ID y X, y se supone que sus errores son los mismos.

    Ver en IBM Quantum Platform
    Sección de detalles
  • Error en la puerta virtual RZ. Se reportan como todos 0, ya que se realizan en el software.

    Ver con Qiskit
    backend.target['<instruction>'][<qubit 1>,]
    Ver en IBM Quantum Platform
    Sección de calibración: menú desplegable Conexión
  • El error de lectura cuantifica la probabilidad media de medir incorrectamente el estado de un qubit. Se calcula comúnmente como la media de prob_meas0_prep1 y prob_meas1_prep0, lo que proporciona una única métrica para medir la fidelidad.

    Ver con Qiskit
    backend.properties().readout_error(<qubit>)
    Ver en IBM Quantum Platform
    Sección de datos de calibración, menú desplegable Qubit
  • 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 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 de datos de calibración, sección Detalles
  • Duración de una operación de puerta de un solo qubit. Tenga en cuenta que los valores que aparecen en IBM Quantum Platform están expresados en nanosegundos. Los valores devueltos en Qiskit se expresan en segundos.

    Ver con Qiskit
    backend.target['<instruction>'][<qubit 1>,].duration
    Ver en IBM Quantum Platform
    Sección de calibración: menú desplegable Qubit
  • Duración de la operación de la puerta de dos qubits. Tenga en cuenta que los valores que aparecen en IBM Quantum Platform están expresados en nanosegundos. Los valores devueltos en Qiskit se expresan en segundos.

    Ver con Qiskit
    backend.target['<instruction>'][<qubit 1>, <qubit 2>].duration
    Ver en IBM Quantum Platform
    Sección de calibración: menú desplegable Qubit
  • La longitud de lectura especifica la duración de la operación de lectura para un qubit. Mide el tiempo transcurrido 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 del circuito, 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 Platform
    Sección de datos de calibración, menú desplegable Qubit

Propiedades adicionales

  • El número máximo de circuitos por segundo (MCPS) incluye la medición, el reinicio y la reinicialización de un circuito mediante una puerta de Hadamard y una única medición.

    Ver con Qiskit
    mcps = backend.configuration().mcps
    Ver en IBM Quantum Platform
    Sección de detalles
  • Las operaciones por segundo de la capa de circuito (CLOPS) son una medida de cuántas capas de un circuito e 100x100 e (circuito sensible al hardware) puede ejecutar una QPU por unidad de tiempo.

    Calcular con Qiskit
    Encuentre el código CLOPS en la comunidad Qiskit GitHub
    Ver en IBM Quantum Platform
    Sección de detalles
  • Con BackendStatus, puede 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 de detalles
  • Diagrama que indica los pares de qubits que admiten operaciones de puerta de dos qubits entre ellos. Esto también se denomina mapa de acoplamiento o conectividad. Los qubits se representan como círculos y las operaciones de puerta de dos qubits compatibles se muestran como líneas que conectan los qubits.

    Ver con Qiskit
    from qiskit.visualization import plot_gate_map entonces plot_gate_map(backend)
    Ver en IBM Quantum Platform
    Sección de datos de calibración; haga clic en «Expandir» para ampliar la vista
¿Qué significa `error = 1` ?

Si la evaluación comparativa de un qubit o borde no se completa con éxito en el transcurso de varios días, ya sea debido a la mala calidad de los datos u otros factores internos, el valor de error notificado se considera obsoleto y se notificará como 1. Esto no indica necesariamente que el qubit o el borde no funcionen o que el error sea 1; más bien, el error se considera indefinido y se debe proceder con precaución al operar ese qubit o puerta.


Próximos pasos

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