LLMOps met promptstroom en GitHub

Large Language Operations, of LLMOps, is de hoeksteen geworden van efficiënte prompt engineering en door LLM geïnfuseerde toepassingsontwikkeling en -implementatie. Naarmate de vraag naar LLM-infused toepassingen steeds verder toeneemt, hebben organisaties behoefte aan een samenhangend en gestroomlijnd proces om hun end-to-end levenscyclus te beheren.

Met Azure Machine Learning kunt u integreren met GitHub om de ontwikkelingslevenscyclus van llM-toepassingen te automatiseren met een promptstroom.

Azure Machine Learning Prompt Flow biedt een gestroomlijnde en gestructureerde benadering voor het ontwikkelen van door LLM geïnfuseerde toepassingen. Het goed gedefinieerde proces en de levenscyclus begeleidt u bij het bouwen, testen, optimaliseren en implementeren van stromen, met als hoogtepunt het maken van volledig functionele LLM-oplossingen.

Functies van LLMOps-promptstroom

LLMOps met promptstroom is een 'LLMOps-sjabloon en richtlijnen' om u te helpen bij het bouwen van door LLM geïnfuseerde apps met behulp van een promptstroom. Deze biedt de volgende functies:

  • Gecentraliseerde codehosting: deze opslagplaats ondersteunt het hosten van code voor meerdere stromen op basis van promptstroom, waardoor één opslagplaats voor al uw stromen wordt geboden. U kunt dit platform beschouwen als één opslagplaats waarin al uw promptstroomcode zich bevindt. Het is net een bibliotheek voor uw stromen, waardoor u eenvoudig verschillende projecten kunt vinden, openen en eraan kunt samenwerken.

  • Levenscyclusbeheer: elke stroom geniet van zijn eigen levenscyclus, waardoor soepele overgangen van lokale experimenten naar productie-implementatie mogelijk zijn. Screenshot of pipeline.

  • Variant en Hyperparameter Experimentation: Experimenteer met meerdere varianten en hyperparameters, het evalueren van stroomvarianten met gemak. Varianten en hyperparameters zijn als ingrediënten in een recept. Met dit platform kunt u experimenteren met verschillende combinaties van varianten op meerdere knooppunten in een stroom.

  • Meerdere implementatiedoelen: de opslagplaats biedt ondersteuning voor de implementatie van stromen naar Azure-app Services, Kubernetes, door Azure beheerde berekeningen die worden aangestuurd door configuratie, zodat uw stromen naar behoefte kunnen worden geschaald. Er worden ook Docker-installatiekopieën gegenereerd die zijn opgenomen in Flow Runtime en uw stromen voor implementatie naar elk doelplatform en besturingssysteem dat Docker ondersteunt. Screenshot of endpoints.

  • A/B-implementatie: implementeer Naadloos A/B-implementaties, zodat u moeiteloos verschillende stroomversies kunt vergelijken. Net als bij traditionele A/B-tests voor websites faciliteert dit platform de A/B-implementatie voor promptstroom. Dit betekent dat u moeiteloos verschillende versies van een stroom in een echte omgeving kunt vergelijken om te bepalen welke prestaties het beste presteren. Screenshot of deployments.

  • Veel-op-veel-gegevensset-/stroomrelaties: geschikt voor meerdere gegevenssets voor elke standaard- en evaluatiestroom, waardoor veelzijdigheid in stroomtests en -evaluatie mogelijk is. Het platform is ontworpen voor meerdere gegevenssets voor elke stroom.

  • Registratie van voorwaardelijke gegevens en modellen: Het platform maakt een nieuwe versie voor gegevenssets in Azure Machine Learning-gegevensasset en stromen in het modelregister alleen wanneer er een wijziging is, niet anders.

  • Uitgebreide rapportage: genereer gedetailleerde rapporten voor elke variantconfiguratie, zodat u weloverwogen beslissingen kunt nemen. Biedt gedetailleerde metrische gegevensverzameling, experiment en variant bulkuitvoeringen voor alle uitvoeringen en experimenten, waardoor gegevensgestuurde beslissingen in csv- en HTML-bestanden mogelijk zijn. Screenshot of flow variants report.Screenshot of metrics report.

Andere functies voor aanpassing:

  • Biedt BYOF (bring-your-own-flows). Een volledig platform voor het ontwikkelen van meerdere gebruiksvoorbeelden met betrekking tot LLM-toepassingen.

  • Biedt op configuratie gebaseerde ontwikkeling. U hoeft geen uitgebreide boiler-plate code te schrijven.

  • Biedt uitvoering van zowel promptexperimentatie als evaluatie lokaal in de cloud.

  • Biedt notebooks voor lokale evaluatie van de prompts. Biedt een bibliotheek met functies voor lokale experimenten.

  • Eindpunttests binnen de pijplijn na de implementatie om de beschikbaarheid en gereedheid ervan te controleren.

  • Biedt optionele Human-in-loop voor het valideren van promptgegevens vóór de implementatie.

LLMOps met promptstroom biedt mogelijkheden voor zowel eenvoudige als complexe LLM-apps. Het is volledig aanpasbaar aan de behoeften van de toepassing.

