Integrace toku výzvy s DevOps na základě LLM

V tomto článku se dozvíte o integraci toku výzvy s DevOps aplikací založenými na LLM ve službě Azure Machine Učení. Tok prompt nabízí prostředí pro vývoj a iteraci s celým pracovním postupem vývoje aplikací založeným na LLM a snadné použití kódu.

Poskytuje sadu SDK a rozhraní příkazového řádku, rozšíření VS Code a nové uživatelské rozhraní Průzkumníka složek toku, které usnadňuje místní vývoj toků, místní spouštění spuštění a vyhodnocení spuštění toku a přechod toků z místního prostředí do cloudu (pracovní prostor Azure Machine Učení).

Tato dokumentace se zaměřuje na efektivní kombinování možností prostředí kódu toku výzvy a DevOps za účelem vylepšení pracovních postupů vývoje aplikací založených na LLM.

Diagram of the showing the following flow: create flow, develop and test flow, versioning in code repo, submit runs to cloud, and debut and iteration.

Úvod do prostředí prvního kódu v toku výzvy

Při vývoji aplikací pomocí LLM je běžné mít standardizovaný proces přípravy aplikací, který zahrnuje úložiště kódu a kanály CI/CD. Tato integrace umožňuje zjednodušený vývojový proces, správu verzí a spolupráci mezi členy týmu.

Pro vývojáře, kteří mají zkušenosti s vývojem kódu, kteří hledají efektivnější proces iterace LLMOps, získáte následující klíčové funkce a výhody, které získáte z prostředí kódu toku výzvy:

  • Správa verzí toku v úložišti kódu Tok můžete definovat ve formátu YAML, který zůstane v souladu s odkazovanými zdrojovými soubory ve struktuře složek.
  • Integrace spuštění toku s kanálem CI/CD Spuštění toku můžete aktivovat pomocí příkazového rozhraní příkazového řádku nebo sady SDK, které je možné bezproblémově integrovat do kanálu CI/CD a procesu doručování.
  • Hladký přechod z místního do cloudu. Složku toku můžete snadno exportovat do místního úložiště kódu pro správu verzí, místní vývoj a sdílení. Podobně je možné složku toku snadno importovat zpět do cloudu pro další vytváření, testování a nasazení v cloudových prostředcích.

Přístup k definici kódu toku výzvy

Každý tok každý tok výzvy je přidružený ke struktuře složek toku, která obsahuje základní soubory pro definování toku ve struktuře složek kódu. Tato struktura složek uspořádá tok a usnadňuje plynulejší přechody.

Azure Machine Učení nabízí sdílený systém souborů pro všechny uživatele pracovního prostoru. Při vytváření toku se automaticky vygeneruje a uloží odpovídající složka toku v adresáři Users/<username>/promptflow .

Screenshot of standard flow creation showing the create a new flow.

Struktura složek flow

Přehled struktury složek toku a klíčových souborů, které obsahuje:

  • flow.dag.yaml: Tento primární definiční soubor toku ve formátu YAML obsahuje informace o vstupech, výstupech, uzlech, nástrojích a variantách použitých v toku. Je nedílnou součástí vytváření a definování toku výzvy.
  • Soubory zdrojového kódu (.py, .jinja2):: Složka flow obsahuje také soubory zdrojového kódu spravované uživatelem, na které odkazují nástroje nebo uzly v toku.
    • Soubory ve formátu Pythonu (.py) můžou odkazovat nástroj Pythonu pro definování vlastní logiky Pythonu.
    • Soubory ve formátu Jinja 2 (.jinja2) mohou být odkazovány nástrojem výzvy nebo nástrojem LLM pro definování kontextu výzvy.
  • Jiné než zdrojové soubory: Složka toku může obsahovat také jiné než zdrojové soubory, jako jsou soubory nástrojů a datové soubory, které mohou být zahrnuty do zdrojových souborů.

Po vytvoření toku můžete přejít na stránku vytváření toku a zobrazit a pracovat se soubory toku v pravém Průzkumníku souborů. To vám umožní zobrazovat, upravovat a spravovat soubory. Všechny změny souborů se přímo projeví v úložišti sdílených složek.

Screenshot of standard flow highlighting the files explorer.

