Parancssori folyamat integrálása LLM-alapú devOps-alkalmazással

Ebben a cikkben megismerheti a parancssori folyamat integrációját az LLM-alapú DevOps alkalmazással az Azure Machine Tanulás. A prompt flow egy fejlesztőbarát és könnyen használható kódelső felületet kínál a folyamatfejlesztéshez és az iteráláshoz a teljes LLM-alapú alkalmazásfejlesztési munkafolyamattal.

Gyors folyamat SDK-t és parancssori felületet, VS-kódbővítményt, valamint a folyamatmappa-kezelő új felhasználói felületét biztosítja a folyamatok helyi fejlesztésének, a folyamatfuttatások és a kiértékelési futtatások helyi aktiválásának, valamint a folyamatok helyiről felhőbeli (Azure Machine Tanulás-munkaterületi) környezetek közötti áttűnésére.

Ez a dokumentáció az LLM-alapú alkalmazásfejlesztési munkafolyamatok továbbfejlesztése érdekében a gyors folyamatkód-élmény és a DevOps képességeinek hatékony kombinálására összpontosít.

Diagram of the showing the following flow: create flow, develop and test flow, versioning in code repo, submit runs to cloud, and debut and iteration.

A kód első verziójának bemutatása a parancssori folyamatban

Az LLM-et használó alkalmazások fejlesztésekor gyakran előfordul, hogy szabványosított alkalmazástervezési folyamattal rendelkezik, amely kódtárakat és CI/CD-folyamatokat tartalmaz. Ez az integráció egyszerűbb fejlesztési folyamatot, verziókövetést és együttműködést tesz lehetővé a csapattagok között.

A kódfejlesztésben jártos fejlesztők számára, akik hatékonyabb LLMOps-iterációs folyamatot keresnek, az alábbi főbb funkciók és előnyök érhetők el a gyors folyamatkód-élményből:

  • Folyamat verziószámozása a kódtárban. A folyamatot YAML formátumban határozhatja meg, amely igazodhat a mappaszerkezet hivatkozott forrásfájljaihoz.
  • Integrálja a folyamatfuttatást a CI/CD-folyamattal. A folyamatfuttatásokat a parancssori parancssori felülettel vagy az SDK-val indíthatja el, amely zökkenőmentesen integrálható a CI/CD-folyamatba és a kézbesítési folyamatba.
  • Zökkenőmentes átmenet a helyiről a felhőbe. A folyamatmappát egyszerűen exportálhatja a helyi vagy kódtárba verziókövetés, helyi fejlesztés és megosztás céljából. Hasonlóképpen, a folyamatmappát könnyedén vissza lehet importálni a felhőbe további létrehozás, tesztelés és üzembe helyezés céljából a felhőbeli erőforrásokban.

A parancssori folyamat kóddefiníciójának elérése

Minden egyes folyamat egy folyamatmappa-struktúrához van társítva, amely alapvető fájlokat tartalmaz a folyamat kódmappa-struktúrában való meghatározásához. Ez a mappastruktúra rendszerezi a folyamatot, megkönnyítve a zökkenőmentesebb áttűnést.

Az Azure Machine Tanulás megosztott fájlrendszert kínál minden munkaterület-felhasználó számára. Folyamat létrehozásakor a rendszer automatikusan létrehozza és tárolja a megfelelő folyamatmappát a Users/<username>/promptflow könyvtárban.

Screenshot of standard flow creation showing the create a new flow.

Folyamatmappa-struktúra

A folyamatmappa szerkezetének és a benne található kulcsfájloknak az áttekintése:

  • flow.dag.yaml: Ez az elsődleges folyamatdefiníciós fájl YAML formátumban tartalmazza a folyamathoz használt bemenetekkel, kimenetekkel, csomópontokkal, eszközökkel és változatokkal kapcsolatos információkat. A parancssori folyamat létrehozása és definiálása szerves része.
  • Forráskódfájlok (.py, .jinja2): A folyamatmappa felhasználó által felügyelt forráskódfájlokat is tartalmaz, amelyekre a folyamat eszközei/csomópontjai hivatkoznak.
    • A Python (.py) formátumú fájlokra a Python-eszköz hivatkozhat egyéni Python-logika meghatározásához.
    • A Jinja 2 (.jinja2) formátumú fájlokra a parancssori eszköz vagy az LLM eszköz hivatkozhat a parancssori környezet definiálása érdekében.
  • Nem forrásfájlok: A folyamatmappa olyan nem forrásfájlokat is tartalmazhat, mint a segédprogramfájlok és a forrásfájlokban található adatfájlok.

