Traspilar circuit in remoto con il Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
A partire dal 18 luglio 2025, il servizio è in fase di migrazione per supportare la nuova IBM Quantum® Platform e non è disponibile. Per i pass AI, puoi utilizzare la modalità locale.
Il servizio è una versione beta, soggetta a modifiche. Se hai feedback o vuoi contattare il team di sviluppo, utilizza questo canale del Qiskit Slack Workspace.
Il Qiskit Transpiler Service fornisce funzionalità di traspirazione sul cloud. Oltre alle funzionalità del transpiler Qiskit locale, le tue attività di traspirazione possono beneficiare sia delle risorse cloud di IBM Quantum che dei pass del transpiler basati sull'AI.
Il Qiskit Transpiler Service offre una libreria Python per integrare perfettamente questo servizio e le sue funzionalità nei tuoi pattern e flussi di lavoro Qiskit esistenti. Questo servizio è disponibile esclusivamente per gli utenti dei piani IBM Quantum Premium, Flex e On-Prem (tramite IBM Quantum Platform API).
Installare il pacchetto qiskit-ibm-transpiler
Per utilizzare il Qiskit Transpiler Service, installa il pacchetto qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
Il pacchetto esegue l'autenticazione automaticamente usando le tue credenziali di IBM Quantum Platform, in linea con come Qiskit Runtime le gestisce:
- Variabile d'ambiente:
QISKIT_IBM_TOKEN - File di configurazione
~/.qiskit/qiskit-ibm.json(nella sezionedefault-ibm-quantum).
Nota: questo pacchetto richiede Qiskit SDK v1.X.
Opzioni di traspirazione di qiskit-ibm-transpiler
backend_name(opzionale, str) — Il nome di un backend così come verrebbe specificato da QiskitRuntimeService (ad esempio,ibm_torino). Se impostato, il metodo di traspirazione utilizza il layout del backend specificato per l'operazione di traspirazione. Se viene impostata un'altra opzione che influisce su queste impostazioni, comecoupling_map, le impostazioni dibackend_namevengono sovrascritte.coupling_map(opzionale, List[List[int]]) — Una lista valida di coupling map (ad esempio, [[0,1],[1,2]]). Se impostata, il metodo di traspirazione utilizza questa coupling map per l'operazione di traspirazione. Se definita, sovrascrive qualsiasi valore specificato pertarget.optimization_level(int) — Il livello di ottimizzazione potenziale da applicare durante il processo di traspirazione. I valori validi sono [1,2,3], dove 1 corrisponde alla minima ottimizzazione (e alla massima velocità), e 3 alla massima ottimizzazione (e al maggiore dispendio di tempo).ai("true", "false", "auto") — Indica se utilizzare le funzionalità basate sull'AI durante la traspirazione. Le funzionalità AI disponibili possono riguardare i pass di traspirazioneAIRoutingo altri metodi di sintesi basati sull'AI. Se il valore è"true", il servizio applica diversi pass di traspirazione basati sull'AI in base all'optimization_levelrichiesto. Se è"false", utilizza le ultime funzionalità di traspirazione di Qiskit senza AI. Infine, se è"auto", il servizio decide autonomamente se applicare i pass euristici standard di Qiskit o i pass basati sull'AI in base al tuo circuit.qiskit_transpile_options(dict) — Un oggetto dizionario Python che può includere qualsiasi altra opzione valida nel metodotranspile()di Qiskit. Se l'inputqiskit_transpile_optionsincludeoptimization_level, questo viene ignorato in favore dell'optimization_levelspecificato come parametro in ingresso. Seqiskit_transpile_optionsinclude un'opzione non riconosciuta dal metodotranspile()di Qiskit, la libreria genera un errore.
Per ulteriori informazioni sui metodi disponibili di qiskit-ibm-transpiler, consulta il riferimento API di qiskit-ibm-transpiler. Per saperne di più sull'API del servizio, consulta la documentazione REST API del Qiskit Transpiler Service.
Esempi
Gli esempi seguenti mostrano come traspilare circuit usando il Qiskit Transpiler Service con diversi parametri.
- Crea un circuit e chiama il Qiskit Transpiler Service per traspilarlo con
ibm_torinocomebackend_name, 3 comeoptimization_level, e senza utilizzare l'AI durante la traspirazione.
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: puoi utilizzare solo i dispositivi backend_name a cui hai accesso con il tuo account IBM Quantum. Oltre al backend_name, il TranspilerService accetta anche coupling_map come parametro.
- Produci un circuit simile e traspilalo, richiedendo le funzionalità di traspirazione AI impostando il flag
aisuTrue:
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)
- Produci un circuit simile e traspilalo lasciando che il servizio decida se utilizzare i pass di traspirazione basati sull'AI.
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)
Limiti del Qiskit Transpiler Service
Di seguito sono riportate le limitazioni più rilevanti del servizio:
- Il numero massimo di gate a due qubit per circuit in un job di traspirazione in qualsiasi modalità
aiè 1 milione. - Il tempo massimo consentito per eseguire un processo di traspirazione è di 30 minuti per job.
- Devi recuperare il risultato della traspirazione dal servizio entro 20 minuti dal termine del processo di traspirazione. Dopo 20 minuti, il risultato del job viene eliminato.
- Il tempo massimo in cui un insieme di circuit può rimanere nella coda interna in attesa di essere traspilati è di 120 minuti. Trascorso quel tempo, se il job non è stato traspilato, viene eliminato.
- Il numero massimo di qubit non è stato determinato. Il servizio è stato testato su oltre 900 qubit.
Citazione
Se utilizzi funzionalità basate sull'AI del Qiskit Transpiler Service nella tua ricerca, usa la seguente citazione consigliata:
@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},
}
Passi successivi
- Scopri come creare pass del transpiler AI.
- Impara come traspilare circuit come parte del flusso di lavoro dei pattern Qiskit usando Qiskit Runtime.
- Consulta la documentazione del client Python del Qiskit Transpiler Service.