Dela via


LLMOps med promptflöde och Azure DevOps

Stora språkåtgärder, eller LLMOps, har blivit hörnstenen i effektiv snabbteknik och LLM-infunderad programutveckling och distribution. I takt med att efterfrågan på LLM-infunderade program fortsätter att bli stor behöver organisationer en sammanhängande och strömlinjeformad process för att hantera sin livscykel från slutpunkt till slutpunkt.

Med Azure Machine Learning kan du integrera med Azure DevOps för att automatisera livscykeln för LLM-infunderad programutveckling med promptflöde.

Azure Machine Learning Prompt Flow ger en effektiv och strukturerad metod för att utveckla LLM-infunderade program. Dess väldefinierade process och livscykel vägleder dig genom processen att skapa, testa, optimera och distribuera flöden, vilket kulminerar i skapandet av fullt fungerande LLM-infunderade lösningar.

LLMOps Prompt Flow-funktioner

LLMOps med promptflöde är en "LLMOps-mall och vägledning" som hjälper dig att skapa LLM-infunderade appar med hjälp av promptflöde. Den tillhandahåller följande funktioner:

  • Centraliserad kodvärd: Den här lagringsplatsen stöder värdkod för flera flöden baserat på promptflöde, vilket ger en enda lagringsplats för alla dina flöden. Tänk på den här plattformen som en enda lagringsplats där all din promptflödeskod finns. Det är som ett bibliotek för dina flöden, vilket gör det enkelt att hitta, komma åt och samarbeta i olika projekt.

  • Livscykelhantering: Varje flöde har en egen livscykel, vilket möjliggör smidiga övergångar från lokala experiment till produktionsdistribution. Skärmbild av pipeline.

  • Variant- och Hyperparameterexperiment: Experimentera med flera varianter och hyperparametrar och utvärdera flödesvarianter enkelt. Varianter och hyperparametrar är som ingredienser i ett recept. Med den här plattformen kan du experimentera med olika kombinationer av varianter över flera noder i ett flöde.

  • Flera distributionsmål: Lagringsplatsen stöder distribution av flöden till Azure App Services, Kubernetes och Azure Managed Computes som drivs via konfigurationen och säkerställer att dina flöden kan skalas efter behov. Den genererar också Docker-avbildningar som är infunderade med Flow-beräkningssessionen och dina flöden för distribution till valfri målplattform och operativsystem som stöder Docker. Skärmbild av slutpunkter.

  • A/B-distribution: Implementera A/B-distributioner sömlöst så att du enkelt kan jämföra olika flödesversioner. Precis som vid traditionell A/B-testning för webbplatser underlättar den här plattformen A/B-distribution för snabbflöde. Det innebär att du enkelt kan jämföra olika versioner av ett flöde i en verklig inställning för att avgöra vilka som presterar bäst. Skärmbild av distributioner.

  • Många-till-många-datamängds-/flödesrelationer: Hantera flera datauppsättningar för varje standard- och utvärderingsflöde, vilket säkerställer mångsidighet i flödestest och utvärdering. Plattformen är utformad för att hantera flera datauppsättningar för varje flöde.

  • Registrering av villkorliga data och modeller: Plattformen skapar en ny version för datamängden i Azure Machine Learning Data Asset och flöden i modellregistret endast när det sker en ändring i dem, inte i annat fall.

  • Omfattande rapportering: Generera detaljerade rapporter för varje variantkonfiguration, så att du kan fatta välgrundade beslut. Innehåller detaljerad insamling, experiment och variant av masskörningar för alla körningar och experiment, vilket möjliggör datadrivna beslut i csv samt HTML-filer. Skärmbild av rapporten med flödesvarianter.Skärmbild av måttrapporten.

