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.
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')>
Para ver los backends a los que tiene acceso, vaya a la lista de backends en la página Recursos informáticos (tenga en cuenta que la región seleccionada puede afectar a las QPU que aparecen en la lista). Haga clic en el icono del filtro y seleccione «Todas mis instancias» o el nombre de una instancia específica para ver las QPU disponibles.
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')>
Para ver los backends a los que tiene acceso, consulte la tabla de la página Recursos informáticos. Haga clic en el icono del filtro para ver las opciones de filtrado. Puede filtrar por tipo de procesador y estado. Ten en cuenta también que puedes ordenar la tabla por cualquier columna pasando el cursor por encima del título de una columna y haciendo clic en las flechas que aparecen.
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'}
Vaya a la página Recursos informáticos para ver una tabla con todas las QPU y, a continuación, haga clic en el nombre de cualquier QPU para abrir su tarjeta de información detallada. Encuentre la información del backend en la sección Detalles de la tarjeta.
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 muestras | Ciclos de calentamiento/enfriamiento | Actualizaciones de software de QPU |
| Cambios importantes en la electrónica de control | Si al cambiar algunos componentes electrónicos, el reemplazo afecta notablemente al funcionamiento | Calibraciones manuales para mejorar la fidelidad |
| Trasladar la QPU a una nueva ubicación, si se producen cambios significativos en el comportamiento | Bajar una compuerta durante un tiempo debido a problemas de calibración, y las correcciones no se pueden realizar fácilmente en el software | Pequeñ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']
Vaya a la página Recursos informáticos para ver una tabla con todas las QPU y, a continuación, haga clic en el nombre de cualquier QPU para abrir su tarjeta de información detallada. Las puertas básicas para esa QPU se enumeran en la sección Detalles.
Tabla de instrucciones compatibles
Categoría de operación | Nombre |
|---|---|
| Puertas de un solo qubit | RZ, SX, X, ID, delay |
| Puertas de dos qubits | CZ, ECR |
| Puertas fraccionarias | RX (un solo qubit), RZZ (dos qubits) |
| Instrucciones no unitarias | measure, reset, measure_*, delay |
| Controlar flujo | if_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.
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 ( ) representa la duración media que un qubit permanece en su estado excitado antes de decaer a su estado fundamental 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 Qiskitbackend.properties().t1(<qubit>)Ver en IBM Quantum PlatformSección de datos de calibración, menú desplegable Qubit; busque el valor mediano de en la sección Detalles El tiempo de superposición ( ) denota la escala de tiempo durante la cual un qubit mantiene la coherencia de fase de una superposición entre los estados y . 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 « » a partir de una secuencia de eco de Hahn.
Ver con Qiskitbackend.properties().t2(<qubit>)Ver en IBM Quantum PlatformSección de datos de calibración, menú desplegable Qubit; busque el valor mediano de 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 ( ), denotado como . 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 Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')Ver en IBM Quantum PlatformSecció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 , denotado como . 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 Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')Ver en IBM Quantum PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]Ver en IBM Quantum PlatformSecció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 QiskitSiga el ejemplo de este cuaderno de la comunidad Qiskit GitHub. Ver en IBM Quantum PlatformSecció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 es ( =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 del proceso de la cadena en capas de qubits . 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 qubitsNes el error más bajo encontrado en una cadena deNlongitud subconjunto que busca en las seis cadenas de 100 qubits.Calcular con QiskitSiga el ejemplo de este cuaderno de la comunidad Qiskit GitHub. Ver en IBM Quantum PlatformSecció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 QiskitImportante: Asegúrate de haber configurado use_fractional_gates=Truecuando cargues el backend, entonces podrás usarbackend.target['rzz'][<qubit 1>, <qubit 2>]Ver en IBM Quantum PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>,]Ver en IBM Quantum PlatformSecció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 PlatformSección de detalles Error en la puerta virtual RZ. Se reportan como todos 0, ya que se realizan en el software.
Ver con Qiskitbackend.target['<instruction>'][<qubit 1>,]Ver en IBM Quantum PlatformSecció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_prep1yprob_meas1_prep0, lo que proporciona una única métrica para medir la fidelidad.Ver con Qiskitbackend.properties().readout_error(<qubit>)Ver en IBM Quantum PlatformSecció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 PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>,].durationVer en IBM Quantum PlatformSecció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 Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>].durationVer en IBM Quantum PlatformSecció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 PlatformSección de datos de calibración, menú desplegable Qubit - Para
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 Qiskitmcps = backend.configuration().mcpsVer en IBM Quantum PlatformSecció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 QiskitEncuentre el código CLOPS en la comunidad Qiskit GitHub Ver en IBM Quantum PlatformSecció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 Qiskitprint(backend.status().status_msg),print(backend.status().pending_jobs)Ver en IBM Quantum PlatformSecció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 Qiskitfrom qiskit.visualization import plot_gate_mapentoncesplot_gate_map(backend)Ver en IBM Quantum PlatformSección de datos de calibración; haga clic en «Expandir» para ampliar la vista
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
- Aprenda a crear modelos de ruido para realizar simulaciones clásicas ruidosas.
- Revise el tema Etapas del transpilador para obtener información sobre cómo el transpilador utiliza las propiedades del backend para la optimización de circuitos.
- Consulte la referencia de la API backend de QiskitRuntime.