Když je zapnutý režim nezpracovaného souboru, můžete zobrazit a upravit nezpracovaný obsah souborů v editoru souborů, včetně definičního souboru flow.dag.yaml toku a zdrojových souborů.

Screenshot of raw file mode on a standard flow.

Screenshot of flow source file in a standard flow.

Alternativně můžete přistupovat ke všem složkám toku přímo v poznámkovém bloku Azure Machine Učení.

Screenshot of notebooks in Azure Machine Learning in the prompt flow folder showing the files.

Tok výzvy pro správu verzí v úložišti kódu

Pokud chcete tok zkontrolovat do úložiště kódu, můžete snadno exportovat složku toku ze stránky pro vytváření toku do místního systému. Tím se stáhne balíček obsahující všechny soubory z průzkumníka do místního počítače, který pak můžete zkontrolovat v úložišti kódu.

Screenshot of showing the download button in the file explorer.

Další informace o integraci DevOps se službou Azure Machine Učení najdete v tématu Integrace Gitu ve službě Azure Machine Učení

Odesílání spuštění do cloudu z místního úložiště

Požadavky

  • Dokončete vytváření prostředků, abyste mohli začít, pokud ještě nemáte pracovní prostor azure machine Učení.

  • Prostředí Pythonu, ve kterém jste nainstalovali Azure Machine Učení Python SDK v2 – pokyny k instalaci. Toto prostředí slouží k definování a řízení prostředků azure machine Učení a je oddělené od prostředí používaného za běhu. Další informace najdete v tématu správa modulu runtime pro přípravu toku výzvy.

Instalace sady FLOW SDK výzvy

pip install -r ../../examples/requirements.txt

Připojení do pracovního prostoru Azure Machine Učení

az login

run.yml Připravte konfiguraci pro spuštění tohoto toku v cloudu.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

column_mapping:
  url: ${data.url}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

Pro každý nástroj v toku můžete zadat název připojení a nasazení. Pokud nezadáte název připojení a nasazení, použije se v souboru jedno připojení a nasazení flow.dag.yaml . Formát připojení:

...
connections:
  <node_name>:
    connection: <connection_name>
      deployment_name: <deployment_name>
...

pfazure run create --file run.yml

run_evaluation.yml Připravte konfiguraci pro tento tok vyhodnocení spuštěný v cloudu.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
  groundtruth: ${data.answer}
  prediction: ${run.outputs.category}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specif automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

pfazure run create --file run_evaluation.yml

Zobrazení výsledků spuštění v pracovním prostoru Azure Machine Učení

Odeslání spuštění toku do cloudu vrátí adresu URL portálu spuštění. Výsledky spuštění můžete otevřít na portálu.

K zobrazení výsledků spuštění můžete použít také následující příkaz.

Streamování protokolů

pfazure run stream --name <run_name>

Zobrazení výstupů spuštění

pfazure run show-details --name <run_name>

Zobrazení metrik spuštění vyhodnocení

pfazure run show-metrics --name <evaluation_run_name>

Důležité

Další informace najdete v dokumentaci k rozhraní příkazového řádku toku pro Azure.

Iterativní vývoj z jemného ladění

Místní vývoj a testování

Při iterativním vývoji může být užitečné provádět několik iterací místně v úložišti kódu při upřesňování a doladění toku nebo výzev. Komunitní verze, rozšíření flow VS Code a výzva k vytvoření výzvy místní sady SDK a rozhraní příkazového řádku je k dispozici k usnadnění čistého místního vývoje a testování bez vazby Azure.

Zobrazení výzvy rozšíření VS Code toku

S nainstalovaným rozšířením VS Code toku výzvy můžete snadno vytvořit tok místně z editoru VS Code a poskytnout podobné uživatelské rozhraní jako v cloudu.

Použití rozšíření:

  1. Otevřete složku toku výzvy v desktopové verzi VS Code.
  2. Otevřete soubor flow.dag.yaml v zobrazení poznámkového bloku.
  3. Pomocí vizuálního editoru proveďte potřebné změny toku, například vylaďte výzvy ve variantách nebo přidejte další nástroje.
  4. Pokud chcete tok otestovat, vyberte tlačítko Spustit tok v horní části editoru vizuálů. Tím se aktivuje tokový test.

Screenshot of VS Code showing running the flow in the visual editor.

