Sdílet prostřednictvím


GenAIOps s tokem výzvy a Azure DevOps

Vzhledem k tomu, že poptávka po aplikacích s využitím LLM roste, organizace potřebují ucelený a zjednodušený proces pro správu kompletního životního cyklu těchto aplikací. Operace generování umělé inteligence (GenAIOps), někdy označované jako LLMOps, je základním kamenem efektivního technického inženýrství a vývoje a nasazení aplikací s využitím LLM.

Tento článek ukazuje, jak azure Machine Learning umožňuje integraci s Azure DevOps, abyste automatizovali životní cyklus vývoje aplikací s sadou LLM s využitím toku výzvy. Tok výzvy poskytuje zjednodušený a strukturovaný přístup k vývoji aplikací s sadou LLM. Jeho dobře definovaný proces a životní cyklus vás provedou procesem sestavování, testování, optimalizace a nasazování toků, které vedou k vytváření plně funkčních řešení s využitím LLM.

Funkce toku výzvy GenAIOps

GenAIOps s tokem výzvy používá šablonu GenAIOps a pokyny, které vám pomůžou vytvářet aplikace s využitím toku výzvy. GenAIOps s tokem výzvy má možnosti pro jednoduché nebo složité aplikace s využitím LLM a je přizpůsobitelné potřebám aplikace.

GenAIOps s platformou toku výzvy poskytuje následující funkce:

  • Centralizované hostování kódu Úložiště podporuje hostování kódu pro několik toků výzvy a poskytuje jediné úložiště pro všechny vaše toky. Toto úložiště je jako knihovna pro vaše toky, což usnadňuje hledání, přístup a spolupráci na různých projektech.

  • Správa životního cyklu Každý tok má svůj vlastní životní cyklus, který poskytuje hladký přechod z místního experimentování na produkční nasazení.

  • Experimentování variant a hyperparametrů Varianty a hyperparametry jsou jako složky v receptu. Platforma umožňuje experimentovat s různými kombinacemi variant napříč několika uzly v toku. Můžete experimentovat s několika variantami a hyperparametry, abyste mohli snadno vyhodnotit varianty toku.

  • Více cílů nasazení Platforma generuje image Dockeru naplněné vaším tokem a výpočetní relací pro nasazení do libovolné cílové platformy a operačního systému, který podporuje Docker. Toky můžete nasadit do služby Aplikace Azure Services, Kubernetes a Azure Managed Computes a nakonfigurovat je tak, aby se škálovaly podle potřeby.

  • Nasazení A/B. GenAIOps s rychlým tokem bezproblémově implementuje nasazení A/B a umožňuje snadno porovnat různé verze toku. Tato platforma usnadňuje nasazení A/B pro tok výzvy stejným způsobem jako u tradičního testování webu A/B. Různé verze toku můžete snadno porovnat v nastavení reálného světa a určit, která verze funguje nejlépe.

  • Datová sada M:N pro vztahy toku GenAIOps s tokem výzvy umožňuje pro každý standardní a vyhodnocovací tok více datových sad, což umožňuje všestrannost při testování a hodnocení toku.

  • Podmíněná data a registrace modelu Platforma zaregistruje novou verzi datové sady pro datový prostředek Služby Azure Machine Learning a toky v registru modelů pouze v případě, že se v datové sadě změní.

  • Komplexní vytváření sestav. GenAIOps s tokem výzvy generuje podrobné sestavy pro každou konfiguraci varianty, což vám umožní činit informovaná rozhodnutí. Platforma poskytuje podrobné shromažďování metrik, experimenty a hromadná spuštění variant pro všechna spuštění a experimenty, což umožňuje rozhodování řízené daty pro soubory CSV i HTML.

GenAIOps s tokem výzvy poskytuje následující další funkce pro přizpůsobení:

  • Funkce Bring-your-own-flow (BYOF) poskytuje kompletní platformu pro vývoj více případů použití souvisejících s aplikacemi s využitím LLM.
  • Vývoj založený na konfiguraci znamená, že není potřeba psát rozsáhlý často používaný kód.
  • Výzva k experimentování a vyhodnocení se spustí místně i v cloudu.
  • Poznámkové bloky pro místní vyhodnocení výzvy poskytují knihovnu funkcí pro místní experimentování.
  • Testování koncových bodů v kanálu po nasazení zkontroluje dostupnost a připravenost koncového bodu.
  • Volitelné human-in-loop ověřuje metriky výzvy před nasazením.

Fáze GenAIOps

Životní cyklus GenAIOps se skládá ze čtyř různých fází:

  • Inicializace. Jasně definujte obchodní cíl, shromážděte relevantní vzorky dat, vytvořte základní strukturu výzvy a vytvořte tok, který vylepšuje jeho schopnosti.

  • Experimentování. Použijte tok na ukázková data, vyhodnoťte výkon výzvy a podle potřeby tok upřesněte. Průběžně iterujte, dokud nebudete spokojeni s výsledky.

  • Vyhodnocení a upřesnění Proveďte srovnávací testy výkonu toku pomocí větší datové sady, vyhodnoťte efektivitu výzvy a odpovídajícím způsobem upřesněte. Pokud výsledky splňují požadované standardy, přejděte k další fázi.

  • Nasazení: Optimalizujte tok pro efektivitu a efektivitu, nasaďte ho v produkčním prostředí, včetně nasazení A/B, monitorujte jeho výkon, shromážděte zpětnou vazbu uživatelů a využijte tyto informace k dalšímu vylepšení toku.

