Delen via


Promptstroom integreren met DevOps voor OP LLM gebaseerde toepassingen

Azure Machine Learning-promptstroom is een gebruiksvriendelijke en gebruiksvriendelijke code-first-methode voor het ontwikkelen en herhalen van stromen voor ontwikkeling van toepassingen met een groot taalmodel (LLM). Promptstroom biedt een SDK en CLI, een Visual Studio Code-extensie en een gebruikersinterface voor het ontwerpen van stromen. Deze hulpprogramma's faciliteren het ontwikkelen van lokale stromen, het uitvoeren van lokale stromen en het evalueren van stromen tussen lokale en cloudwerkruimteomgevingen.

U kunt de ervaring van de promptstroom en code combineren met ontwikkelaarsbewerkingen (DevOps) om uw op LLM gebaseerde werkstromen voor toepassingsontwikkeling te verbeteren. Dit artikel is gericht op het integreren van promptstroom en DevOps voor op Azure Machine Learning LLM gebaseerde toepassingen.

In het volgende diagram ziet u de interactie van de ontwikkeling van lokale en cloudpromptstromen met DevOps.

Diagram met de volgende stroom: stroom maken, stroom ontwikkelen en testen, versiebeheer in codeopslagplaats, uitvoeringen verzenden naar de cloud en debuut en iteratie maken.

Vereisten

  • Een Azure Machine Learning-werkruimte. Zie Resources maken om aan de slag te gaan om er een te maken.

  • Een lokale Python-omgeving waarop de Azure Machine Learning Python SDK v2 is geïnstalleerd, die is gemaakt door de instructies bij Aan de slag te volgen.

    Notitie

    Deze omgeving is gescheiden van de omgeving die de rekensessie gebruikt om de stroom uit te voeren, die u definieert als onderdeel van de stroom. Zie De rekensessie promptstroom beheren in Azure Machine Learning-studio voor meer informatie.

  • Visual Studio Code waarop de Python- en promptstroomextensies zijn geïnstalleerd.

    Schermopname van de python- en promptstroomextensies in Visual Studio Code.

Een code-first-ervaring gebruiken in een promptstroom

Het ontwikkelen van OP LLM gebaseerde toepassingen volgt meestal een gestandaardiseerd proces voor toepassingsengineering dat broncodeopslagplaatsen en CI/CD-pijplijnen (continue integratie/continue implementatie) omvat. Dit proces bevordert gestroomlijnde ontwikkeling, versiebeheer en samenwerking tussen teamleden.

De integratie van DevOps met de ervaring voor promptstroomcode biedt codeontwikkelaars een efficiënter GenAIOps- of LLMOps-iteratieproces, met de volgende belangrijke functies en voordelen:

  • Stroomversiebeheer in de codeopslagplaats. U kunt stroombestanden definiëren in YAML-indeling en ze blijven afgestemd op bronbestanden waarnaar wordt verwezen in dezelfde mapstructuur.

  • Integratie van stroomuitvoering met CI/CD-pijplijnen. U kunt de promptstroom naadloos integreren in uw CI/CD-pijplijnen en het leveringsproces met behulp van de CLI of SDK van de promptstroom om automatisch stroomuitvoeringen te activeren.

  • Soepele overgang tussen lokale en cloud. U kunt uw stroommap eenvoudig exporteren naar uw lokale of upstream-codeopslagplaats voor versiebeheer, lokale ontwikkeling en delen. U kunt de stroommap ook moeiteloos terug importeren in Azure Machine Learning voor verdere creatie, testen en implementatie met behulp van cloudresources.

Stroomcode voor toegangsprompt

Elke promptstroom heeft een stroommapstructuur met essentiële codebestanden die de stroom definiëren. De mapstructuur organiseert uw stroom, waardoor soepelere overgangen tussen lokale en cloud worden vergemakkelijkt.

