Saltar al contenido principal

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
Migración del Transpiler Service

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ón default-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, como coupling_map, los ajustes de backend_name son 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 para target.
  • 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ón AIRouting u 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 el optimization_level solicitado. 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étodo transpile() de Qiskit. Si qiskit_transpile_options incluye optimization_level, se descarta en favor del optimization_level especificado como parámetro de entrada. Si qiskit_transpile_options incluye alguna opción no reconocida por el método transpile() 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.

  1. Crea un circuito y llama al Qiskit Transpiler Service para transpilarlo con ibm_torino como backend_name, 3 como optimization_level y 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.

  1. Genera un circuito similar y transpílalo, solicitando capacidades de transpilación con IA al establecer el indicador ai en True:
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)
  1. 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 ai es 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

Recomendaciones