Dodržováním této strukturované metodologie vám tok umožní s jistotou vyvíjet, pečlivě testovat, doladit a nasazovat toky, což vede k vytváření robustních a sofistikovaných aplikací AI.

Šablona Toku výzvy GenAIOps formalizuje tuto strukturovanou metodologii pomocí přístupu založeného na kódu a pomáhá vytvářet aplikace s využitím nástrojů toku výzvy a procesů a funkcí toku GenAIOps. Tato šablona je k dispozici v GenAIOps s šablonou toku výzvy.

Tok procesu GenAIOps

Snímek obrazovky s procesem toku výzvy GenAIOps

  1. Ve fázi inicializace budete vyvíjet toky, připravovat a kurátorovat data a aktualizovat konfigurační soubory související s GenAIOps.
  2. Po místním vývoji pomocí editoru Visual Studio Code s rozšířením Tok výzvy vytvoříte žádost o přijetí změn (PR) z větve funkcí do vývojové větve, která spustí kanál ověření sestavení a toky experimentování.
  3. Žádost o přijetí změn se schválí ručně a kód se sloučí s vývojovou větví.
  4. Po sloučení žádosti o přijetí změn do vývojové větve se spustí kanál kontinuální integrace (CI) pro vývojové prostředí. Kanál CI provádí experimentování i vyhodnocovací toky postupně a kromě dalších kroků v kanálu zaregistruje toky v registru Služby Azure Machine Learning.
  5. Po dokončení provádění kanálu CI spustí trigger průběžného nasazování (CD) kanál CD, který nasadí standardní tok z azure Machine Learning Registry jako online koncový bod služby Azure Machine Learning. Kanál pak spustí integrační a orientační testy nasazeného toku.
  6. Větev vydané verze se vytvoří z vývojové větve nebo se vytvoří žádost o přijetí změn z vývojové větve do větve vydané verze.
  7. Žádost o přijetí změn se schválí ručně a kód se sloučí do větve vydané verze. Po sloučení žádosti o přijetí změn do větve vydané verze se kanál CI pro produkční prostředí spustí. Kanál provádí experimentování i vyhodnocovací toky postupně a kromě dalších kroků v kanálu zaregistruje toky ve službě Azure Machine Learning Registry.
  8. Po dokončení provádění kanálu CI spustí trigger CD kanál CD, který nasadí standardní tok z azure Machine Learning Registry jako online koncový bod služby Azure Machine Learning. Kanál pak spustí integrační a orientační testy nasazeného toku.

Vytvoření toku výzvy GenAIOps

Zbytek tohoto článku ukazuje, jak používat GenAIOps s tokem výzvy podle kompletní ukázky v GenAIOps s úložištěm šablon toku výzvy, které vám pomůžou sestavovat aplikace s využitím toku výzvy a Azure DevOps. Primárním cílem je poskytnout pomoc při vývoji těchto aplikací pomocí funkcí příkazového toku a GenAIOps.

Požadavky

Poznámka:

Pokud ke spuštění infrastruktury používáte Azure DevOps a Terraform, potřebujete nainstalované rozšíření Terraform pro Azure DevOps .

Nastavení připojení toku výzvy

Tok výzvy používá prostředek připojení k připojení ke koncovým bodům Azure OpenAI, OpenAI nebo Azure AI Search. Připojení můžete vytvořit prostřednictvím uživatelského rozhraní portálu toku výzvy nebo pomocí rozhraní REST API. Další informace najdete v tématu Připojení v toku výzvy.

Pokud chcete vytvořit připojení, postupujte podle pokynů v tématu Nastavení připojení pro tok výzvy. Ukázkové toky používají připojení s názvem aoai, takže dejte svému připojení tento název.

Nastavení výpočetní relace

Tok výzvy používá výpočetní relaci ke spuštění toku. Vytvořte a spusťte výpočetní relaci před spuštěním toku výzvy.

Nastavení úložiště Azure Repos

Pokud chcete ve vaší organizaci Azure DevOps vytvořit forkované úložiště, postupujte podle pokynů v tématu Nastavení úložiště GitHub. Toto úložiště používá dvě větve main a developmentpro zvýšení úrovně kódu a spuštění kanálu.

Pokud chcete vytvořit nové místní úložiště, postupujte podle pokynů v části Klonování úložiště. Tento klon vám pomůže vytvořit novou větev funkcí z vývojové větve a začlenit změny.

Nastavení instančního objektu Azure

Instanční objekt Azure je identita zabezpečení, kterou aplikace, služby a automatizační nástroje používají pro přístup k prostředkům Azure. Aplikace nebo služba se ověřuje v Azure pro přístup k prostředkům vaším jménem.

