Přeskočit na hlavní obsah

Úvod do transpilace

Přehled transpilace a příslušných nástrojů – lokálně nebo v cloudu.

Transpilace je proces přepisu zadaného vstupního obvodu tak, aby odpovídal topologii konkrétního kvantového zařízení, a optimalizace instrukcí obvodu pro spuštění na zašuměných kvantových počítačích. Tato dokumentace pokrývá nástroje a pracovní postupy pro lokální transpilaci dostupné všem uživatelům Qiskitu, a také cloudovou službu Qiskit Transpiler Service dostupnou uživatelům plánů Premium, Flex a On-Prem (přes IBM Quantum Platform API). Pokud používáš primitivy a zajímají tě pouze výchozí možnosti transpilace poskytované službou Qiskit Runtime, přečti si téma Konfigurace kompilace za běhu pro Qiskit Runtime.

Proces transpilace vezme obvod obsahující tvoje instrukce:

Dvouqubitový kvantový Circuit obsahující Hadamardovu bránu a dvě CNOT Gate.

Transpilace ho pak transformuje tak, aby byly použity pouze instrukce dostupné na zvoleném Backend, a optimalizuje tyto instrukce, aby minimalizovala vliv šumu:

Tentýž dvouqubitový kvantový Circuit po transpilaci. Obsahuje Gate RZ, X, SX a ECR.


Transpiler je ústřední součástí Qiskit SDK a je navržen s důrazem na modularitu a rozšiřitelnost. Jeho hlavním využitím je psaní nových transformací obvodů (označovaných jako průchody Transpileru), a jejich kombinování s dalšími existujícími průchody, čímž se výrazně snižuje hloubka a složitost kvantových obvodů. To, které průchody jsou řazeny za sebou a v jakém pořadí, má zásadní vliv na výsledek. Tuto pipeline určují objekty PassManager a StagedPassManager. StagedPassManager řídí spouštění jednoho nebo více PassManagerů a určuje pořadí jejich provádění, zatímco objekt PassManager je pouhá kolekce jednoho nebo více průchodů. Představ si StagedPassManager jako dirigenta orchestru, PassManagery jako různé instrumentální sekce a objekty Pass jako jednotlivé muzikanty. Tímto způsobem lze skládat hardwarově efektivní kvantové obvody, které ti umožní provádět práci v užitném měřítku při zachování zvladatelné úrovně šumu.

Více informací o fázích pass manageru najdeš v tématu Fáze Transpileru.

Architektura instrukční sady

Kromě snižování hloubky a složitosti kvantových obvodů je Transpiler navržen k transformaci instrukcí obsažených v daném QuantumCircuit tak, aby odpovídaly architektuře instrukční sady (ISA) konkrétního Backend. Obvody odpovídající ISA obsahují pouze instrukce podporované cílovým objektem Target Backend, jako jsou dostupné základní Gate hardwaru, měření, resety a operace řízeného toku, a splňují omezení daná konektivitou hardwaru, tedy objektem CouplingMap cíle. Při odesílání úlohy na Backend IBM Quantum® musí obvody odpovídat ISA daného Backend.

Fáze Transpileru

Předpřipravená transpilační pipeline Qiskitu se skládá ze šesti základních fází:

  1. init – Tento průchod spouští veškeré počáteční průchody, které jsou nutné před vložením obvodu. Typicky zahrnuje rozbalení vlastních instrukcí a převod obvodu na jednoQubitové a dvouQubitové Gate. Ve výchozím nastavení ověřuje instrukce obvodu a překládá víceQubitové Gate na jednoQubitové a dvouQubitové.
  2. layout – Tento průchod aplikuje layout, který mapuje virtuální Qubity v tvém Circuit na fyzické Qubity QPU.
  3. routing – Tento průchod běží po aplikaci layoutu a vkládá Gate (tedy SWAP) do původního obvodu, aby byl kompatibilní s konektivitou QPU (coupling map).
  4. translation – Tento průchod překládá Gate v Circuit do základní sady instrukcí QPU.
  5. optimization – Tento průchod spouští optimalizační smyčku za účelem nalezení efektivnějších rozkladů kvantového obvodu, dokud není splněna podmínka (např. pevná hloubka).
  6. scheduling – Tato fáze je určena pro hardwarově uvědomělé průchody plánování. Pokud uživatel zadá metodu plánování, tato fáze zohledňuje veškerý nečinný čas v obvodu.

Pokud si přizpůsobuješ transpilační workflow, používej tyto fáze jako vodítko při vývoji.

Transpilace pomocí pass managerů

Doporučený způsob transpilace obvodu je vytvoření staged pass manageru a následné spuštění jeho metody run s tvým obvodem jako vstupem. Pomocí funkce generate_preset_pass_manager lze vygenerovat staged pass manager s rozumnými výchozími nastaveními.

Pokročilejší uživatelé mohou přizpůsobit sadu objektů PassManager a StagedPassManager a určit pořadí, ve kterém se každá fáze spustí. To může dramaticky změnit výsledný výstupní Circuit. Ve skutečnosti vlastní přístup k transpilaci kvantového algoritmu často produkuje efektivnější potlačení chyb než výchozí přístup. Vlastní přístup zahrnuje přepis kvantových obvodů tak, aby odpovídaly hardwarovým omezením a potlačovaly vliv šumu. Tok logiky tohoto nástroje je přizpůsobitelný a nemusí být lineární. Proces transpilace může připravit iterativní smyčky, podmíněné větve a další složité chování. Dobrým výchozím bodem při vývoji sady vlastních průchodů je prozkoumat výchozí posloupnost transformací.

Přehled transpilace pomocí pass managerů najdeš v části Transpilace pomocí pass managerů.

Výchozí transpilace

Pro jednodušší, ale méně přizpůsobitelný způsob použití Transpileru „hned po vybalení" použij funkci qiskit.compiler.transpile. Ta vygeneruje a spustí jeden z předpřipravených objektů StagedPassManager na základě, mimo jiné, příznaku optimization_level, který lze nastavit na 0, 1, 2 nebo 3. Vyšší úrovně generují optimalizovanější obvody za cenu delší doby transpilace.

Další kroky

Doporučení