A folyamat létrehozása után a Folyamatkészítő lapra lépve megtekintheti és kezelheti a folyamatfájlokat a megfelelő fájlkezelőben. Ez lehetővé teszi a fájlok megtekintését, szerkesztését és kezelését. A fájlok módosításai közvetlenül megjelennek a fájlmegosztási tárolóban.

Screenshot of standard flow highlighting the files explorer.

Ha a "Nyers fájl mód" be van kapcsolva, megtekintheti és szerkesztheti a fájlok nyers tartalmát a fájlszerkesztőben, beleértve a folyamatdefiníciós fájlt flow.dag.yaml és a forrásfájlokat.

Screenshot of raw file mode on a standard flow.

Screenshot of flow source file in a standard flow.

Másik lehetőségként az összes folyamatmappát közvetlenül az Azure Machine Tanulás jegyzetfüzetében érheti el.

Screenshot of notebooks in Azure Machine Learning in the prompt flow folder showing the files.

Verziószámozási parancssori folyamat a kódtárban

A folyamat kódtárba való beadásához egyszerűen exportálhatja a folyamatmappát a folyamatkészítő oldalról a helyi rendszerbe. Ez letölt egy csomagot, amely tartalmazza az összes fájlt az Explorerből a helyi gépre, amelyet ezután be lehet jelentkezni a kódtárba.

Screenshot of showing the download button in the file explorer.

További információ az Azure Machine Tanulás DevOps-integrációjáról: Git-integráció az Azure Machine Tanulás

Futtatások elküldése a felhőbe a helyi adattárból

Előfeltételek

Prompt Flow SDK telepítése

pip install -r ../../examples/requirements.txt

Csatlakozás az Azure Machine Tanulás-munkaterületre

az login

Készítse elő a run.yml felhőben futó folyamat konfigurációjának definiálását.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

column_mapping:
  url: ${data.url}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

Megadhatja a kapcsolat és az üzembe helyezés nevét a folyamat egyes eszközeihez. Ha nem adja meg a kapcsolat és az üzembe helyezés nevét, az egyetlen kapcsolatot és üzembe helyezést használja a flow.dag.yaml fájlon. Kapcsolatok formázása:

...
connections:
  <node_name>:
    connection: <connection_name>
      deployment_name: <deployment_name>
...

pfazure run create --file run.yml

Készítse elő a run_evaluation.yml konfigurációt a kiértékelési folyamat felhőben való futtatásához.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
  groundtruth: ${data.answer}
  prediction: ${run.outputs.category}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specif automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

pfazure run create --file run_evaluation.yml

Futtatási eredmények megtekintése az Azure Machine Tanulás-munkaterületen

A folyamatfuttatás felhőbe való elküldése a futtatás portáljának URL-címét adja vissza. A portálon megnyithatja az URI-t a futtatási eredmények megtekintéséhez.

A futtatások eredményeinek megtekintéséhez az alábbi parancsot is használhatja.

Naplók streamelése

pfazure run stream --name <run_name>

Futtatási kimenetek megtekintése

pfazure run show-details --name <run_name>

A kiértékelési futtatás metrikáinak megtekintése

pfazure run show-metrics --name <evaluation_run_name>

Fontos

További információkért tekintse meg az Azure parancssori parancssori felületének dokumentációját.

Iteratív fejlesztés finomhangolásból

Helyi fejlesztés és tesztelés

Az iteratív fejlesztés során a folyamat vagy a kérések pontosítása és finomhangolása során hasznos lehet több iteráció helyi végrehajtása a kódtárban. A közösségi verzió, a parancssori folyamat VS Code-bővítménye és a prompt flow helyi SDK > PARANCSSOR biztosítja a tiszta helyi fejlesztést és tesztelést azure-kötés nélkül.

Parancssori folyamat VS Code-bővítménye

A parancssori folyamat VS Code-bővítményének telepítésével egyszerűen létrehozhatja a folyamatot helyileg a VS Code-szerkesztőből, és hasonló felhasználói felületet biztosít, mint a felhőben.

A bővítmény használata:

  1. Nyisson meg egy parancssori folyamatot tartalmazó mappát a VS Code Desktopban.
  2. Nyissa meg a ''flow.dag.yaml' fájlt jegyzetfüzet nézetben.
  3. A vizualizációszerkesztő használatával elvégezheti a folyamat szükséges módosításait, például módosíthatja a kéréseket változatokban, vagy további eszközöket adhat hozzá.
  4. A folyamat teszteléséhez válassza a Folyamat futtatása gombot a vizualizációszerkesztő tetején. Ez elindít egy folyamattesztet.

Screenshot of VS Code showing running the flow in the visual editor.

Folyamat helyi SDK és parancssori felületének kérése

Ha inkább a Jupytert, a PyCharmot, a Visual Studiót vagy más azonosítókat szeretné használni, közvetlenül módosíthatja a YAML-definíciót a flow.dag.yaml fájlban.