LLMOps-fasen

De levenscyclus bestaat uit vier verschillende fasen:

  • Initialisatie: definieer duidelijk de bedrijfsdoelstelling, verzamel relevante gegevensvoorbeelden, stel een eenvoudige promptstructuur in en maak een stroom die de mogelijkheden verbetert.

  • Experimenten: Pas de stroom toe op voorbeeldgegevens, evalueer de prestaties van de prompt en verfijn de stroom indien nodig. Continu herhalen totdat u tevreden bent met de resultaten.

  • Evaluatie en verfijning: benchmark de prestaties van de stroom met behulp van een grotere gegevensset, evalueer de effectiviteit van de prompt en verfijningen dienovereenkomstig. Ga verder met de volgende fase als de resultaten voldoen aan de gewenste standaarden.

  • Implementatie: Optimaliseer de stroom voor efficiëntie en effectiviteit, implementeer deze in een productieomgeving, inclusief A/B-implementatie, bewaak de prestaties, verzamel feedback van gebruikers en gebruik deze informatie om de stroom verder te verbeteren.

Door aan deze gestructureerde methodologie te voldoen, stelt Prompt Flow u in staat om met vertrouwen stromen te ontwikkelen, grondig te testen, af te stemmen en te implementeren, wat leidt tot het maken van robuuste en geavanceerde AI-toepassingen.

De LLMOps Prompt Flow-sjabloon formaliseert deze gestructureerde methodologie met behulp van code-first aanpak en helpt u bij het bouwen van door LLM geïnfuseerde apps met behulp van Prompt Flow met behulp van hulpprogramma's en proces dat relevant is voor Prompt Flow. Het biedt een scala aan functies, waaronder Gecentraliseerde codehosting, levenscyclusbeheer, variant- en hyperparameterexperimentatie, A/B-implementatie, rapportage voor alle uitvoeringen en experimenten en meer.

De opslagplaats voor dit artikel is beschikbaar op LLMOps met promptstroomsjabloon

LLMOps-processtroom

Screenshot of LLMOps prompt flow Process.

  1. Dit is de initialisatiefase. Hier worden stromen ontwikkeld, worden gegevens voorbereid en gecureerd en worden LLMOps-gerelateerde configuratiebestanden bijgewerkt.
  2. Na lokale ontwikkeling met behulp van Visual Studio Code, samen met de extensie Prompt Flow, wordt er een pull-aanvraag gegenereerd van de functievertakking naar de ontwikkelingsvertakking. Dit resulteert in het uitvoeren van de buildvalidatiepijplijn. Ook worden de experimentenstromen uitgevoerd.
  3. De pull-aanvraag wordt handmatig goedgekeurd en code wordt samengevoegd met de ontwikkelingsbranch
  4. Nadat de pull-aanvraag is samengevoegd met de ontwikkelingsbranch, wordt de CI-pijplijn voor de ontwikkelomgeving uitgevoerd. Hiermee worden zowel de experimenten- als evaluatiestromen opeenvolgend uitgevoerd en worden de stromen in Azure Machine Learning Registry geregistreerd, afgezien van andere stappen in de pijplijn.
  5. Na voltooiing van ci-pijplijnuitvoering zorgt een CD-trigger ervoor dat de cd-pijplijn wordt uitgevoerd die de standaardstroom van Azure Machine Learning Registry implementeert als een online-eindpunt van Azure Machine Learning en integratie- en betrouwbaarheidstests uitvoert op de geïmplementeerde stroom.
  6. Er wordt een releasebranch gemaakt op basis van de ontwikkelingsbranch of er wordt een pull-aanvraag gegenereerd van de ontwikkelingsbranch naar de releasebranch.
  7. De pull-aanvraag wordt handmatig goedgekeurd en code wordt samengevoegd met de releasebranch. Nadat de pull-aanvraag is samengevoegd met de releasebranch, wordt de CI-pijplijn voor de prod-omgeving uitgevoerd. Hiermee worden zowel de experimenten- als evaluatiestromen opeenvolgend uitgevoerd en worden de stromen in Azure Machine Learning Registry geregistreerd, afgezien van andere stappen in de pijplijn.
  8. Na voltooiing van ci-pijplijnuitvoering zorgt een CD-trigger ervoor dat de cd-pijplijn wordt uitgevoerd die de standaardstroom van Azure Machine Learning Registry implementeert als een online-eindpunt van Azure Machine Learning en integratie- en betrouwbaarheidstests uitvoert op de geïmplementeerde stroom.

Van hieruit kunt u LLMOps leren met promptstroom door de end-to-end voorbeelden te volgen die we hebben opgegeven, waarmee u LLM-geïnfuseerde toepassingen kunt bouwen met behulp van promptstroom en GitHub. Het primaire doel is om hulp te bieden bij de ontwikkeling van dergelijke toepassingen, waarbij gebruik wordt gemaakt van de mogelijkheden van promptstroom en LLMOps.

Tip

We raden u aan te begrijpen hoe u LLMOps integreert met een promptstroom.

Belangrijk