Andra funktioner för anpassning:

  • Erbjuder BYOF (bring-your-own-flows). En komplett plattform för att utveckla flera användningsfall relaterade till LLM-infunderade program.

  • Erbjuder konfigurationsbaserad utveckling. Du behöver inte skriva omfattande pannplåtskod.

  • Tillhandahåller körning av både promptexperimentering och utvärdering lokalt samt i molnet.

  • Innehåller notebook-filer för lokal utvärdering av anvisningarna. Tillhandahåller bibliotek med funktioner för lokala experiment.

  • Slutpunktstestning i pipeline efter distribution för att kontrollera dess tillgänglighet och beredskap.

  • Tillhandahåller valfria Human-in-loop för att validera promptmått före distributionen.

LLMOps med promptflöde ger funktioner för både enkla och komplexa LLM-infunderade appar. Det är helt anpassningsbart efter programmets behov.

LLMOps-faser

Livscykeln består av fyra olika steg:

  • Initiering: Definiera affärsmålet tydligt, samla in relevanta dataexempel, upprätta en grundläggande snabbstruktur och skapa ett flöde som förbättrar dess funktioner.

  • Experimentering: Tillämpa flödet på exempeldata, utvärdera promptens prestanda och förfina flödet efter behov. Iterera kontinuerligt tills resultatet är uppfyllt.

  • Utvärdering och förfining: Jämför flödets prestanda med hjälp av en större datamängd, utvärdera promptens effektivitet och gör förbättringar i enlighet med detta. Gå vidare till nästa steg om resultatet uppfyller de önskade standarderna.

  • Distribution: Optimera flödet för effektivitet och effektivitet, distribuera det i en produktionsmiljö, inklusive A/B-distribution, övervaka dess prestanda, samla in användarfeedback och använd den här informationen för att ytterligare förbättra flödet.

Genom att följa den här strukturerade metoden ger prompt flow dig möjlighet att utveckla, noggrant testa, finjustera och distribuera flöden, vilket leder till att robusta och sofistikerade AI-program skapas.

LLMOps-mallen för promptflöde formaliserar den här strukturerade metoden med hjälp av kodinstansmetoden och hjälper dig att skapa LLM-infunderade appar med hjälp av promptflöde med hjälp av verktyg och processer som är relevanta för att fråga flöde. Den erbjuder en rad funktioner, inklusive centraliserad kodvärd, livscykelhantering, variant- och hyperparameterexperimentering, A/B-distribution, rapportering för alla körningar och experiment med mera.

Lagringsplatsen för den här artikeln finns på LLMOps med mallen Fråga flöde

LLMOps-processflöde

Skärmbild av processen för LLMOps-promptflöde.

  1. Det här är initieringssteget. Här utvecklas flöden, data förbereds och kureras och LLMOps-relaterade konfigurationsfiler uppdateras.
  2. Efter lokal utveckling med Hjälp av Visual Studio Code tillsammans med promptflödestillägget genereras en pull-begäran från funktionsgrenen till utvecklingsgrenen. Detta resulterar i att byggverifieringspipelinen körs. Den kör också experimenteringsflödena.
  3. PR godkänns manuellt och koden slås samman med utvecklingsgrenen
  4. När PR har sammanfogats till utvecklingsgrenen körs CI-pipelinen för utvecklingsmiljön. Den kör både experimenterings- och utvärderingsflödena i följd och registrerar flödena i Azure Machine Learning Registry förutom andra steg i pipelinen.
  5. Efter slutförandet av CI-pipelinekörningen säkerställer en CD-utlösare körningen av CD-pipelinen som distribuerar standardflödet från Azure Machine Learning Registry som en Azure Machine Learning-slutpunkt online och kör integrerings- och röktester i det distribuerade flödet.
  6. En versionsgren skapas från utvecklingsgrenen eller så genereras en pull-begäran från utvecklingsgrenen till versionsgrenen.
  7. PR godkänns manuellt och koden sammanfogas till versionsgrenen. När PR har sammanfogats till versionsgrenen körs CI-pipelinen för prod-miljön. Den kör både experimenterings- och utvärderingsflödena i följd och registrerar flödena i Azure Machine Learning Registry förutom andra steg i pipelinen.
  8. Efter slutförandet av CI-pipelinekörningen säkerställer en CD-utlösare körningen av CD-pipelinen som distribuerar standardflödet från Azure Machine Learning Registry som en Azure Machine Learning-slutpunkt online och kör integrerings- och röktester i det distribuerade flödet.