Screenshot of a yaml file in VS Code highlighting the default input and flow directory.

Ezután a parancssori parancssori felület vagy az SDK használatával egyetlen futtatási folyamatot indíthat a teszteléshez.

Feltételezve, hogy a munkakönyvtárban dolgozik <path-to-the-sample-repo>/examples/flows/standard/

pf flow test --flow web-classification  # "web-classification" is the directory name

Screenshot of the flow test output in PowerShell.

Így gyorsan elvégezheti és tesztelheti a módosításokat anélkül, hogy minden alkalommal frissítenie kellene a fő kódtárat. Ha elégedett a helyi tesztelés eredményeivel, átviheti a felhőbe a helyi adattárból a kísérletfuttatások felhőben történő végrehajtásához.

A helyi verziók használatával kapcsolatos további részletekért és útmutatásért tekintse meg a GitHub-közösség parancssori folyamatát.

Térjen vissza a studio felhasználói felületére a folyamatos fejlesztés érdekében

Másik lehetőségként visszatérhet a stúdió felhasználói felületére a felhőbeli erőforrások és a felhasználói felület használatával, hogy a folyamaton módosításokat hajthat végre a folyamat szerzői oldalán.

A folyamatfájlok legújabb verziójának fejlesztéséhez és használatához hozzáférhet a jegyzetfüzet termináljához, és lekérheti a folyamatfájlok legújabb módosításait az adattárból.

Emellett, ha továbbra is a studio felhasználói felületén szeretne dolgozni, közvetlenül importálhat egy helyi folyamatmappát új vázlatfolyamatként. Így zökkenőmentesen válthat a helyi és a felhőbeli fejlesztés között.

Screenshot of the create a new flow panel with upload to local highlighted.

CI/CD-integráció

CI: Triggerfolyamatok futnak a CI-folyamatban

Miután sikeresen kifejlesztette és tesztelte a folyamatot, és a kezdeti verzióként bejelentkezett, készen áll a következő hangolási és tesztelési iterációra. Ebben a szakaszban elindíthatja a folyamatfuttatásokat, beleértve a kötegelt tesztelést és a kiértékelési futtatásokat a parancssori parancssori felület használatával. Ez automatizált munkafolyamatként szolgálhat a folyamatos integrációs (CI) folyamatban.

A folyamat iterációinak életciklusa során több művelet is automatizálható:

  • Parancssori folyamat futtatása lekéréses kérelem után
  • A folyamat gyors kiértékelése annak biztosítása érdekében, hogy az eredmények kiváló minőségűek legyenek
  • Gyorsfolyamat-modellek regisztrálása
  • Parancssori folyamatmodellek üzembe helyezése

A webbesorolási folyamatot végrehajtó teljes körű MLOps-folyamat átfogó útmutatóját lásd : A teljes körű LLMOps beállítása a folyamat és a GitHub parancssori folyamatával, valamint a GitHub bemutató projektje.

CD: Folyamatos üzembe helyezés

Az éles üzembe helyezés utolsó lépése a folyamat online végpontként való üzembe helyezése az Azure Machine Tanulás. Így integrálhatja a folyamatot az alkalmazásba, és elérhetővé teheti azt használatra.

A folyamat üzembe helyezésével kapcsolatos további információkért lásd: Folyamatok üzembe helyezése az Azure Machine Tanulás felügyelt online végponton valós idejű következtetés céljából a parancssori felülettel és az SDK-val.

Együttműködés a folyamatfejlesztésben az éles környezetben

A parancssori folyamattal rendelkező LLM-alapú alkalmazások fejlesztésének kontextusában a csapattagok közötti együttműködés gyakran elengedhetetlen. Előfordulhat, hogy a csapattagok ugyanabban a folyamatkészítésben és tesztelésben vesznek részt, a folyamat különböző aspektusait dolgoznak, vagy egyidejűleg iteratív módosításokat és fejlesztéseket végeznek.

Az ilyen együttműködés megköveteli a kód megosztásának, a módosítások nyomon követésének, a verziók kezelésének és a módosítások végleges projektbe való integrálásának hatékony és korszerű megközelítését.

A prompt flow SDK/CLI és a Visual Studio Code-bővítmény bevezetése a gyors folyamat kódélménye részeként megkönnyíti a folyamatfejlesztéssel kapcsolatos egyszerű együttműködést a kódtárban. Javasoljuk, hogy egy felhőalapú kódtárat ( például GitHub vagy Azure DevOps) használjon a változások nyomon követéséhez, a verziók kezeléséhez és a módosítások végső projektbe való integrálásához.

