Přeskočit na hlavní obsah

Vzdálená transpilace obvodů pomocí Qiskit Transpiler Service

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

Od 18. července 2025 probíhá migrace služby na podporu nové platformy IBM Quantum® Platform a služba není dostupná. Pro AI průchody můžeš použít lokální režim.

Služba je ve fázi beta vydání a může se změnit. Pokud máš zpětnou vazbu nebo chceš kontaktovat tým vývojářů, použij prosím tento kanál Qiskit Slack Workspace.

Qiskit Transpiler Service poskytuje schopnosti transpilace v cloudu. Kromě lokálních schopností Qiskit Transpileru mohou tvoje transpilační úlohy využívat cloudové prostředky IBM Quantum i AI-podporované průchody Transpileru.

Qiskit Transpiler Service nabízí knihovnu pro Python, která tuto službu a její schopnosti plynule integruje do tvých stávajících vzorců a pracovních postupů s Qiskitem. Tato služba je dostupná pouze pro uživatele plánů IBM Quantum Premium Plan, Flex Plan a On-Prem (přes IBM Quantum Platform API) Plan.

Instalace balíčku qiskit-ibm-transpiler

Chceš-li používat Qiskit Transpiler Service, nainstaluj balíček qiskit-ibm-transpiler:

pip install qiskit-ibm-transpiler

Balíček se automaticky ověřuje pomocí tvých přihlašovacích údajů IBM Quantum Platform v souladu se způsobem, jakým to spravuje Qiskit Runtime:

  • Proměnná prostředí: QISKIT_IBM_TOKEN
  • Konfigurační soubor ~/.qiskit/qiskit-ibm.json (v sekci default-ibm-quantum).

Poznámka: Tento balíček vyžaduje Qiskit SDK v1.X.

Možnosti transpilace qiskit-ibm-transpiler

  • backend_name (volitelné, str) – Název Backend, jak by byl očekáván službou QiskitRuntimeService (například ibm_torino). Je-li tato možnost nastavena, použije metoda transpile pro transpilaci rozvržení ze zadaného Backend. Pokud je nastavena jiná možnost, která tato nastavení ovlivňuje, například coupling_map, jsou nastavení backend_name přepsána.
  • coupling_map (volitelné, List[List[int]]) – Platný seznam coupling map (například [[0,1],[1,2]]). Je-li tato možnost nastavena, použije metoda transpile tuto coupling map pro transpilační operaci. Je-li definována, přepíše jakoukoli hodnotu zadanou pro target.
  • optimization_level (int) – Potenciální úroveň optimalizace, která se použije během transpilačního procesu. Platné hodnoty jsou [1,2,3], kde 1 znamená nejmenší optimalizaci (a nejrychlejší) a 3 nejvyšší optimalizaci (a nejnáročnější na čas).
  • ai ("true", "false", "auto") – Zda se mají během transpilace použít schopnosti s podporou AI. Dostupné schopnosti s podporou AI mohou zahrnovat průchody AIRouting nebo jiné metody syntézy s podporou AI. Je-li tato hodnota "true", použije služba různé průchody transpilace s podporou AI v závislosti na požadované optimization_level. Při hodnotě "false" se použijí nejnovější funkce transpilace Qiskitu bez AI. A konečně při hodnotě "auto" služba sama rozhodne, zda použije standardní heuristické průchody Qiskitu nebo průchody s podporou AI na základě tvého Circuit.
  • qiskit_transpile_options (dict) – Objekt Python slovníku, který může obsahovat jakoukoli jinou platnou možnost metody Qiskit transpile(). Pokud vstup qiskit_transpile_options obsahuje optimization_level, je ignorován ve prospěch optimization_level zadaného jako parametr. Pokud qiskit_transpile_options obsahuje jakoukoli možnost, kterou metoda Qiskit transpile() nerozpozná, knihovna vyvolá chybu.

Více informací o dostupných metodách qiskit-ibm-transpiler najdeš v referenci API qiskit-ibm-transpiler. Chceš-li se dozvědět více o API služby, podívej se na dokumentaci REST API Qiskit Transpiler Service.

Příklady

Následující příklady ukazují, jak transpilovat Circuit pomocí Qiskit Transpiler Service s různými parametry.

  1. Vytvoř Circuit a zavolej Qiskit Transpiler Service pro transpilaci obvodu s ibm_torino jako backend_name, hodnotou 3 pro optimization_level a bez použití AI během transpilace.
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)

Poznámka: Jako backend_name můžeš použít pouze zařízení, ke kterým máš přístup se svým účtem IBM Quantum. Kromě backend_name umožňuje TranspilerService jako parametr také coupling_map.

  1. Vytvoř podobný Circuit a transpiluj ho s požadavkem na schopnosti transpilace s AI nastavením příznaku ai na 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. Vytvoř podobný Circuit a transpiluj ho tak, aby se služba sama rozhodla, zda použít průchody transpilace s podporou 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)

Limity Qiskit Transpiler Service

Níže jsou uvedena nejdůležitější omezení služby:

  • Maximální počet dvoukubitových Gate na Circuit v transpilační úloze v jakémkoli režimu ai je 1 milion.
  • Maximální povolená doba pro spuštění transpilačního procesu je 30 minut na úlohu.
  • Výsledek transpilace ze služby musíš načíst do 20 minut po ukončení transpilačního procesu. Po 20 minutách je výsledek úlohy zahozen.
  • Maximální doba, po kterou může sada Circuit čekat ve vnitřní frontě na transpilaci, je 120 minut. Po uplynutí této doby je úloha, pokud nebyla transpilována, zahozena.
  • Maximální počet Qubit nebyl stanoven. Služba byla testována na 900+ Qubitech.

Citace

Pokud ve svém výzkumu používáš jakékoli funkce s podporou AI ze Qiskit Transpiler Service, použij následující doporučenou citaci:

@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},
}

Další kroky

Doporučení