Transpila circuitos de forma remota con el Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
A partir del 18 de julio de 2025, el servicio está siendo migrado para dar soporte a la nueva IBM Quantum® Platform y no está disponible. Para los pases de IA, puedes usar el modo local.
El servicio es una versión beta, sujeta a cambios. Si tienes comentarios o quieres contactar al equipo de desarrollo, usa este canal de Qiskit Slack Workspace.
El Qiskit Transpiler Service proporciona capacidades de transpilación en la nube. Además de las capacidades del transpilador local de Qiskit, tus tareas de transpilación pueden beneficiarse tanto de los recursos en la nube de IBM Quantum como de los pases de transpilador potenciados por IA.
El Qiskit Transpiler Service ofrece una biblioteca de Python para integrar este servicio y sus capacidades de forma transparente en tus patrones y flujos de trabajo actuales de Qiskit. Este servicio está disponible únicamente para usuarios del IBM Quantum Premium Plan, Flex Plan y On-Prem (a través de la API de IBM Quantum Platform).
Instala el paquete qiskit-ibm-transpiler
Para usar el Qiskit Transpiler Service, instala el paquete qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
El paquete se autentica automáticamente usando tus credenciales de IBM Quantum Platform, de forma alineada con cómo Qiskit Runtime las gestiona:
- Variable de entorno:
QISKIT_IBM_TOKEN - Archivo de configuración
~/.qiskit/qiskit-ibm.json(bajo la seccióndefault-ibm-quantum).
Nota: Este paquete requiere Qiskit SDK v1.X.
Opciones de transpilación de qiskit-ibm-transpiler
backend_name(opcional, str) - El nombre de un backend tal como lo esperaría QiskitRuntimeService (por ejemplo,ibm_torino). Si se establece, el método de transpilación utiliza el layout del backend especificado para la operación de transpilación. Si se establece cualquier otra opción que afecte a esta configuración, comocoupling_map, los ajustes debackend_nameson reemplazados.coupling_map(opcional, List[List[int]]) - Una lista de coupling map válida (por ejemplo, [[0,1],[1,2]]). Si se establece, el método de transpilación utiliza este coupling map para la operación de transpilación. Si se define, reemplaza cualquier valor especificado paratarget.optimization_level(int) - El nivel de optimización potencial que se aplicará durante el proceso de transpilación. Los valores válidos son [1,2,3], donde 1 es la menor optimización (y la más rápida) y 3 es la mayor optimización (y la que más tiempo requiere).ai("true", "false", "auto") - Si se deben usar capacidades potenciadas por IA durante la transpilación. Las capacidades disponibles con IA pueden ser para pases de transpilaciónAIRoutingu otros métodos de síntesis potenciados por IA. Si este valor es"true", el servicio aplica diferentes pases de transpilación con IA según eloptimization_levelsolicitado. Si es"false", usa las últimas funciones de transpilación de Qiskit sin IA. Por último, si es"auto", el servicio decide si aplicar los pases heurísticos estándar de Qiskit o los pases con IA en función de tu circuito.qiskit_transpile_options(dict) - Un objeto de diccionario de Python que puede incluir cualquier otra opción válida en el métodotranspile()de Qiskit. Siqiskit_transpile_optionsincluyeoptimization_level, se descarta en favor deloptimization_levelespecificado como parámetro de entrada. Siqiskit_transpile_optionsincluye alguna opción no reconocida por el métodotranspile()de Qiskit, la biblioteca lanza un error.
Para más información sobre los métodos disponibles de qiskit-ibm-transpiler, consulta la referencia de la API de qiskit-ibm-transpiler. Para aprender más sobre la API del servicio, consulta la documentación de la REST API del Qiskit Transpiler Service.
Ejemplos
Los siguientes ejemplos demuestran cómo transpilar circuitos usando el Qiskit Transpiler Service con diferentes parámetros.
- Crea un circuito y llama al Qiskit Transpiler Service para transpilarlo con
ibm_torinocomobackend_name, 3 comooptimization_levely sin usar IA durante la transpilación.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="false",
optimization_level=3,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
Nota: solo puedes usar dispositivos de backend_name a los que tengas acceso con tu cuenta de IBM Quantum. Además de backend_name, el TranspilerService también admite coupling_map como parámetro.
- Genera un circuito similar y transpílalo, solicitando capacidades de transpilación con IA al establecer el indicador
aienTrue:
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="true",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
- Genera un circuito similar y transpílalo dejando que el servicio decida si usar los pases de transpilación potenciados por IA.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="auto",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
Limitaciones del Qiskit Transpiler Service
A continuación se describen las limitaciones más relevantes del servicio:
- El número máximo de puertas de dos qubits por circuito en un trabajo de transpilación en cualquier modo
aies de 1 millón. - El tiempo máximo permitido para ejecutar un proceso de transpilación es de 30 minutos por trabajo.
- Debes recuperar el resultado de la transpilación del servicio dentro de los 20 minutos posteriores a que el proceso de transpilación finalice. Pasados 20 minutos, el resultado del trabajo se descarta.
- El tiempo máximo que un conjunto de circuitos puede permanecer en la cola interna mientras espera ser transpilado es de 120 minutos. Pasado ese tiempo, si el trabajo no ha sido transpilado, se descarta.
- El número máximo de qubits no ha sido determinado. El servicio ha sido probado con más de 900 qubits.
Cita
Si usas alguna función potenciada por IA del Qiskit Transpiler Service en tu investigación, utiliza la siguiente cita recomendada:
@misc{2405.13196,
Author = {David Kremer and Victor Villar and Hanhee Paik and Ivan Duran and Ismael Faro and Juan Cruz-Benito},
Title = {Practical and efficient quantum circuit synthesis and transpiling with Reinforcement Learning},
Year = {2024},
Eprint = {arXiv:2405.13196},
}
Próximos pasos
- Aprende cómo crear pases de transpilador con IA.
- Aprende cómo transpilar circuitos como parte del flujo de trabajo de patrones de Qiskit usando Qiskit Runtime.
- Revisa la documentación del cliente Python del Qiskit Transpiler Service.