Výzva k místní sadě SDK a rozhraní příkazového řádku toku

Pokud raději používáte Jupyter, PyCharm, Visual Studio nebo jiné integrované vývojové prostředí(ID), můžete přímo upravit definici YAML v flow.dag.yaml souboru.

Screenshot of a yaml file in VS Code highlighting the default input and flow directory.

Pak můžete aktivovat jedno spuštění toku pro testování pomocí příkazového rozhraní příkazového řádku nebo sady SDK.

Za předpokladu, že jste v pracovním adresáři <path-to-the-sample-repo>/examples/flows/standard/

pf flow test --flow web-classification  # "web-classification" is the directory name

Screenshot of the flow test output in PowerShell.

Díky tomu můžete rychle provádět a testovat změny, aniž byste museli pokaždé aktualizovat hlavní úložiště kódu. Jakmile budete s výsledky místního testování spokojeni, můžete ho přenést do cloudu z místního úložiště a spustit experimenty v cloudu.

Další podrobnosti a pokyny k používání místních verzí najdete v komunitě GitHubu s výzvou.

Přechod zpět do uživatelského rozhraní studia pro průběžný vývoj

Alternativně můžete přejít zpět do uživatelského rozhraní studia pomocí cloudových prostředků a prostředí pro provádění změn toku na stránce vytváření toku.

Pokud chcete pokračovat v vývoji a práci s nejaktuálnější verzí souborů toku, můžete získat přístup k terminálu v poznámkovém bloku a vyžádat si nejnovější změny souborů toku z úložiště.

Pokud navíc chcete pokračovat v práci v uživatelském rozhraní studia, můžete přímo importovat místní složku toku jako nový tok konceptu. Díky tomu můžete bezproblémově přecházet mezi místním a cloudovým vývojem.

Screenshot of the create a new flow panel with upload to local highlighted.

Integrace CI/CD

CI: Spuštění toku triggeru v kanálu CI

Po úspěšném vývoji a otestování toku a jeho vrácení se změnami jako počáteční verze jste připraveni na další ladění a testování iterace. V této fázi můžete aktivovat spuštění toku, včetně dávkových testů a spuštění vyhodnocení, pomocí rozhraní příkazového řádku toku. To může sloužit jako automatizovaný pracovní postup v kanálu kontinuální integrace (CI).

Během životního cyklu iterací toku je možné automatizovat několik operací:

  • Spuštění toku výzvy po žádosti o přijetí změn
  • Spuštění vyhodnocení toku výzvy k zajištění vysoké kvality výsledků
  • Registrace modelů toku výzvy
  • Nasazení modelů toku výzvy

Komplexní průvodce kompletním kanálem MLOps, který spouští tok klasifikace webu, najdete v tématu Nastavení kompletního LLMOps s výzvou Flow a GitHubem a ukázkovým projektem GitHubu.

CD: Průběžné nasazování

Posledním krokem pro přechod do produkčního prostředí je nasazení toku jako online koncového bodu ve službě Azure Machine Učení. To vám umožní integrovat tok do vaší aplikace a zpřístupnit ho pro použití.

Další informace o tom, jak tok nasadit, najdete v tématu Nasazení toků do služby Azure Machine Učení spravovaného online koncového bodu pro odvozování v reálném čase pomocí rozhraní příkazového řádku a sady SDK.

Spolupráce na vývoji toků v produkčním prostředí

V kontextu vývoje aplikace založené na LLM s tokem výzvy je spolupráce mezi členy týmu často zásadní. Členové týmu mohou být zapojeni do stejného vytváření a testování toku, práci na různých omezujících vlastností toku nebo provádění iterativních změn a vylepšení současně.

Taková spolupráce vyžaduje efektivní a zjednodušený přístup ke sdílení kódu, sledování úprav, správě verzí a integraci těchto změn do konečného projektu.

Zavedení sady SDK/CLI příkazového řádku a rozšíření editoru Visual Studio Code v rámci prostředí kódu pro tok výzvy usnadňuje snadnou spolupráci při vývoji toku v úložišti kódu. Ke sledování změn, správě verzí a integraci těchto úprav do konečného projektu doporučujeme využít cloudové úložiště kódu, jako je GitHub nebo Azure DevOps.