Azure Machine Learning biedt een gedeeld bestandssysteem voor alle werkruimtegebruikers. Bij het maken van een stroom wordt automatisch een bijbehorende stroommap gegenereerd en opgeslagen in de map Gebruikers/<gebruikersnaam>/promptflow .

Schermopname van het maken van een standaardstroom met een nieuwe stroom.

Werken met stroomcodebestanden

Zodra u een stroom in Azure Machine Learning-studio hebt gemaakt, kunt u de stroombestanden bekijken, bewerken en beheren in de sectie Bestanden van de pagina stroomcreatie. Wijzigingen die u aanbrengt in de bestanden, worden rechtstreeks in de bestandsshareopslag weergegeven.

Schermopname van een standaardpagina voor het ontwerpen van stromen waarin het deelvenster Bestanden wordt gemarkeerd.

De stroommap voor een op LLM gebaseerde stroom bevat de volgende sleutelbestanden.

  • flow.dag.yaml is het primaire stroomdefinitiebestand in YAML-indeling. Dit bestand is een integraal onderdeel van het ontwerpen en definiëren van de promptstroom. Het bestand bevat informatie over invoer, uitvoer, knooppunten, hulpprogramma's en varianten die door de stroom worden gebruikt.

  • Door de gebruiker beheerde broncodebestanden in python -indeling (.py) of Jinja 2 (.jinja2) configureren de hulpprogramma's en knooppunten in de stroom. Het Python-hulpprogramma maakt gebruik van Python-bestanden om aangepaste Python-logica te definiëren. Het prompthulpprogramma en LLM-hulpprogramma gebruiken Jinja 2-bestanden om promptcontext te definiëren.

  • Niet-bronbestanden, zoals hulpprogramma's en gegevensbestanden, kunnen samen met de bronbestanden worden opgenomen in de stroommap.

Als u de onbewerkte code van de flow.dag.yaml en bronbestanden in de bestandseditor wilt weergeven en bewerken, schakelt u de modus Raw-bestand in.

Schermopname van de raw-bestandsmodus in een standaardstroom.

U kunt ook al uw stroommappen en bestanden openen en bewerken vanaf de pagina Azure Machine Learning-studio Notitieblokken.

Schermopname van Notebooks in Azure Machine Learning met de map promptstroom met de bestanden.

Promptstroomcode downloaden en inchecken

Als u de stroom in uw codeopslagplaats wilt controleren, exporteert u de stroommap van Azure Machine Learning-studio naar uw lokale computer. Selecteer het downloadpictogram in de sectie Bestanden van de pagina stroomcreatie om een ZIP-pakket met alle stroombestanden te downloaden. Vervolgens kunt u dat bestand controleren in uw codeopslagplaats of het uitpakken om lokaal met de bestanden te werken.

Schermopname van het downloadpictogram in de Bestandenverkenner.

Zie Git-integratie voor Azure Machine Learning voor meer informatie over DevOps-integratie met Azure Machine Learning.

Lokaal ontwikkelen en testen

Tijdens het verfijnen en verfijnen van uw stroom of prompts tijdens iteratieve ontwikkeling, kunt u meerdere iteraties lokaal uitvoeren in uw codeopslagplaats. De VS Code-communityversie, vs Code Prompt Flow-extensie en promptstroom lokale SDK en CLI vergemakkelijken pure lokale ontwikkeling en testen zonder Azure-binding.

Als u lokaal werkt, kunt u snel wijzigingen aanbrengen en testen, zonder dat u elke keer de hoofdcodeopslagplaats hoeft bij te werken. Raadpleeg de GitHub-community promptstroom voor meer informatie en richtlijnen voor het gebruik van lokale versies.

De vs Code-promptstroomextensie gebruiken

Met behulp van de extensie Promptstroom VS Code kunt u uw stroom eenvoudig lokaal ontwerpen in de VS Code-editor met een vergelijkbare ui-ervaring als in de cloud.