Härifrån kan du lära dig LLMOps med promptflöde genom att följa de exempel från slutpunkt till slutpunkt som vi tillhandahöll, som hjälper dig att skapa LLM-infunderade program med hjälp av prompt flow och Azure DevOps. Dess främsta mål är att hjälpa till med utvecklingen av sådana program och utnyttja funktionerna i promptflöde och LLMOps.

Dricks

Vi rekommenderar att du förstår hur du integrerar LLMOps med promptflöde.

Viktigt!

Prompt-flödet är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

  • En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning.
  • En Azure Machine Learning-arbetsyta.
  • Git körs på din lokala dator.
  • En organisation i Azure DevOps. Organisationen i Azure DevOps hjälper till att samarbeta, planera och spåra fel i arbetet och koden, problem och Konfigurera kontinuerlig integrering och distribution.
  • Terraform-tillägget för Azure DevOps om du använder Azure DevOps + Terraform för att starta infrastrukturen

Kommentar

Git version 2.27 eller senare krävs. Mer information om hur du installerar Git-kommandot https://git-scm.com/downloads finns i och välj ditt operativsystem

Viktigt!

CLI-kommandona i den här artikeln har testats med Bash. Om du använder ett annat gränssnitt kan det uppstå fel.

Konfigurera promptflöde

Prompt Flow använder anslutningsresursen för att ansluta till slutpunkter som Azure OpenAI, OpenAI eller Azure AI Search och använder beräkningssession för körning av flödena. Dessa resurser bör skapas innan du kör flödena i promptflödet.

Konfigurera anslutningar för promptflöde

Anslut ions kan skapas via användargränssnittet för promptflödesportalen eller med hjälp av REST-API:et. Följ riktlinjerna för att skapa anslutningar för promptflöde.

Klicka på länken om du vill veta mer om anslutningar.

Kommentar

Exempelflödena använder "aoai"-anslutning och anslutning med namnet "aoai" ska skapas för att köra dem.

Konfigurera Azure-tjänstens huvudnamn

Ett Huvudnamn för Azure-tjänsten är en säkerhetsidentitet som program, tjänster och automatiseringsverktyg använder för att få åtkomst till Azure-resurser. Den representerar ett program eller en tjänst som måste autentiseras med Azure och få åtkomst till resurser åt dig. Följ riktlinjerna för att skapa tjänstens huvudnamn i Azure.

Tjänstens huvudnamn används senare för att konfigurera Azure DevOps Service-anslutning och Azure DevOps för att autentisera och ansluta till Azure Services. Jobben som körs i Prompt Flow för båda experiment and evaluation runs är under identiteten för tjänstens huvudnamn.

Dricks

Konfigurationen ger owner behörigheter till tjänstens huvudnamn.

  • Det beror på att CD-pipelinen automatiskt ger åtkomst till den nyligen etablerade Azure Machine Learning-slutpunktens åtkomst till Azure Machine Learning-arbetsytan för att läsa anslutningsinformation.
  • Den lägger också till den i azure machine learning-arbetsytans associerade key vault-princip med get och list hemliga behörigheter.

Ägarbehörigheten kan ändras till nivåbehörigheter genom att contributor ändra YAML-kod för pipeline och ta bort steget som rör behörigheter.

Konfigurera Azure DevOps

Det finns flera steg som bör utföras för att konfigurera LLMOps-processen med hjälp av Azure DevOps.

Skapa ett nytt Azure DevOps-projekt

Följ riktlinjerna för att skapa ett nytt Azure DevOps-projekt med hjälp av Azure DevOps-användargränssnittet.

Konfigurera autentisering mellan Azure DevOps och Azure

