Orbit: una función de Qiskit desarrollada por Quantum Elements
Consulta la referencia de la API
Qiskit Functions Son una función experimental disponible únicamente para los usuarios de los planes « IBM Quantum® Premium Plan », «Flex Plan» y « On-Prem » (a través de la API de IBM Quantum Platform ). Se encuentran en fase de versión preliminar y están sujetas a cambios.
Visión general
El hardware cuántico sigue avanzando, pero el ruido y la decoherencia siguen limitando la complejidad y la fiabilidad de los circuitos cuánticos prácticos. Entre los enfoques disponibles, hay tres técnicas complementarias que pueden mitigar sustancialmente estas limitaciones: el desacoplamiento dinámico (DD), la transpilación optimizada y la mitigación del error de medición (MEM). La transpilación optimizada reduce la profundidad de los circuitos y los adapta mejor a la conectividad del hardware de destino; DD suprime el ruido en tiempo de inactividad mediante secuencias de control cuidadosamente diseñadas, y MEM reduce los efectos de los errores de lectura y puede aplicarse durante el posprocesamiento.
La elección de una estrategia de DD eficaz no es nada sencilla, ya que existen numerosas familias de secuencias y una secuencia que funciona bien para un circuito o un entorno de ruido concreto puede no hacerlo para otro. Las ventajas de la transpilación, el DD y el MEM dependen del problema, del hardware y de la carga de trabajo; tanto si se utilizan por separado como en combinación, pueden mejorar el rendimiento, pero no resultan beneficiosas en todas las configuraciones.
Orbit, una función de Qiskit desarrollada por Quantum Elements, combina a la perfección estos tres componentes en un flujo de trabajo unificado, lo que facilita su uso para mejorar la ejecución de circuitos en el hardware de IBM Quantum. En su forma básica, Orbit aplica automáticamente estrategias activas de supresión de errores que protegen los estados cuánticos durante los periodos de inactividad, al tiempo que conserva la lógica original del circuito. Cabe destacar que lo hace sin añadir ningún tiempo adicional de preprocesamiento, ya sea cuántico o clásico, con lo que se evitan costes adicionales innecesarios o tiempos de espera en el flujo de trabajo.
En lugar de funcionar como una «caja negra», Orbit permite a los usuarios evaluar y ajustar sus componentes de optimización para un experimento concreto. Los usuarios pueden activar o desactivar de forma independiente la transpilación optimizada, el DD y el MEM; comparar la selección automática de DD con las secuencias especificadas por el usuario; y ejecutar varias configuraciones dentro del mismo flujo de trabajo. Al comparar cada configuración con el circuito sin procesar, los usuarios pueden determinar qué técnicas aportan beneficios cuantificables para su circuito y su backend, identificar las interacciones entre los distintos métodos de optimización y seleccionar la configuración que mejor se adapte a su objetivo experimental. Este proceso ayuda a los usuarios a comprender de dónde proceden las mejoras de rendimiento y a tomar decisiones más fundamentadas a la hora de optimizar circuitos cuánticos para una carga de trabajo determinada.
Descripción
Orbit está diseñado para mejorar la ejecución de circuitos cuánticos en plataformas de ejecució IBM Quantum es. En el modo automatizado, los usuarios pueden aplicar sin problemas secuencias DD robustas de orden elevado sin necesidad de seleccionarlas ni configurarlas manualmente. Los usuarios avanzados pueden, en su lugar, experimentar con las secuencias de orden superior disponibles para identificar y optimizar el enfoque que ofrezca el mejor rendimiento para un circuito concreto.
Orbit también proporciona MEM instantáneo sin necesidad de los trabajos adicionales que suelen requerirse en los flujos de trabajo independientes de calibración y mitigación. En el caso de cargas de trabajo en las que la transpilación no debe alterar la estructura del circuito, como los circuitos de corrección de errores cuánticos con mediciones a mitad del circuito o los circuitos dinámicos, Orbit puede aplicar DD y MEM sin interferir en la estrategia de transpilación existente del usuario. Para aquellos usuarios que aún no tengan un método preferido, Orbit también incluye un transpilador integrado que optimiza los circuitos para el hardware de destino antes de aplicar técnicas de supresión de errores y mitigación de lecturas.
A diferencia de los enfoques que se basan en el muestreo adicional de circuitos, la extrapolación o un postprocesamiento clásico exhaustivo, Orbit se centra en suprimir los errores durante la ejecución. La función está diseñada para introducir una baja sobrecarga, al tiempo que se conserva la lógica original del circuito. Los usuarios pueden examinar el circuito resultante y comparar directamente las ejecuciones optimizadas con Orbit con las ejecuciones estándar.
Un flujo de trabajo práctico con Orbit es el siguiente:
- Define un circuito cuántico y selecciona «Orbit» en el « Qiskit Functions Catalog ».
- Incluye el circuito sin Orbit utilizando el modo «Raw» para establecer una línea de referencia del circuito sin procesar.
- Elige qué estrategias de optimización deseas aplicar, incluyendo secuencias DD automatizadas o seleccionadas por el usuario, MEM y transpilación optimizada.
- Activa o desactiva métodos concretos, o envía varias configuraciones, para evaluar sus efectos tanto por separado como en combinación.
Orbit resulta especialmente útil para circuitos que contienen períodos de inactividad o huecos en la programación en los que los qubits no participan activamente en las puertas lógicas. Admite circuitos estáticos y dinámicos, incluidos flujos de trabajo con mediciones a mitad del circuito y experimentos de computación cuántica tolerantes a fallos. Entre las aplicaciones típicas se incluyen la corrección de errores cuánticos, los experimentos con códigos de superficie en redes cuadradas y hexagonales pesadas, algoritmos oraculares como el de Bernstein-Vazirani, circuitos de transformada de Fourier, algoritmos cuánticos variacionales, simulación hamiltoniana, experimentos de evaluación comparativa y optimización de circuitos adaptada al hardware.
De cara a la era de la tolerancia a fallos, Orbit también es compatible con los flujos de trabajo de computación cuántica tolerantes a fallos, ya que puede combinarse a la perfección con la corrección de errores cuánticos. A largo plazo, Orbit apunta al desacoplamiento dinámico a nivel lógico [1] como una vía de futuro para proteger los qubits lógicos. En el ejemplo que figura a continuación, se entrelazaron dos qubits lógicos para crear un estado lógico de Bell en el marco de la detección de errores cuánticos. La detección cuántica de errores por sí sola provocó que la fidelidad del estado de Bell se redujera hasta aproximadamente el 44 % en el transcurso de decenas de microsegundos, mientras que la QED, combinada con la protección de tipo «Orbit», mantuvo la fidelidad lógica del estado de Bell cerca del máximo de la escala, alcanzando aproximadamente el 95.3 % durante ese mismo intervalo de tiempo.
Referencias comparativas
Los siguientes resultados resumen ejecuciones representativas de Orbit en un IBM Quantum. Al igual que en otras pruebas de rendimiento de hardware, los resultados dependen del dispositivo seleccionado, del estado de calibración, del circuito y de los parámetros de ejecución.
Ejemplo | Métrica | Qubits | QPU | Detalles adicionales | Mejora de la órbita |
|---|---|---|---|---|---|
| Bernstein–Vazirani | Fidelidad de la cadena de bits oculta | 266070 | Garza r3 | «Raw» frente a «Full Orbit», «Solo transpilación» frente a «Full Orbit», «Solo Full Orbit» | 75 x 66 x N/A |
| QFT (unitaria) | Fidelidad | 10 | Heron r2Heron r3 | Orbit frente a Raw: ~44 % frente a ~35 % ; ~67 % frente a ~61 % | 1,26 × 1,09 × |
| QFT (circuitos dinámicos) | Fidelidad | 1020 | Garza r3 | Orbit frente a Raw: ~55 % frente a ~2 % ; ~10 % frente a ~0 % | 27,51 x N/A |
| Estado de Bell de largo alcance (circuitos dinámicos) | Fidelidad | 3060 | Garza r2 | N/A | 1,78 × 1,11 × |
| Código de superficie (red cuadrada) | Probabilidad de error lógico | 25 | Nighthawk r1 | 1 ronda 5 rondas 10 rondas | 1,01 × 1,15 × 1,12 × |
| Código de superficie (hexagonal denso) | Probabilidad de error lógico | 65 | Garza r3 | 1 ronda 5 rondas 10 rondas | 4,11 × 2,04 × 1,39 × |
| VQE | Error absoluto respecto a la energía ideal | 8 | Garza r3 | Orbit frente a raw: 56mHa frente a 1342 mHa | 24x |
| QAOA | Probabilidad de éxito | 5 | Garza r2 | N/A | 1.46x |
[[4,2,2]] código (supresión de errores a nivel lógico) | Fidelidad lógica del estado de Bell entrelazado | 4 | Garza r2 | Fidelidad media en un intervalo de 55 μs | 1.63x |
Definiciones de métricas
-
Fidelidad de la cadena de bits oculta de Bernstein-Vazirani: probabilidad de medir la cadena de bits oculta correcta. Esta métrica indica el grado de fiabilidad con el que el algoritmo recupera la solución prevista a medida que aumenta el tamaño del circuito. La tabla recoge las tres cadenas de bits ocultas más grandes evaluadas con éxito en tres configuraciones diferentes: (i) circuitos sin procesar sin Orbit, que alcanzaron los 26 qubits; (ii) circuitos solo con transpilación, que alcanzaron los 60 qubits; y (iii) circuitos que utilizan el flujo de trabajo completo de Orbit, que alcanzaron los 70 qubits. En el caso de los circuitos sin modificar (i), el factor de mejora representa el aumento de rendimiento conseguido por DD y MEM en comparación con los circuitos sin modificar. En el caso de la configuración exclusiva de transpilación (ii), representa la mejora conseguida al añadir DD y MEM a los circuitos transpilados de forma óptima. En el caso de la configuración completa de Orbit (iii), no se indica ningún factor de mejora con respecto a la línea de base, ya que solo se obtuvo una probabilidad de éxito distinta de cero cuando se activaron todos los componentes de Orbit (transpilación, DD y MEM). A continuación se ofrece un ejemplo ilustrativo.
-
Fidelidad de la transformada de Fourier cuántica: Tanto en las implementaciones de la QFT unitaria como en las de circuito dinámico [2], la fidelidad mide la concordancia entre la transformación implementada experimentalmente y el proceso ideal de la QFT en 20 estados de entrada diferentes. Los circuitos dinámicos presentan un tiempo de inactividad considerable debido a las mediciones realizadas en mitad del circuito y a la retroalimentación directa clásica, durante el cual el desacoplamiento dinámico puede suprimir la decoherencia. La mejora observada compara la fidelidad obtenida con Orbit con la fidelidad sin procesar.
-
Preparación del estado de Bell a larga distancia: Creación de un estado de Bell mediante circuitos dinámicos y operaciones de alimentación directa entre dos qubits separados por hasta 60 qubits intermedios, demostrando así un entrelazamiento eficiente a larga distancia en hardware cuántico conectado localmente [3]. Orbit identifica la mejor ruta para los qubits, los protege durante las mediciones de avance y aplica la técnica MEM para mitigar los errores de lectura.
-
Probabilidad de error lógico en códigos de superficie: En el caso del código de superficie «heavy-hex» [4] y del código de superficie de red cuadrada [5], se llevaron a cabo experimentos con memoria cuántica en los que se conservó un estado lógico codificado tras repetidas rondas de corrección de errores. La probabilidad de error lógico mide la probabilidad de que los errores acumulados provoquen que la información codificada se recupere de forma incorrecta (cuanto menor sea el error, mejor). La mejora observada compara la probabilidad de error lógico de los circuitos sin procesar con la obtenida con Orbit.
-
Error absoluto del VQE: Uso del VQE con un enfoque de clústeres acoplados unitario optimizado para estimar la energía del estado fundamental de LiH [6]. La energía medida se compara con la energía ideal correspondiente obtenida a partir del circuito sin ruido. El indicador es la diferencia absoluta entre la energía medida y la energía ideal (cuanto menor sea el valor, mejor). La mejora observada es la siguiente:
Los valores superiores a uno indican que Orbit reduce el error de energía en comparación con la ejecución sin desacoplamiento dinámico.
-
Probabilidad de éxito del algoritmo QAOA: Probabilidad de obtener una cadena de bits que corresponda a una solución óptima del problema de optimización definido en el grafo de mariposa. La mejora observada compara la probabilidad de éxito obtenida con Orbit con la obtenida a partir de los circuitos sin procesar.
-
Fidelidad lógica: En el experimento [1] de desacoplamiento dinámico lógico [ [4,2,2] ], se codificaron dos qubits lógicos en cuatro qubits físicos y se prepararon como un estado lógico de Bell entrelazado. La fidelidad lógica mide la concordancia entre el estado codificado recuperado y el estado lógico de Bell de referencia. La mejora observada compara la fidelidad lógica media obtenida con Orbit y la detección de errores (capacidad del código) con la obtenida al utilizar únicamente el código.
Cómo empezar
Autentíquese utilizando su clave API IBM Quantum Platform y seleccione la función Orbit de la siguiente manera. Este fragmento de código da por hecho que ya has guardado tu cuenta en tu entorno local.
from qiskit_ibm_catalog import QiskitFunctionsCatalog
from qiskit import QuantumCircuit
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# Verify that you have access to the function.
catalog.list()Output:
[QiskitFunction(quantum-elements/orbit)]
# Load the function.
orbit = catalog.load("quantum-elements/orbit")Ejemplo
En el siguiente ejemplo se crea un circuito de Bernstein-Vazirani y se envía a Orbit de dos formas diferentes en un mismo trabajo: ejecución sin procesar y con los valores predeterminados de Orbit.
Utiliza este patrón cuando quieras realizar una comparación directa entre «raw» y «Orbit».
Construir un circuito de Bernstein-Vazirani
Elige la cadena de bits oculta y construye el circuito lógico. El qubit adicional es el objetivo del oráculo, mientras que se miden los qubits de entrada.
def create_bv_circuit(hidden_bitstring: str) -> QuantumCircuit:
width = len(hidden_bitstring)
circuit = QuantumCircuit(width + 1, width)
circuit.x(width)
circuit.h(range(width + 1))
for input_qubit, bit in enumerate(reversed(hidden_bitstring)):
if bit == "1":
circuit.cx(input_qubit, width)
circuit.barrier()
circuit.h(range(width + 1))
circuit.measure(range(width), range(width))
return circuit
circuit_width = 50
hidden_bitstring = "1" * circuit_width
shots = 4096
bv_circuit = create_bv_circuit(hidden_bitstring)
bv_circuit.count_ops()Output:
OrderedDict([('h', 102),
('cx', 50),
('measure', 50),
('x', 1),
('barrier', 1)])
Preparar la carga de trabajo de Orbit
Crea un «Sampler» PUB y, a continuación, duplícalo para los dos modos de comparación. Orbit recibe el circuito lógico y lo asigna al backend seleccionado durante la ejecución.
base_pub = (bv_circuit, None, shots)
comparison_labels = ["raw", "orbit"]
pubs = [base_pub] * len(comparison_labels)Ejecutar sin procesar y con los valores predeterminados de Orbit
pub_options asigna el primer PUB al modo «raw», que omite la optimización de Orbit, el DD y el MEM, y asigna el segundo PUB a los valores predeterminados de Orbit, que incluyen la transpilación optimizada, la inserción automática de desacoplamiento dinámico (DD) y la mitigación de errores de medición (MEM).
backend_name = "ibm_kingston"
job = orbit.run(
primitive="sampler",
pubs=pubs,
backend_name=backend_name,
options={
"pub_options": [
{"mode": "raw"},
{"mode": "orbit"},
],
"save_backend_info": True,
},
)
# Check the job ID and status
print(job.job_id)
print(job.status())Output:
c0f1b99c-8dfa-4ebb-9560-d9a37c990acc
QUEUED
Recupera el resultado y compara los circuitos sin procesar y los mejorados con Orbit utilizando los recuentos. En cuanto a los resultados del muestreador, get_counts() el registro clásico devuelto proporciona el histograma de salida. Cuando MEM se aplica correctamente a la imagen « PUB » de Orbit, este histograma ya está corregido mediante MEM; los recuentos sin corregir siguen estando disponibles en los metadatos de Orbit en measurementErrorMitigation["rawCounts"].
def extract_counts(pub_result) -> dict[str, int]:
data = getattr(pub_result, "data", None)
if data is None:
raise TypeError("pub_result.data is missing")
for name in dir(data):
if name.startswith("_"):
continue
register = getattr(data, name)
get_counts = getattr(register, "get_counts", None)
if callable(get_counts):
counts = get_counts()
if counts:
return counts
raise TypeError(
"No classical register with get_counts() found in pub_result.data"
)
result = job.result()
if len(result) != len(comparison_labels):
raise RuntimeError(
f"Expected {len(comparison_labels)} PUB results, received {len(result)}."
)
comparison_counts = {
label: extract_counts(pub_result)
for label, pub_result in zip(comparison_labels, result, strict=True)
}
correct_counts = {
label: counts.get(hidden_bitstring, 0)
for label, counts in comparison_counts.items()
}
print(
{
"hidden_bitstring": hidden_bitstring,
"correct_counts": correct_counts,
"shots": shots,
}
)Output:
{'hidden_bitstring': '11111111111111111111111111111111111111111111111111', 'correct_counts': {'raw': 0, 'orbit': 184}, 'shots': 4096}
Realiza una comparación visual entre los circuitos sin procesar y los mejorados con Orbit.
import matplotlib.pyplot as plt
labels = list(correct_counts)
values = list(correct_counts.values())
fig, ax = plt.subplots(figsize=(7, 4))
bars = ax.bar(labels, values, width=0.55)
ax.bar_label(bars, labels=[f"{value:g}" for value in values], padding=3)
ax.set_xlabel("Circuit execution mode")
ax.set_ylabel("Correct hidden-bitstring count")
ax.set_title(f"{circuit_width}-qubit Bernstein-Vazirani on {backend_name}")
ax.set_ylim(0, max(1, 1.15 * max(values)))
ax.grid(axis="y", alpha=0.25)
fig.tight_layout()
plt.show()Output:
Obtener soporte
Ponte en contacto con el servicio de asistencia de Quantum Elements: [email protected]
Asegúrese de incluir la siguiente información:
- ID de tarea de la función de Qiskit (
qiskit-ibm-catalog),job.job_id - Nombre del backend
- Orbit
pub_options, que se utiliza en los modos «raw» y «Orbit» - Una descripción detallada del problema
- Cualquier mensaje o código de error relevante
- Pasos para reproducir el problema
Próximos pasos
- Prueba con un backend diferente, un número distinto de qubits u otra cadena de bits oculta.
- Lee nuestro tutorial sobre la transformada de Fourier cuántica para aprender a definir estrategias de DD personalizadas con órbitas, así como a aplicar la DD a circuitos dinámicos con mediciones a mitad del circuito y operaciones de alimentación directa.
- Consulta la referencia de la API para obtener una descripción detallada de todas las opciones de Orbit.
Referencias
- Supresión de errores a nivel lógico combinada con la detección cuántica de errores, Nature Communications (2026)
- Transformada de Fourier cuántica mediante circuitos dinámicos, Physical Review Letters (2024)
- Entrelazamiento eficiente de largo alcance mediante circuitos dinámicos, PRX Quantum (2024)
- Experimentos de escalado de código de superficie en un « IBM » Heron con conectividad «heavy-hex», arXiv:2510.18847
- Experimentos con el código «Surface» en un «Nighthawk» de IBM con conectividad de red cuadrada, arXiv:2606.11496
- Referencia de VQE, Nature Physics (2024)