Bestanden lokaal bewerken in VS Code met de extensie Promptstroom:

  1. Open in VS Code waarvoor de extensie Promptstroom is ingeschakeld een promptstroommap.

  2. Open het bestand flow.dag.yaml en selecteer de visual-editorkoppeling boven aan het bestand.

    Schermopname van de visual-editorkoppeling boven aan een stroomdefinitiebestand in VS Code.

  3. Gebruik de visuele editor voor promptstromen om wijzigingen aan te brengen in uw stroom, zoals het afstemmen van de prompts in varianten of het toevoegen van meer knooppunten.

    Schermopname van de visualpromptstroomeditor in VS Code.

  4. Als u uw stroom wilt testen, selecteert u het pictogram Uitvoeren boven aan de visual-editor of selecteert u het pictogram Uitvoeren boven aan het knooppunt.

    Schermopname van VS Code met het uitvoeren van de stroom of een knooppunt in de visual-editor.

De promptstroom-SDK en CLI gebruiken

Als u liever rechtstreeks in code werkt of Jupyter, PyCharm, Visual Studio of een andere IDE (Integrated Development Environment) gebruikt, kunt u de YAML-code rechtstreeks wijzigen in het bestand flow.dag.yaml .

Schermopname van een YAML-bestand in VS Code waarin de standaardinvoer- en stroommap wordt gemarkeerd.

U kunt vervolgens als volgt één stroomuitvoering activeren voor testen met behulp van de CLI of SDK van de promptstroom in de terminal.

Voer de volgende code uit om een uitvoering vanuit de werkmap te activeren:

pf flow test --flow <directory-name>

De retourwaarden zijn de testlogboeken en uitvoer.

Schermopname van de uitvoer van de stroomtest in PowerShell.

Uitvoeringen verzenden naar de cloud vanuit een lokale opslagplaats

Zodra u tevreden bent met de resultaten van uw lokale test, kunt u de promptstroom CLI of SDK gebruiken om uitvoeringen vanuit de lokale opslagplaats naar de cloud te verzenden. De volgende procedure en code zijn gebaseerd op het demoproject webclassificatie in GitHub. U kunt de projectopslagplaats klonen of de promptstroomcode downloaden naar uw lokale computer.

De promptstroom-SDK installeren

Installeer de Azure prompt flow SDK/CLI door uit te voeren pip install promptflow[azure] promptflow-tools.

Als u het demoproject gebruikt, haalt u de SDK en andere benodigde pakketten op door requirements.txt te installeren met
pip install -r <path>/requirements.txt.

Verbinding maken met uw Azure Machine Learning-werkruimte

az login

De stroom uploaden en een uitvoering maken

Bereid het run.yml-bestand voor om de configuratie te definiëren voor deze stroom die in de cloud wordt uitgevoerd.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

U kunt de verbindings- en implementatienaam opgeven voor elk hulpprogramma in de stroom waarvoor een verbinding is vereist. Als u de naam van de verbinding en implementatie niet opgeeft, gebruikt het hulpprogramma de verbinding en implementatie in het bestand flow.dag.yaml . Gebruik de volgende code om verbindingen op te maken:

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

Maak de uitvoering.

pfazure run create --file run.yml

Een evaluatiestroomuitvoering maken

Bereid het run_evaluation.yml-bestand voor om de configuratie voor deze evaluatiestroom in de cloud te definiëren.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Maak de evaluatieuitvoering.

pfazure run create --file run_evaluation.yml

Uitvoeringsresultaten weergeven

Als u de stroomuitvoering naar de cloud verzendt, wordt de cloud-URL van de uitvoering geretourneerd. U kunt de URL openen om de uitvoeringsresultaten weer te geven in Azure Machine Learning-studio. U kunt ook de volgende CLI- of SDK-opdrachten uitvoeren om de uitvoeringsresultaten weer te geven.

De logboeken streamen

pfazure run stream --name <run-name>

Uitvoer van uitvoeringen weergeven

pfazure run show-details --name <run-name>

Metrische gegevens voor evaluatieuitvoering weergeven

pfazure run show-metrics --name <evaluation-run-name>

Integreren met DevOps

