Transpilează circuite de la distanță cu Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Începând cu 18 iulie 2025, serviciul este în curs de migrare pentru a suporta noua platformă IBM Quantum® și nu este disponibil. Pentru pasele AI, poți folosi modul local.
Serviciul este o versiune beta, supusă modificărilor. Dacă ai feedback sau dorești să contactezi echipa de dezvoltare, folosește acest canal din Qiskit Slack Workspace.
Qiskit Transpiler Service oferă capabilități de transpilare în cloud. Pe lângă capabilitățile locale ale Transpiler-ului Qiskit, sarcinile tale de transpilare pot beneficia atât de resursele cloud IBM Quantum, cât și de pasele de transpilare bazate pe AI.
Qiskit Transpiler Service oferă o bibliotecă Python pentru a integra fără dificultăți acest serviciu și capabilitățile sale în fluxurile și tiparele tale Qiskit existente. Acest serviciu este disponibil doar pentru utilizatorii planurilor IBM Quantum Premium, Flex și On-Prem (prin IBM Quantum Platform API).
Instalează pachetul qiskit-ibm-transpiler
Pentru a folosi Qiskit Transpiler Service, instalează pachetul qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
Pachetul se autentifică automat folosind credențialele tale de pe IBM Quantum Platform, în concordanță cu modul în care Qiskit Runtime le gestionează:
- Variabilă de mediu:
QISKIT_IBM_TOKEN - Fișierul de configurare
~/.qiskit/qiskit-ibm.json(sub secțiuneadefault-ibm-quantum).
Notă: Acest pachet necesită Qiskit SDK v1.X.
Opțiunile de transpilare ale qiskit-ibm-transpiler
backend_name(opțional, str) - Un nume de Backend, așa cum ar fi așteptat de QiskitRuntimeService (de exemplu,ibm_torino). Dacă este setat, metoda de transpilare folosește layout-ul din Backend-ul specificat pentru operațiunea de transpilare. Dacă orice altă opțiune care afectează aceste setări este configurată, cum ar ficoupling_map, setărilebackend_namesunt suprascrise.coupling_map(opțional, List[List[int]]) - O listă validă de coupling map (de exemplu, [[0,1],[1,2]]). Dacă este setată, metoda de transpilare folosește acest coupling map pentru operațiunea de transpilare. Dacă este definit, suprascrie orice valoare specificată pentrutarget.optimization_level(int) - Nivelul potențial de optimizare care se aplică în timpul procesului de transpilare. Valorile valide sunt [1,2,3], unde 1 reprezintă cea mai mică optimizare (și cea mai rapidă), iar 3 reprezintă cea mai mare optimizare (și cea mai intensivă din punct de vedere al timpului).ai("true", "false", "auto") - Dacă să se folosească capabilități bazate pe AI în timpul transpilării. Capabilitățile bazate pe AI disponibile pot fi pentru pasele de transpilareAIRoutingsau alte metode de sinteză bazate pe AI. Dacă această valoare este"true", serviciul aplică diferite pase de transpilare bazate pe AI în funcție deoptimization_levelsolicitat. Dacă este"false", folosește cele mai recente funcționalități de transpilare Qiskit fără AI. În final, dacă este"auto", serviciul decide dacă să aplice pasele euristice standard Qiskit sau pasele bazate pe AI în funcție de Circuit-ul tău.qiskit_transpile_options(dict) - Un obiect dicționar Python care poate include orice altă opțiune validă în metoda Qiskittranspile(). Dacăqiskit_transpile_optionsincludeoptimization_level, acesta este ignorat în favoareaoptimization_levelspecificat ca parametru de intrare. Dacăqiskit_transpile_optionsinclude orice opțiune nerecunoscută de metoda Qiskittranspile(), biblioteca generează o eroare.
Pentru mai multe informații despre metodele disponibile ale qiskit-ibm-transpiler, consultă referința API qiskit-ibm-transpiler. Pentru a afla mai multe despre API-ul serviciului, consultă documentația REST API a Qiskit Transpiler Service.
Exemple
Exemplele următoare demonstrează cum să transpilezi circuite folosind Qiskit Transpiler Service cu diferiți parametri.
- Creează un Circuit și apelează Qiskit Transpiler Service pentru a transpila Circuit-ul cu
ibm_torinocabackend_name, 3 caoptimization_level, și fără a folosi AI în timpul transpilării.
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)
Notă: poți folosi doar dispozitive backend_name la care ai acces cu contul tău IBM Quantum. Pe lângă backend_name, TranspilerService permite și coupling_map ca parametru.
- Creează un Circuit similar și transpilează-l, solicitând capabilități de transpilare AI prin setarea flag-ului
ailaTrue:
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)
- Creează un Circuit similar și transpilează-l, lăsând serviciul să decidă dacă să folosească pasele de transpilare bazate pe 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)
Limitele Qiskit Transpiler Service
Următoarele sunt cele mai relevante limitări ale serviciului:
- Numărul maxim de Gate-uri cu doi Qubiți per Circuit într-un job de transpilare în orice mod
aieste de 1 milion. - Timpul maxim permis pentru rularea unui proces de transpilare este de 30 de minute per job.
- Trebuie să recuperezi rezultatul transpilării de la serviciu în termen de 20 de minute după ce procesul de transpilare se încheie. După 20 de minute, rezultatul job-ului este eliminat.
- Timpul maxim în care un set de circuite poate rămâne în coada internă în așteptarea transpilării este de 120 de minute. După acest timp, dacă job-ul nu a fost transpilat, este eliminat.
- Numărul maxim de Qubiți nu a fost determinat. Serviciul a fost testat pe 900+ Qubiți.
Citare
Dacă folosești orice funcționalitate bazată pe AI din Qiskit Transpiler Service în cercetarea ta, utilizează următoarea citare recomandată:
@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},
}
Pași următori
- Află cum să creezi pase AI pentru Transpiler.
- Află cum să transpilezi circuite ca parte a fluxului de lucru Qiskit patterns folosind Qiskit Runtime.
- Consultă documentația clientului Python pentru Qiskit Transpiler Service.