Dela via


LLMOps med promptflöde och GitHub

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 GitHub 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 i 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 datauppsättningen 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 detaljerade masskörningar för måttinsamling, experiment och varianter för alla körningar och experiment, vilket möjliggör datadrivna beslut i csv och 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 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 Prompt Flow-mallen formaliserar den här strukturerade metoden med hjälp av kodinstansmetoden och hjälper dig att skapa LLM-infunderade appar med Prompt Flow med hjälp av verktyg och processer som är relevanta för Prompt Flow. 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 Visual Studio Code tillsammans med Prompt Flow-tillä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 GitHub. Dess främsta mål är att hjälpa till med utvecklingen av sådana program, med hjälp av 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.
  • GitHub som lagringsplats för källkontroll.

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 Prompt Flow

Prompt Flow använder anslutningsresurs 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 Prompt Flow.

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.

Välj 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 GitHub-lagringsplats

Det finns flera steg som bör utföras för att konfigurera LLMOps-processen med GitHub-lagringsplatsen.

Förgrena och konfigurera lagringsplatsen

Följ riktlinjerna för att skapa en förgrenad lagringsplats i din GitHub-organisation. 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.

Konfigurera autentisering mellan GitHub och Azure

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

Det här steget konfigurerar en GitHub-hemlighet som lagrar informationen om tjänstens huvudnamn. Arbetsflödena på lagringsplatsen kan läsa anslutningsinformationen med hjälp av det hemliga namnet. Detta hjälper till att konfigurera GitHub-arbetsflödessteg för att ansluta till Azure automatiskt.

Klona lagringsplatsen

Följ riktlinjerna för att skapa en ny lokal lagringsplats.

Detta hjälper oss att skapa en ny funktionsgren från utvecklingsgrenen och införliva ändringar.

Testa pipelines

Följ riktlinjerna 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": "2024-02-01"} med uppdaterade värden för api_key och api_base. Om extra 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