Ajánlott eljárások együttműködésen alapuló fejlesztéshez

  1. A folyamat helyi létrehozása és egyszeri tesztelése – Kódtár és VSC-bővítmény

    • Az együttműködési folyamat első lépése egy kódtár használata a projektkód alapjaként, amely tartalmazza a parancssori folyamat kódját.
      • Ez a központosított adattár lehetővé teszi a hatékony szervezést, az összes kódmódosítás nyomon követését és a csapattagok közötti együttműködést.
    • Az adattár beállítása után a csapattagok használhatják a VSC bővítményt a helyi létrehozáshoz és a folyamat egyszeri bemeneti teszteléséhez.
      • Ez a szabványosított integrált fejlesztési környezet elősegíti a folyamat különböző aspektusaival dolgozó több tag együttműködését. Screenshot of local development.
  2. Felhőalapú kísérleti kötegtesztelés és -kiértékelés – parancssori folyamat cli/SDK és munkaterületi portál felhasználói felülete

    • A helyi fejlesztési és tesztelési fázist követően a folyamatfejlesztők a pfazure CLI vagy az SDK használatával küldhetnek kötegelt futtatásokat és kiértékelési futtatásokat a helyi folyamatfájlokból a felhőbe.
      • Ez a művelet lehetővé teszi a felhőbeli erőforrások használatát, az eredmények állandó tárolását és hatékony kezelését egy portál felhasználói felületén az Azure Machine Tanulás-munkaterületen. Ez a lépés lehetővé teszi a felhőbeli erőforrások használatát, beleértve a számítást és a tárolást, valamint az üzembe helyezés további végpontjait. Screenshot of pfazure command to submit run to cloud.
    • A felhőbe történő beküldések után a csapattagok hozzáférhetnek a felhőportál felhasználói felületéhez az eredmények megtekintéséhez és a kísérletek hatékony kezeléséhez.
      • Ez a felhőalapú munkaterület központi helyet biztosít az összes futtatás előzményeinek, naplóinak, pillanatképeinek, átfogó eredményeinek, beleértve a példányszintű bemeneteket és kimeneteket. Screenshot of cloud run snapshot.
      • A fejlesztés során az összes futtatási előzményt tartalmazó futtatási listán a csapattagok egyszerűen összehasonlíthatják a különböző futtatások eredményeit, elősegítve a minőségelemzést és a szükséges módosításokat. Screenshot of run list in workspace. Screenshot of run comparison in workspace.
  3. Helyi iteratív fejlesztés vagy egylépéses felhasználói felület üzembe helyezése éles környezetben

    • A kísérletek elemzését követően a csapattagok visszatérhetnek a kódtárba egy másik fejlesztéshez és finomhangoláshoz. A későbbi futtatások ezután iteratív módon küldhetők el a felhőbe.
      • Ez az iteratív megközelítés biztosítja a konzisztens fejlesztést, amíg a csapat nem elégedett az éles üzemre kész minőséggel.
    • Ha a csapat teljes mértékben biztos a folyamat minőségében, zökkenőmentesen üzembe helyezhető egy felhasználói felületi varázslóval online végpontként az Azure Machine Tanulás. Miután a csapat teljes mértékben biztos a folyamat minőségében, zökkenőmentesen át lehet váltani az éles környezetbe egy felhasználói felület üzembe helyezési varázslójával, mint online végpont egy robusztus felhőkörnyezetben.
      • Ez az online végponton történő üzembe helyezés egy futtatási pillanatképen alapulhat, amely lehetővé teszi a stabil és biztonságos kiszolgálást, a további erőforrás-kiosztást és használatkövetést, valamint a naplófigyelést a felhőben. Screenshot of deploying flow from a run snapshot. Screenshot of deploy wizard.

Miért javasoljuk a kódtár használatát együttműködésen alapuló fejlesztéshez?

Az iteratív fejlesztéshez a helyi fejlesztési környezet és a verziókövetési rendszer, például a Git kombinációja általában hatékonyabb. Módosíthatja és helyileg tesztelheti a kódot, majd véglegesítheti a módosításokat a Gitben. Ez létrehoz egy folyamatos rekordot a módosításokról, és lehetővé teszi, hogy szükség esetén visszatérjen a korábbi verziókra.

Ha különböző környezetekben kell megosztani a folyamatokat , ajánlott felhőalapú kódtárat használni, például a GitHubot vagy az Azure Repost. Ez lehetővé teszi, hogy a kód legújabb verzióját bárhonnan elérhesse, és eszközöket biztosít az együttműködéshez és a kódkezeléshez.

Az ajánlott eljárás követésével a csapatok zökkenőmentes, hatékony és hatékony együttműködési környezetet hozhatnak létre a gyors folyamatfejlesztéshez.

További lépések