Een combinatie van een lokale ontwikkelomgeving en een versiebeheersysteem zoals Git is doorgaans het meest effectief voor iteratieve ontwikkeling. U kunt wijzigingen aanbrengen en uw code lokaal testen en vervolgens de wijzigingen doorvoeren in Git. Dit proces maakt een doorlopende record van uw wijzigingen en biedt de mogelijkheid om zo nodig terug te keren naar eerdere versies.

Wanneer u stromen in verschillende omgevingen wilt delen, kunt u ze pushen naar een cloudgebaseerde codeopslagplaats, zoals GitHub of Azure-opslagplaatsen. Met deze strategie hebt u toegang tot de meest recente codeversie vanaf elke locatie en beschikt u over hulpprogramma's voor samenwerking en codebeheer.

Door deze procedures te volgen, kunnen teams een naadloze, efficiënte en productieve samenwerkingsomgeving creëren voor snelle stroomontwikkeling.

Bijvoorbeeld end-to-end LLMOps-pijplijnen die webclassificatiestromen uitvoeren, zie End-to-End GenAIOps instellen met prompt Flow en GitHub en het GitHub Web Classification-demoproject.

Triggerstroomuitvoeringen in CI-pijplijnen

Zodra u uw stroom hebt ontwikkeld en getest en deze hebt ingecheckt als de eerste versie, bent u klaar voor het afstemmen en testen van iteraties. In deze fase kunt u stroomuitvoeringen activeren, waaronder batchtests en evaluatieuitvoeringen, met behulp van de CLI van de promptstroom om stappen in uw CI-pijplijn te automatiseren.

Gedurende de levenscyclus van uw stroomiteraties kunt u de CLI gebruiken om de volgende bewerkingen te automatiseren:

  • De promptstroom uitvoeren na een pull-aanvraag
  • Evaluatie van promptstroom uitvoeren om ervoor te zorgen dat de resultaten van hoge kwaliteit zijn
  • Promptstroommodellen registreren
  • Promptstroommodellen implementeren

De gebruikersinterface van studio gebruiken voor continue ontwikkeling

Op elk moment in stroomontwikkeling kunt u teruggaan naar de Azure Machine Learning-studio gebruikersinterface en cloudresources en ervaringen gebruiken om wijzigingen aan te brengen in uw stroom.

Als u wilt doorgaan met het ontwikkelen en werken met de meest recente versies van de stroombestanden, hebt u toegang tot een terminal op de pagina Notebook en haalt u de meest recente stroombestanden op uit uw opslagplaats. U kunt ook rechtstreeks een lokale stroommap importeren als een nieuwe conceptstroom om naadloos over te stappen tussen lokale en cloudontwikkeling.

Schermopname van het scherm Een nieuwe stroom maken met Uploaden naar lokaal gemarkeerd.

De stroom implementeren als een online-eindpunt

De laatste stap bij het gaan naar productie is het implementeren van uw stroom als een online-eindpunt in Azure Machine Learning. Met dit proces kunt u uw stroom integreren in uw toepassing en deze beschikbaar maken voor gebruik. Zie Stromen implementeren in een online-eindpunt van Azure Machine Learning voor realtime deductie voor meer informatie over het implementeren van uw stroom.

Samenwerken aan stroomontwikkeling

Samenwerking tussen teamleden kan essentieel zijn bij het ontwikkelen van een LLM-toepassing met promptstroom. Teamleden kunnen dezelfde stroom ontwerpen en testen, aan verschillende facetten van de stroom werken of iteratieve wijzigingen en verbeteringen gelijktijdig aanbrengen. Deze samenwerking vereist een efficiënte en gestroomlijnde benadering voor het delen van code, het bijhouden van wijzigingen, het beheren van versies en het integreren van wijzigingen in het uiteindelijke project.