De promptstroom is momenteel beschikbaar als openbare preview. Deze preview wordt geleverd zonder service level agreement en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Vereisten

  • Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint. Probeer de gratis of betaalde versie van Azure Machine Learning.
  • Een Azure Machine Learning-werkruimte.
  • Git wordt uitgevoerd op uw lokale computer.
  • GitHub als de opslagplaats voor broncodebeheer.

Notitie

Git-versie 2.27 of hoger is vereist. Zie en selecteer uw besturingssysteem voor meer informatie over het installeren van de Git-opdracht https://git-scm.com/downloads

Belangrijk

De CLI-opdrachten in dit artikel zijn getest met behulp van Bash. Als u een andere shell gebruikt, kunnen er fouten optreden.

Promptstroom instellen

Prompt Flow maakt gebruik van verbindingsresources om verbinding te maken met eindpunten zoals Azure OpenAI, OpenAI of Azure AI Search en gebruikt runtime voor de uitvoering van de stromen. Deze resources moeten worden gemaakt voordat de stromen in promptstroom worden uitgevoerd.

Verbindingen instellen voor promptstroom

Verbinding maken ionen kunnen worden gemaakt via de gebruikersinterface van de promptstroomportal of met behulp van de REST API. Volg de richtlijnen voor het maken van verbindingen voor promptstroom.

Klik op de koppeling voor meer informatie over verbindingen.

Notitie

De voorbeeldstromen maken gebruik van de aoai-verbinding en -verbinding met de naam aoai om ze uit te voeren.

Compute en runtime instellen voor promptstroom

Runtime kan worden gemaakt via de gebruikersinterface van de promptstroomportal of met behulp van de REST API. Volg de richtlijnen voor het instellen van rekenkracht en runtime voor promptstroom.

Klik op de koppeling om meer te weten te komen over runtime.

Notitie

Dezelfde runtimenaam moet worden gebruikt in het LLMOps_config.json bestand dat later wordt uitgelegd.

GitHub-opslagplaats instellen

Er zijn meerdere stappen die moeten worden uitgevoerd voor het instellen van het LLMOps-proces met behulp van GitHub Repository.

Fork en configureer de opslagplaats

Volg de richtlijnen voor het maken van een vervalste opslagplaats in uw GitHub-organisatie. Deze opslagplaats maakt gebruik van twee vertakkingen, main en development voor codepromoties en uitvoering van pijplijnen in plaats van wijzigingen in code erin.

Verificatie tussen GitHub en Azure instellen

Volg de richtlijnen voor het gebruik van de eerder gemaakte service-principal en stel verificatie in tussen de GitHub-opslagplaats en Azure Services.

Met deze stap configureert u een GitHub-geheim waarin de gegevens van de service-principal worden opgeslagen. De werkstromen in de opslagplaats kunnen de verbindingsgegevens lezen met behulp van de geheime naam. Dit helpt bij het configureren van stappen voor gitHub-werkstromen om automatisch verbinding te maken met Azure.

De opslagplaats klonen

Volg de richtlijnen om een nieuwe lokale opslagplaats te maken.

Dit helpt ons bij het maken van een nieuwe functiebranch van de ontwikkelingsbranch en het opnemen van wijzigingen.

De pijplijnen testen

Volg de richtlijnen om de pijplijnen te testen. De stappen zijn

  1. Een PULL-aanvraag (pull-aanvraag) genereren van een functiebranch naar de ontwikkelingsbranch.
  2. De PULL-pijplijn moet automatisch worden uitgevoerd als gevolg van de configuratie van het vertakkingsbeleid.
  3. De pull-aanvraag wordt vervolgens samengevoegd met de ontwikkelingsbranch.
  4. De bijbehorende dev-pijplijn wordt uitgevoerd. Dit resulteert in volledige CI- en CD-uitvoering en resulteert in het inrichten of bijwerken van bestaande Azure Machine Learning-eindpunten.

De testuitvoer moet vergelijkbaar zijn met de uitvoerwaarden die hier worden weergegeven.

Lokale uitvoering

Volg deze installatiestappen om de mogelijkheden van de lokale uitvoering te benutten:

  1. Kloon de opslagplaats: begin met het klonen van de opslagplaats van de sjabloon vanuit de GitHub-opslagplaats.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Env-bestand instellen: maak een .env-bestand op het hoogste mapniveau en geef informatie op voor items die worden vermeld. Voeg zo veel verbindingsnamen toe als nodig is. Alle stroomvoorbeelden in deze opslagplaats maken gebruik van de AzureOpenAI-verbinding met de naam aoai. Voeg een regel aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} met bijgewerkte waarden toe voor api_key en api_base. Als er extra verbindingen met verschillende namen worden gebruikt in uw stromen, moeten ze dienovereenkomstig worden toegevoegd. Stroom momenteel met AzureOpenAI als provider zoals ondersteund.

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. Bereid de lokale conda of virtuele omgeving voor om de afhankelijkheden te installeren.

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

  1. Breng uw stromen naar de sjabloon of schrijf deze op basis van documentatie hier.

  2. Schrijf Python-scripts die vergelijkbaar zijn met de opgegeven voorbeelden in local_execution map.

Volgende stappen