Följ riktlinjerna för att använda det tidigare skapade tjänstens huvudnamn och konfigurera autentisering mellan Azure DevOps och Azure Services.

Det här steget konfigurerar en ny Azure DevOps Service-Anslut ion som lagrar informationen om tjänstens huvudnamn. Pipelines i projektet kan läsa anslutningsinformationen med hjälp av anslutningsnamnet. Detta hjälper dig att konfigurera Azure DevOps-pipelinesteg för att ansluta till Azure automatiskt.

Skapa en Azure DevOps-variabelgrupp

Följ riktlinjerna för att skapa en ny variabelgrupp och lägga till en variabel som är relaterad till Azure DevOps Service-Anslut ion.

Tjänstens huvudnamn är automatiskt tillgängligt som miljövariabel för pipelines.

Konfigurera Azure DevOps-lagringsplats och pipelines

Den här lagringsplatsen använder två grenar – main och development för kodkampanjer och körning av pipelines i stället för ändringar i koden i dem. Följ riktlinjerna för att konfigurera din egen lokala lagringsplats och fjärrlagringsplats för att använda kod från den här lagringsplatsen.

Stegen omfattar kloning av både main och development branches från lagringsplatsen och associering av koden för att referera till den nya Azure DevOps-lagringsplatsen. Förutom kodmigrering konfigureras pipelines – både PR- och dev-pipelines så att de körs automatiskt baserat på utlösare för skapande och sammanslagning av PR.

Grenprincipen för utvecklingsgrenen bör också konfigureras för att köra PR-pipeline för alla PR som genereras på utvecklingsgrenen från en funktionsgren. Utvecklingspipelinen körs när PR slås samman med utvecklingsgrenen. Utvecklingspipelinen består av både CI- och CD-faser.

Det finns också mänskligt i loopen som implementeras i pipelines. När CI-fasen i dev pipelinen har körts följer CD-fasen efter manuellt godkännande. Godkännandet bör ske från azure DevOps pipeline build execution UI. Standardtidsgränsen är 60 minuter efter vilken pipelinen avvisas och CD-fasen inte körs. Manuellt godkännande av körningen leder till körning av CD-stegen i pipelinen. Det manuella godkännandet har konfigurerats för att skicka meddelanden till .replace@youremail.com Den bör ersättas med ett lämpligt e-post-ID.

Testa pipelines

Följ riktlinjerna som nämns i för att testa pipelines.

Stegen är:

  1. Skapa en PR(pull-begäran) från en funktionsgren till utvecklingsgrenen.
  2. PR-pipelinen ska köras automatiskt som ett resultat av konfigurationen av grenprinciper.
  3. Pr-koden sammanfogas sedan till utvecklingsgrenen.
  4. Den associerade utvecklingspipelinen körs. Detta resulterar i fullständig CI- och CD-körning och resulterar i etablering eller uppdatering av befintliga Azure Machine Learning-slutpunkter.

Testutdata bör likna dem som visas här.

Lokal körning

Följ dessa installationssteg för att utnyttja funktionerna i den lokala körningen:

  1. Klona lagringsplatsen: Börja med att klona mallens lagringsplats från github-lagringsplatsen.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Konfigurera env-fil: skapa .env-filen på den översta mappnivån och ange information för de objekt som nämns. Lägg till så många anslutningsnamn som behövs. Alla flödesexempel på den här lagringsplatsen använder AzureOpenAI-anslutning med namnet aoai. Lägg till en rad aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} med uppdaterade värden för api_key och api_base. Om ytterligare anslutningar med olika namn används i dina flöden bör de läggas till i enlighet med detta. För närvarande flödar du med AzureOpenAI som leverantör som stöds.

experiment_name=
connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
  1. Förbered den lokala conda-miljön eller den virtuella miljön för att installera beroendena.

python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv

  1. Ta med eller skriv dina flöden i mallen baserat på dokumentationen här.

  2. Skriv python-skript som liknar de angivna exemplen i local_execution mapp.

Nästa steg