Úvod do transpilace
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. Pokud používáš primitivy a zajímají tě pouze výchozí možnosti transpilace poskytované IBM Quantum Compute Service, přečti si téma Chyby zmírňování a supresi techniky.
Proces transpilace vezme obvod obsahující tvoje instrukce:
Transpilace ho pak transformuje tak, aby byly použity pouze instrukce dostupné na zvoleném Backend, a optimalizuje tyto instrukce, aby minimalizovala vliv šumu:
Transpiler, klíčová součást Qiskit SDK, je navržen pro modularitu a rozšiřitelnost. Jeho hlavním účelem je psát nové transformace Circuit (známé jako passes transpileru) a kombinovat je s dalšími existujícími passes, čímž se výrazně snižuje hloubka a složitost kvantových Circuit. To, které passes jsou spojeny dohromady a v jakém pořadí, má zásadní vliv na konečný výsledek. Tento pipeline je určen objekty PassManager a StagedPassManager. StagedPassManager řídí provádění jednoho nebo více PassManagers a určuje pořadí, ve kterém jsou prováděny, zatímco objekt PassManager je jen kolekcí jednoho nebo více passes. Představ si StagedPassManager jako dirigenta orchestru, PassManagers jako různé nástrojové sekce a objekty Pass jako jednotlivé hudebníky. Tímto způsobem můžeš skládat hardwarově efektivní kvantové Circuit, které ti umožní provádět práci ve velkém měřítku (utility-scale) a přitom udržet šum pod kontrolou.
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í:
-
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é. -
layout– Tento průchod aplikuje layout, který mapuje virtuální Qubity v tvém Circuit na fyzické Qubity QPU. -
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). -
translation– Tento průchod překládá Gate v Circuit do základní sady instrukcí QPU. -
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). -
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
- Chceš-li se naučit používat funkci
generate_preset_passmanager, začni tématem Výchozí nastavení a možnosti konfigurace transpilace. - Pokračuj ve studiu transpilace tématem Fáze Transpileru.
- Vyzkoušej průvodce Porovnání nastavení Transpileru.
- Vyzkoušej end-to-end příklad používající transpilované obvody v tutoriálu Odhad energie základního stavu Heisenbergova řetězce pomocí VQE.
- Viz dokumentace Transpile API.
- Zjisti, jak transpilovat obvody.