Úvod do spravovaných workflow
Qiskit Functions a spravovaná workflow jsou beta funkce dostupné pouze uživatelům plánů Premium, Flex a On-Prem (prostřednictvím IBM Quantum® Platform API).
Spravovaná workflow spouštějí tvůj vlastní kód v Pythonu na klasických výpočetních prostředcích, které za tebe spravuje IBM Quantum Platform. Spravovaná workflow používej ke spouštění hybridních kvantově-klasických workflow, rozsáhlé diagonalizace a dlouho běžících paralelních úloh, aniž bys musel spravovat výpočetní infrastrukturu nebo úložiště.
Kdy použít spravované workflow
Spravované workflow použij, když tvůj úkol nepokrývá žádná předpřipravená Catalog Function nebo když chceš zabalit vlastní metodu jako opakovaně použitelnou funkci. Spravovaná workflow se hodí, když chceš udělat následující:
-
Spouštět dlouhé úlohy v cloudu. Spravované workflow běží dál, i když zavřeš notebook, a k úloze se můžeš později znovu připojit.
-
Používat uzly s velkou pamětí a GPU. Vyber prostředky paměti, CPU a GPU, které zátěž potřebuje.
-
Spouštět úlohy paralelně. Spusť mnoho jednouzlových úloh současně.
Poskytuješ kód workflow, jeho závislosti a velikosti výpočetních prostředků, které podporuje. Spravovaná workflow spouštějí workflow na výpočetních prostředcích spravovaných IBM® v předpřipraveném prostředí s nainstalovanými tvými balíčky a poskytují cloudové úložiště pro soubory, které workflow čte a zapisuje.
Jak spravovaná workflow fungují
Workflow nahraješ jednou a spustíš tolik úloh, kolik potřebuješ. Každá úloha funguje následujícím způsobem:
-
Úloha se spustí v novém prostředí s prázdným lokálním diskem. Spravovaná workflow vypnou prostředí po skončení úlohy.
-
Úloha běží na jedné z velikostí výpočetních prostředků, které definuješ při nahrávání workflow. Pro každý běh můžeš zvolit jinou velikost.
-
Úloha může číst a zapisovat do souborového úložiště workflow. Soubory v souborovém úložišti zůstávají i po skončení úlohy.
Protože každá úloha začíná s prázdným lokálním diskem, pozdější úloha najde pouze soubory, které dřívější úloha uložila do souborového úložiště.
Životní cyklus běhu
Každá úloha běží asynchronně nejdéle 24 hodin. Pokud má tvá instance dostatečnou alokaci, můžeš mít současně až 50 aktivních úloh.
Následující tabulka popisuje každou fázi v diagramu a stav úlohy, který během této fáze vidíš:
| Fáze | Co se děje | Stav úlohy |
|---|---|---|
| Nahrání | Nahraješ kód workflow, závislosti a velikosti. Workflow neplatné nahrání odmítne dříve, než se spustí jakákoli úloha. | Žádný (úloha ještě neexistuje) |
| Fronta | Zavoláš run(). Workflow zkontroluje, zda má tvá instance dostatečnou alokaci, a naplánuje úlohu, jakmile jsou k dispozici výpočetní prostředky. | QUEUED |
| Start | Workflow vytvoří prostředí s výpočetním profilem, který jsi vybral. | INITIALIZING |
| Běh | Spustí se entrypoint tvého workflow. Entrypoint může hlásit svůj průběh pomocí update_status() a jeho protokoly můžeš během běhu číst pomocí logs(). | RUNNING nebo fáze, kterou nastavíš, například RUNNING: WAITING_FOR_QPU |
| Výsledek | Úloha skončí a workflow vypne své prostředí, přičemž zachová výsledek a protokoly. | DONE, ERROR nebo CANCELED |
K čemu má běžící úloha přístup
Každá úloha běží v izolovaném prostředí. Následující diagram a tabulka ukazují prostředky, které může běžící úloha používat.
| Prostředek | Co může úloha používat |
|---|---|
| Výpočetní prostředky | CPU, paměť a GPU výpočetního profilu, který jsi pro úlohu vybral. |
| Kód a balíčky | Soubory, které jsi nahrál s workflow, a podporované balíčky nainstalované v prostředí. |
| Argumenty | Argumenty, které jsi předal do run(). Přečteš je pomocí get_arguments(). |
| Přístup k QPU | Přihlašovací údaje a instance, které jsi použil při volání run(). Úlohy na QPU, které workflow odesílá, běží na tvé instanci a započítávají se do tvé spotřeby. |
| Výstupy | Výsledek, který úloha uloží pomocí save_result(), protokoly, které úloha vypisuje, a aktualizace stavu, které úloha nastaví pomocí update_status(). |
| Souborové úložiště | Soubory, které sdílejí všechny tvé běhy workflow. Soubory zůstávají v úložišti i po skončení úlohy. |
| Internet | Žádný přístup. Úloha nemůže navazovat odchozí spojení. Balíčky deklaruj při nahrávání workflow a data poskytni jako argumenty nebo soubory. |
Zabezpečení a izolace
Spravovaná workflow izolují každou úlohu od ostatních úloh a omezují oprávnění kódu, který v ní běží. Hranice přístupu v předchozí tabulce jsou součástí této izolace. Spravovaná workflow také uplatňují následující ochrany:
-
Izolace úloh. V prostředí tvé úlohy neběží žádná jiná úloha. To zahrnuje úlohy jiných uživatelů i tvé vlastní úlohy, které běží současně.
-
Výsledky, protokoly a úložiště. Výsledky a protokoly úlohy může číst pouze uživatel, který ji spustil.
-
Přihlašovací údaje. Spravovaná workflow šifrují přihlašovací údaje, které úloha používá, včetně tvého API tokenu, když je ukládají. Kód tvého workflow může tyto přihlašovací údaje číst, dokud úloha běží.
-
Oprávnění. Spravovaná workflow odeberou z prostředí oprávnění na úrovni správce dříve, než se spustí tvůj entrypoint.
Srovnání s lokálním HPC
Spravovaná workflow se od lokálního HPC clusteru liší tím, jak získáváš výpočetní čas, nastavuješ software a odesíláš úlohy. Následující tabulka porovnává běžné úkoly.
| Úkol | Lokální HPC cluster | Spravovaná workflow |
|---|---|---|
| Získání výpočetního času | Požádej správce clusteru o alokaci nebo rezervaci. | Použij alokaci své instance IBM Quantum. Workflow zařadí každou úlohu do fronty, když zavoláš run(). |
| Přístup k systému | Připoj se k přihlašovacímu uzlu přes SSH. | Použij klienta v Pythonu na svém lokálním počítači. Spravovaná workflow neposkytují přihlašovací uzel. |
| Instalace softwaru | Sestav software, načti moduly nebo požádej správce o instalaci balíčků. | Použij podporované balíčky nainstalované v každém prostředí nebo nahraj wheel soubory pro další balíčky. |
| Odeslání úlohy | Napiš dávkový skript a odešli ho plánovači. | Zavolej run() s argumenty úlohy. |
| Vyžádání prostředků | Vyžádej si uzly, CPU, paměť a GPU. | Vyber jednu z velikostí výpočetních prostředků definovaných pro workflow. Každá úloha běží na jednom uzlu. |
| Spuštění parametrického sweepu | Odešli pole úloh. | Zavolej run() jednou pro každou sadu argumentů. |
| Ukládání sdílených souborů | Zapisuj do sdíleného scratch souborového systému. | Zapisuj do souborového úložiště workflow. |
| Omezení doby běhu | Nastav limit wall-time. | Workflow zruší úlohu po 24 hodinách. |
| Kontrolní body u dlouhých úloh | Zapisuj kontrolní body do scratch úložiště. | Ukládej průběžné výsledky do souborového úložiště. |
| Opětovné spuštění selhané úlohy | Odešli úlohu znovu. | Zavolej run() znovu. Workflow selhané úlohy automaticky neopakuje. |
| Monitorování úloh | Zkontroluj frontu a soubory protokolů z přihlašovacího uzlu. | Zkontroluj stav, protokoly a výsledek každé úlohy ze své lokální session v Pythonu. |
Další kroky
- Nainstaluj klientské balíčky a proveď autentizaci.
- Nasaď své první spravované workflow, abys nahrál workflow, spustil ho a získal jeho výsledek.