Osvědčené postupy pro spolupráci při vývoji

  1. Vytváření a místní testování toku – úložiště kódu a rozšíření VSC

    • Prvním krokem tohoto procesu spolupráce je použití úložiště kódu jako základ pro kód projektu, který zahrnuje kód toku výzvy.
      • Toto centralizované úložiště umožňuje efektivní organizaci, sledování všech změn kódu a spolupráci mezi členy týmu.
    • Po nastavení úložiště můžou členové týmu použít rozšíření VSC pro místní vytváření a testování toku s jedním vstupem.
      • Toto standardizované integrované vývojové prostředí podporuje spolupráci mezi několika členy pracujícími na různých aspektech toku. Screenshot of local development.
  2. Cloudové experimentální dávkové testování a hodnocení – příkazové rozhraní příkazového řádku nebo sady SDK a portálu pracovního prostoru

    • Vývojáři toku můžou po místní fázi vývoje a testování odesílat dávkové spuštění a vyhodnocení ze souborů místního toku do cloudu pomocí rozhraní příkazového řádku pfazure nebo sady SDK.
      • Tato akce poskytuje způsob, jak využívat cloudové prostředky, výsledky se budou trvale ukládat a efektivně spravovat pomocí uživatelského rozhraní portálu v pracovním prostoru Azure Machine Učení. Tento krok umožňuje využití cloudových prostředků, včetně výpočetních prostředků a úložiště a dalšího koncového bodu pro nasazení. Screenshot of pfazure command to submit run to cloud.
    • Po odeslání do cloudu mají členové týmu přístup k uživatelskému rozhraní cloudového portálu, aby mohli efektivně zobrazit výsledky a spravovat experimenty.
      • Tento cloudový pracovní prostor poskytuje centralizované umístění pro shromažďování a správu všech historie spuštění, protokolů, snímků, komplexních výsledků včetně vstupů a výstupů na úrovni instance. Screenshot of cloud run snapshot.
      • V seznamu spuštění, který zaznamenává veškerou historii spuštění z průběhu vývoje, můžou členové týmu snadno porovnat výsledky různých spuštění, které pomáhají při analýze kvality a nezbytných úpravách. Screenshot of run list in workspace. Screenshot of run comparison in workspace.
  3. Místní iterativní vývoj nebo jednostupňové nasazení uživatelského rozhraní pro produkční prostředí

    • Po analýze experimentů se členové týmu můžou vrátit do úložiště kódu pro další vývoj a vyladění. Následná spuštění se pak dají odeslat do cloudu iterativním způsobem.
      • Tento iterativní přístup zajišťuje konzistentní vylepšení, dokud tým nebude spokojen s kvalitou připravenou pro produkční prostředí.
    • Jakmile je tým plně přesvědčený o kvalitě toku, můžete ho bez problémů nasadit prostřednictvím průvodce uživatelským rozhraním jako online koncový bod ve službě Azure Machine Učení. Jakmile je tým zcela přesvědčený o kvalitě toku, můžete ho bezproblémově převést do produkčního prostředí prostřednictvím průvodce nasazením uživatelského rozhraní jako online koncový bod v robustním cloudovém prostředí.
      • Toto nasazení na online koncovém bodu může být založené na snímku spuštění, což umožňuje stabilní a zabezpečené obsluhy, další přidělování prostředků a sledování využití a monitorování protokolů v cloudu. Screenshot of deploying flow from a run snapshot. Screenshot of deploy wizard.

Proč doporučujeme používat úložiště kódu pro spolupráci při vývoji

Pro iterativní vývoj je obvykle efektivnější kombinace místního vývojového prostředí a systému správy verzí, jako je Git. Kód můžete upravit a otestovat místně a pak změny potvrdit do Gitu. Tím se vytvoří průběžný záznam změn a v případě potřeby se můžete vrátit k dřívějším verzím.

Při sdílení toků mezi různými prostředími je vhodné použít cloudové úložiště kódu, jako je GitHub nebo Azure Repos. To vám umožní přístup k nejnovější verzi kódu z libovolného místa a poskytuje nástroje pro spolupráci a správu kódu.

Podle tohoto osvědčeného postupu můžou týmy vytvořit bezproblémové, efektivní a produktivní prostředí pro spolupráci pro vývoj toků.

Další kroky