Podle pokynů v tématu Vytvoření instančního objektu Azure vytvořte instanční objekt. Pomocí tohoto instančního objektu nakonfigurujete připojení Azure DevOps Services a povolíte službě Azure DevOps Services ověřování a připojení ke službám Azure. Úlohy experimentu a vyhodnocení toku výzvy běží pod identitou instančního objektu.

Nastavení poskytuje instančnímu objektu oprávnění vlastníka , aby kanál CD mohl automaticky poskytnout nově zřízený koncový bod služby Azure Machine Learning s přístupem k pracovnímu prostoru Azure Machine Learning pro čtení informací o připojení. Kanál také přidá koncový bod do zásad trezoru klíčů přidružených k pracovnímu prostoru Azure Machine Learning s oprávněními a list oprávněními get tajných kódů. Oprávnění vlastníka můžete změnit na oprávnění na úrovni přispěvatele tak, že změníte kód YAML kanálu a odeberete krok související s oprávněními.

Vytvoření nového projektu Azure DevOps

Pokud chcete vytvořit nový projekt v uživatelském rozhraní Azure DevOps, postupujte podle pokynů v tématu Vytvoření nového projektu Azure DevOps.

Nastavení ověřování mezi Azure DevOps a Azure

Tento krok nakonfiguruje nové připojení služby Azure DevOps, které ukládá informace o instančním objektu. Kanály projektu můžou číst informace o připojení pomocí názvu připojení, aby se připojily k Azure automaticky. Pokud chcete použít instanční objekt, který jste vytvořili k nastavení ověřování mezi Azure DevOps a službami Azure, postupujte podle pokynů v tématu Nastavení ověřování pomocí Azure a Azure DevOps.

Vytvoření skupiny proměnných Azure DevOps

Pokud chcete vytvořit novou skupinu proměnných a přidat proměnnou související s připojením služby Azure DevOps, postupujte podle pokynů v části Vytvoření skupiny proměnných Azure DevOps. Hlavní název služby je pak pro kanály k dispozici automaticky jako proměnná prostředí.

Konfigurace úložišť Azure a Azure Pipelines

Ukázkové úložiště používá dvě větve main a developmentpro zvýšení úrovně kódu a spuštění kanálu. Pokud chcete nastavit vlastní místní a vzdálená úložiště tak, aby používala kód z ukázkového úložiště, postupujte podle pokynů v tématu Konfigurace místních a vzdálených úložišť Azure DevOps.

Naklonujete obě main větve development z ukázkového úložiště a přidružíte kód, který bude odkazovat na nové úložiště Azure Repos. Kanály pr i vývojové kanály jsou nakonfigurované tak, aby se spouštěly automaticky na základě triggerů pro vytvoření žádosti o přijetí změn a sloučení.

Zásady větve pro development větev jsou nakonfigurované tak, aby spouštěly kanál žádosti o přijetí změn pro všechny žádosti o přijetí změn vyvolané ve vývojové větvi z větve funkcí. Kanál dev se spustí při sloučení žádosti o přijetí změn do vývojové větve a skládá se z fází CI i CD.

V kanálech se také implementuje člověk ve smyčce . Jakmile se fáze CI v dev kanálu spustí, fáze CD následuje po ručním schválení v uživatelském rozhraní pro spuštění sestavení Azure Pipelines.

Výchozí doba čekání na schválení je 60 minut, po které se kanál odmítne a fáze CD se nespustí. Ruční schválení spuštění provede kroky CD kanálu.

Ruční schválení v ukázkovém kanálu je nakonfigurováno tak, aby odesílala oznámení replace@youremail.com. Zástupný text nahraďte příslušnou e-mailovou adresou.

Otestování kanálu

Pokud chcete kanály otestovat, postupujte podle pokynů v části Testování kanálů. Celý proces zahrnuje následující kroky:

  1. Žádost o přijetí změn vytvoříte z větve funkcí do vývojové větve.
  2. Kanál žádosti o přijetí změn se spouští automaticky kvůli konfiguraci zásad větve.
  3. Žádost o přijetí změn se sloučí s vývojovou větví.
  4. dev Přidružený kanál se spustí, což vede k úplnému spuštění CI a CD a zřízení nebo aktualizaci koncových bodů služby Azure Machine Learning.

Výstupy by měly vypadat podobně jako v příkladech s příkazem příkazového řádku, vyhodnocením a scénářem nasazení.

Použití místního spuštění

Pokud chcete používat možnosti místního spouštění , postupujte podle těchto kroků.

  1. Naklonujte úložiště následujícím způsobem:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. Vytvořte soubor .env na nejvyšší úrovni složky. Přidejte řádky pro každé připojení a aktualizujte hodnoty zástupných symbolů. Příklady v ukázkovém úložišti používají připojení AzureOpenAI s názvem aoai a verzí 2024-02-01rozhraní API .

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. Připravte místní prostředí Conda nebo virtuální prostředí k instalaci závislostí.

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. Přineste nebo napište své toky do šablony na základě pokynů v tématu Postup připojování nových toků.

  5. Pište skripty Pythonu do složky local_execution podobně jako v uvedených příkladech.