Sari la conținutul principal

Transpilează circuite de la distanță cu Qiskit Transpiler Service

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Migrarea Transpiler Service

Î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țiunea default-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 fi coupling_map, setările backend_name sunt 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ă pentru target.
  • 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 transpilare AIRouting sau alte metode de sinteză bazate pe AI. Dacă această valoare este "true", serviciul aplică diferite pase de transpilare bazate pe AI în funcție de optimization_level solicitat. 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 Qiskit transpile(). Dacă qiskit_transpile_options include optimization_level, acesta este ignorat în favoarea optimization_level specificat ca parametru de intrare. Dacă qiskit_transpile_options include orice opțiune nerecunoscută de metoda Qiskit transpile(), 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.

  1. Creează un Circuit și apelează Qiskit Transpiler Service pentru a transpila Circuit-ul cu ibm_torino ca backend_name, 3 ca optimization_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.

  1. Creează un Circuit similar și transpilează-l, solicitând capabilități de transpilare AI prin setarea flag-ului ai la 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. 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 ai este 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

Recomandări