Přeskočit na hlavní obsah
Tento projekt je v betě. Našel jsi chybu? Otevřít issue na GitHubu. Máš otázku nebo nápad? Zeptej se v Discussions — rádi si poslechneme tvou zpětnou vazbu!
Jaká je kvalita překladu na této stránce?

Úvod do spravovaných workflow

Dostupnost v rámci plánu

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.

From your Python session, you call upload() one time to upload the workflow's code, packages, and compute profiles. No job exists yet. Each call to run(args) creates a job that moves through these stages: Queue, where it waits for allocation with status QUEUED; Start, where the managed workflow creates the environment with status INITIALIZING; Running, where your code can optionally set stages with update_status(): Mapping (RUNNING: MAPPING), Optimizing (RUNNING: OPTIMIZING_FOR_HARDWARE), Waiting for QPU (RUNNING: WAITING_FOR_QPU), Executing QPU (RUNNING: EXECUTING_QPU), and Post-processing (RUNNING: POST_PROCESSING); and Result, where the environment shuts down with status DONE, ERROR, or CANCELED. While running, the job reads and writes workflow file storage, which exists outside the job, is shared by all runs, and persists before and after each job. From your session, you can read status() from Queue onward, logs() from Running onward, and result() after the job reaches Result. All three remain available after the job ends.

Následující tabulka popisuje každou fázi v diagramu a stav úlohy, který během této fáze vidíš:

FázeCo se dějeStav ú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)
FrontaZavoláš run(). Workflow zkontroluje, zda má tvá instance dostatečnou alokaci, a naplánuje úlohu, jakmile jsou k dispozici výpočetní prostředky.QUEUED
StartWorkflow vytvoří prostředí s výpočetním profilem, který jsi vybral.INITIALIZING
BěhSpustí 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.

You call run() with arguments from your Python session and receive status, logs, and the result. Inside the managed workflow, each run executes in an isolated job environment with access to its compute (CPU, RAM, and optionally GPU), your code and packages, and its arguments. The job produces outputs with save_result(), logs, and update_status(), and submits QPU jobs that run on your instance. File storage and your instance, which provides access and cost management, are shared across all managed workflow jobs and persist after the job ends. The job has no internet access.

ProstředekCo může úloha používat
Výpočetní prostředkyCPU, paměť a GPU výpočetního profilu, který jsi pro úlohu vybral.
Kód a balíčkySoubory, které jsi nahrál s workflow, a podporované balíčky nainstalované v prostředí.
ArgumentyArgumenty, které jsi předal do run(). Přečteš je pomocí get_arguments().
Přístup k QPUPř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ýstupyVý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.

ÚkolLokální HPC clusterSpravovaná workflow
Získání výpočetního časuPožá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émuPř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 softwaruSestav 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í úlohyNapiš 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 sweepuOdeš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ěhuNastav limit wall-time.Workflow zruší úlohu po 24 hodinách.
Kontrolní body u dlouhých úlohZapisuj 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é úlohyOdešli úlohu znovu.Zavolej run() znovu. Workflow selhané úlohy automaticky neopakuje.
Monitorování úlohZkontroluj 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​

Doporučení