Met de promptstroom-SDK/CLI en de extensie voor de VS Code-promptstroom kunt u eenvoudig samenwerken aan stroomontwikkeling op basis van code in een broncodeopslagplaats. U kunt een cloudsysteem voor broncodebeheer gebruiken, zoals GitHub of Azure-opslagplaatsen voor het bijhouden van wijzigingen, het beheren van versies en het integreren van deze wijzigingen in het uiteindelijke project.

Best practices voor gezamenlijke ontwikkeling volgen

  1. Een gecentraliseerde codeopslagplaats instellen.

    De eerste stap van het samenwerkingsproces omvat het instellen van een codeopslagplaats als basis voor projectcode, inclusief promptstroomcode. Deze gecentraliseerde opslagplaats maakt efficiënte organisatie, wijzigingen bijhouden en samenwerken tussen teamleden mogelijk.

  2. Ontwerp en test uw stroom lokaal in VS Code met de extensie Promptstroom.

    Zodra de opslagplaats is ingesteld, kunnen teamleden VS Code gebruiken met de extensie Promptstroom voor lokaal ontwerpen en één invoertest van de stroom. De gestandaardiseerde geïntegreerde ontwikkelomgeving bevordert samenwerking tussen meerdere leden die werken aan verschillende aspecten van de stroom.

    Schermopname van lokale ontwikkeling.

  3. Gebruik de pfazure CLI of SDK om batchuitvoeringen en evaluatieuitvoeringen van lokale stromen naar de cloud te verzenden.

    Na lokale ontwikkeling en testen kunnen teamleden de promptstroom CLI/SDK gebruiken om batch- en evaluatieuitvoeringen naar de cloud te verzenden en te evalueren. Dit proces maakt het gebruik van cloud-rekenkracht, permanente opslag van resultaten, het maken van eindpunten voor implementaties en efficiënt beheer in de gebruikersinterface van studio mogelijk.

    Schermopname van de pfazure-opdracht om de uitvoering naar de cloud te verzenden.

  4. Uitvoeringsresultaten weergeven en beheren in de gebruikersinterface van de Azure Machine Learning-studio werkruimte.

    Nadat ze worden verzonden naar de cloud, hebben teamleden toegang tot de gebruikersinterface van studio om de resultaten te bekijken en experimenten efficiënt te beheren. De cloudwerkruimte biedt een centrale locatie voor het verzamelen en beheren van uitvoeringsgeschiedenis, logboeken, momentopnamen, uitgebreide resultaten en invoer en uitvoer op exemplaarniveau.

    Schermopname van momentopname van clouduitvoering.

  5. Gebruik de lijst Runs waarmee alle uitvoeringsgeschiedenis wordt vastgelegd om eenvoudig de resultaten van verschillende uitvoeringen te vergelijken, te helpen bij kwaliteitsanalyse en noodzakelijke aanpassingen.

    Schermopname van de lijst met uitvoeringen in de werkruimte.

  6. Blijf lokale iteratieve ontwikkeling gebruiken.

    Nadat de resultaten van experimenten zijn geanalyseerd, kunnen teamleden terugkeren naar de lokale omgeving en codeopslagplaats voor meer ontwikkeling en afstemming, en iteratief volgende uitvoeringen verzenden naar de cloud. Deze iteratieve benadering zorgt voor consistente verbeteringen totdat het team tevreden is met de kwaliteit voor productie.

  7. Gebruik implementatie in één stap voor productie in de studio.

    Zodra het team volledig vertrouwen heeft in de kwaliteit van de stroom, kunnen ze deze naadloos implementeren als een online-eindpunt in een robuuste cloudomgeving. Implementatie als een online-eindpunt kan worden gebaseerd op een momentopname van uitvoering, waardoor stabiele en veilige services mogelijk zijn, verdere resourcetoewijzing en gebruikstracering en logboekbewaking in de cloud mogelijk zijn.

    Schermopname van het implementeren van een stroom vanuit een momentopname van de uitvoering.

    Met de wizard Azure Machine Learning-studio Implementeren kunt u uw implementatie eenvoudig configureren.

    Schermopname van de implementatiewizard.