LLMOps parancssori folyamattal és Azure DevOps

A nagyméretű nyelvi műveletek vagy az LLMOps a hatékony gyors tervezés és az LLM-alapú alkalmazások fejlesztésének és üzembe helyezésének sarokköveivé váltak. Mivel az LLM-alapú alkalmazások iránti kereslet egyre nő, a szervezeteknek összetartó és leegyszerűsített folyamatra van szükségük a teljes életciklusuk kezeléséhez.

Az Azure Machine Tanulás lehetővé teszi, hogy integrálható legyen az Azure DevOpsszal az LLM által integrált alkalmazásfejlesztési életciklus gyors folyamattal történő automatizálásához.

Az Azure Machine Tanulás Prompt Flow leegyszerűsített és strukturált megközelítést biztosít az LLM-alapú alkalmazások fejlesztéséhez. Jól definiált folyamata és életciklusa végigvezeti a folyamatok létrehozásának, tesztelésének, optimalizálásának és üzembe helyezésének folyamatán, amely a teljesen működőképes LLM-alapú megoldások létrehozásában csúcsosul.

LLMOps parancssori folyamat funkciói

A parancssori folyamattal rendelkező LLMOps egy "LLMOps-sablon és útmutató", amely segít az LLM-alapú alkalmazások parancssori folyamattal történő összeállításában. Ez a tevékenység a következő jellemzőkkel bír:

  • Központosított kód üzemeltetése: Ez az adattár támogatja több folyamat kódjának a parancssori folyamaton alapuló üzemeltetését, és egyetlen adattárat biztosít az összes folyamat számára. Gondoljon erre a platformra egyetlen adattárként, ahol az összes parancssori folyamatkód található. Ez olyan, mint egy tár a folyamatokhoz, így könnyen megtalálhatja, elérheti és együttműködhet a különböző projekteken.

  • Életciklus-kezelés: Minden folyamat saját életciklust élvez, így zökkenőmentes átmenetet tesz lehetővé a helyi kísérletezésről az éles üzembe helyezésre. Screenshot of pipeline.

  • Variant and Hyperparameter Experimentation: Kísérletezzen több variánssal és hiperparaméterrel, és egyszerűen értékelje ki a folyamatvariánsokat. A variánsok és a hiperparaméterek olyanok, mint a recept összetevői. Ez a platform lehetővé teszi a variációk különböző kombinációinak kipróbálását egy folyamat több csomópontja között.

  • Több üzembehelyezési cél: Az adattár támogatja a folyamatok üzembe helyezését Azure-alkalmazás Szolgáltatások, Kubernetes, Azure Managed Computes konfiguráción keresztül, biztosítva, hogy a folyamatok igény szerint méretezhetők legyenek. Emellett olyan Docker-lemezképeket is létrehoz, amelyek a Flow-futtatókörnyezettel és a Dockert támogató célplatformra és operációs rendszerre való üzembe helyezéshez szükséges folyamatokkal vannak betöltve. Screenshot of endpoints.

  • A/B üzembe helyezés: Zökkenőmentesen implementálhatja az A/B üzemelő példányokat, így könnyedén összehasonlíthatja a különböző folyamatverziókat. A webhelyek hagyományos A/B-teszteléséhez hasonlóan ez a platform is elősegíti az A/B gyors üzembe helyezését. Ez azt jelenti, hogy könnyedén összehasonlíthatja egy folyamat különböző verzióit valós környezetben, hogy megállapítsa, melyik teljesít a legjobban. Screenshot of deployments.

  • Több-a-többhöz adathalmaz-/folyamatkapcsolatok: Az egyes standard és kiértékelési folyamatokhoz több adathalmazt is elférnek, így sokoldalúságot biztosítva a folyamattesztelés és -kiértékelés során. A platform úgy lett kialakítva, hogy minden folyamathoz több adathalmazt is elférjen.

  • Feltételes adatok és modellregisztráció: A platform egy új verziót hoz létre az Adathalmazhoz az Azure Machine-ben Tanulás Adategységben, és a modellregisztrációs adatbázisban csak akkor halad át, ha változás történik bennük, máskülönben nem.

  • Átfogó jelentéskészítés: Részletes jelentések készítése az egyes változatkonfigurációkhoz, így megalapozott döntéseket hozhat. Részletes metrikagyűjteményt, kísérletet és variáns-tömeges futtatást biztosít az összes futtatáshoz és kísérlethez, lehetővé téve az adatvezérelt döntéseket a csv-ben és a HTML-fájlokban. Screenshot of flow variants report.Screenshot of metrics report.

Egyéb testreszabási funkciók:

  • Kínál BYOF (bring-your-own-flow). Teljes platform az LLM-alapú alkalmazásokhoz kapcsolódó több használati eset fejlesztéséhez.

  • Konfigurációalapú fejlesztést kínál. Nem kell átfogó kazánlemez-kódot írni.

  • Lehetővé teszi a gyors kísérletezést és a kiértékelést helyileg és a felhőben is.

  • Jegyzetfüzeteket biztosít a kérések helyi kiértékeléshez . Függvénytárat biztosít a helyi kísérletezéshez.

  • Végponttesztelés a folyamaton belül az üzembe helyezés után annak rendelkezésre állásának és felkészültségének ellenőrzéséhez.

  • Opcionális human-in-loop lehetőséget biztosít a parancssori metrikák üzembe helyezés előtti ellenőrzéséhez.

A parancssori folyamattal rendelkező LLMOps egyszerű és összetett LLM-alapú alkalmazásokhoz is kínál képességeket. Teljesen testre szabható az alkalmazás igényei szerint.

LLMOps-szakaszok

Az életciklus négy különböző szakaszból áll:

  • Inicializálás: Egyértelműen határozza meg az üzleti célt, gyűjtsön össze releváns adatmintákat, hozzon létre egy alapszintű parancssori struktúrát, és hozzon létre egy folyamatot, amely javítja a képességeit.

  • Kísérletezés: Alkalmazza a folyamatot a mintaadatokra, értékelje a kérés teljesítményét, és szükség szerint finomítsa a folyamatot. Folyamatosan iterál, amíg meg nem felel az eredményeknek.

  • Kiértékelés és pontosítás: A folyamat teljesítményének mérése egy nagyobb adatkészlet használatával, a kérés hatékonyságának kiértékelése és a pontosítások ennek megfelelően. Haladjon a következő szakaszba, ha az eredmények megfelelnek a kívánt szabványoknak.

  • Üzembe helyezés: Optimalizálja a folyamatot a hatékonyság és a hatékonyság érdekében, üzembe helyezze azt éles környezetben, beleértve az A/B üzemelő példányt, figyelje a teljesítményét, gyűjtsön felhasználói visszajelzéseket, és használja ezeket az információkat a folyamat továbbfejlesztéséhez.

Ennek a strukturált módszertannak a betartásával a gyors folyamat lehetővé teszi a folyamatok magabiztos fejlesztését, szigorú tesztelését, finomhangolását és üzembe helyezését, ami robusztus és kifinomult AI-alkalmazások létrehozásához vezet.

Az LLMOps parancssori folyamatsablonja kódelső megközelítéssel formalizálja ezt a strukturált módszertant, és segít az LLM által infusált alkalmazások parancssori folyamattal történő összeállításában az eszközök és a parancssori folyamat szempontjából releváns folyamatok használatával. Számos funkciót kínál, többek között a központosított kódkezelést, az életciklus-kezelést, a Variant és a Hiperparaméter-kísérletezést, az A/B üzembe helyezést, az összes futtatás és kísérlet jelentéskészítését.

A cikk adattára az LLMOps parancssori folyamatsablonnal elérhető

LLMOps folyamatfolyamat

Screenshot of LLMOps prompt flow process.

  1. Ez az inicializálási szakasz. Itt a folyamatok fejlesztése, az adatok előkészítése és összeállítása, valamint az LLMOpshoz kapcsolódó konfigurációs fájlok frissítése történik.
  2. Miután a Visual Studio Code-ot használó helyi fejlesztést és a gyors folyamatbővítményt használta, a rendszer lekéréses kérelmet küld a szolgáltatáságból a fejlesztési ágba. Ez a buildérvényesítési folyamat végrehajtását eredményezi. Emellett végrehajtja a kísérletezési folyamatokat is.
  3. A lekéréses kérelem manuális jóváhagyása és a kód egyesítése a fejlesztési ágba
  4. A lekéréses kérelemnek a fejlesztési ágba való egyesítése után a rendszer végrehajtja a fejlesztői környezetHEZ tartozó CI-folyamatot. A kísérletezési és a kiértékelési folyamatokat sorrendben hajtja végre, és a folyamat többi lépésétől eltekintve regisztrálja a folyamatokat az Azure Machine Tanulás Registryben.
  5. A CI-folyamatok végrehajtása után a CD-eseményindító biztosítja az Azure Machine Tanulás Registryből származó standard folyamatot üzembe helyező CD-folyamat végrehajtását, Tanulás online végpontként, valamint az üzembe helyezett folyamaton végrehajtott integrációs és füstteszteket.
  6. A kiadási ág a fejlesztési ágból jön létre, vagy egy lekéréses kérelmet ad ki a fejlesztési ágból a kiadási ágba.
  7. A rendszer manuálisan hagyja jóvá a lekéréses kérelmet, és a kód egyesül a kiadási ágba. A lekéréses kérelemnek a kiadási ágba való egyesítése után a rendszer végrehajtja a prod környezet CI-folyamatát. A kísérletezési és a kiértékelési folyamatokat sorrendben hajtja végre, és a folyamat többi lépésétől eltekintve regisztrálja a folyamatokat az Azure Machine Tanulás Registryben.
  8. A CI-folyamatok végrehajtása után a CD-eseményindító biztosítja az Azure Machine Tanulás Registryből származó standard folyamatot üzembe helyező CD-folyamat végrehajtását, Tanulás online végpontként, valamint az üzembe helyezett folyamaton végrehajtott integrációs és füstteszteket.

Innen elsajátíthatja az LLMOps parancssori folyamatát a megadott végpontok közötti minták követésével, amelyek segítenek az LLM-alapú alkalmazások parancssori folyamat és az Azure DevOps használatával történő összeállításában. Elsődleges célja, hogy segítséget nyújtson az ilyen alkalmazások fejlesztéséhez, kihasználva a gyors folyamat és az LLMOps képességeit.

Tipp.

Javasoljuk, hogy ismerje meg, hogyan integrálhatja az LLMOps-t a parancssori folyamattal.

Fontos

A parancssori folyamat jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Előfeltételek

  • Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki az Azure Machine Tanulás ingyenes vagy fizetős verzióját.
  • Egy Azure Machine Learning-munkaterület.
  • A git a helyi gépen fut.
  • Egy szervezet az Azure DevOpsban. Az Azure DevOps-beli szervezet segít az együttműködésben, a munka- és kódhibák, a problémák tervezésében és nyomon követésében, valamint a folyamatos integráció és üzembe helyezés beállításában.
  • Az Azure DevOps Terraform-bővítménye, ha az Azure DevOps + Terraform használatával hoz létre infrastruktúrát

Feljegyzés

A Git 2.27-es vagy újabb verziójára van szükség. A Git-parancs telepítésével kapcsolatos további információkért tekintse meg https://git-scm.com/downloads és válassza ki az operációs rendszert

Fontos

A cikkben szereplő CLI-parancsokat Bash használatával teszteltük. Ha másik rendszerhéjat használ, hibák léphetnek fel.

Parancssori folyamat beállítása

A parancssori folyamat kapcsolati erőforrást használ olyan végpontokhoz való csatlakozáshoz, mint az Azure OpenAI, az OpenAI vagy az Azure AI Search, és futtatókörnyezetet használ a folyamatok végrehajtásához. Ezeket az erőforrásokat létre kell hozni, mielőtt végrehajtanák a folyamatokat a parancssori folyamatban.

Kapcsolatok beállítása a parancssori folyamathoz

Csatlakozás-folyamatok a parancssori portál felhasználói felületén vagy a REST API használatával hozhatók létre. Kövesse az irányelveket, és hozzon létre kapcsolatokat a parancssori folyamathoz.

A hivatkozásra kattintva további információkat tudhat meg a kapcsolatokról.

Feljegyzés

A mintafolyamatok az "aoai" kapcsolatot használják, és a végrehajtásukhoz létre kell hozni az "aoai" nevű kapcsolatot.

Számítási és futtatókörnyezet beállítása a parancssori folyamathoz

A futtatókörnyezet a parancssori portál felhasználói felületén vagy a REST API használatával hozható létre. Kövesse az irányelveket a számítás és a futtatókörnyezet beállításához a gyors folyamathoz.

A hivatkozásra kattintva többet tudhat meg a futtatókörnyezetről.

Feljegyzés

Ugyanezt a futtatókörnyezetnevet kell használni a később ismertetett LLMOps_config.json fájlban.

Az Azure Service Principal beállítása

Az Azure-szolgáltatásnév olyan biztonsági identitás, amelyet az alkalmazások, szolgáltatások és automatizálási eszközök használnak az Azure-erőforrások eléréséhez. Olyan alkalmazást vagy szolgáltatást jelöl, amelynek hitelesítenie kell az Azure-ral, és az Ön nevében kell hozzáférnie az erőforrásokhoz. Kövesse az irányelveket a szolgáltatásnév azure-beli létrehozásához.

Ez a szolgáltatásnév később az Azure DevOps Service-kapcsolat és az Azure DevOps konfigurálására szolgál az Azure Services hitelesítéséhez és az azure-szolgáltatásokhoz való csatlakozáshoz. A Prompt Flow-ban mindkét experiment and evaluation runs esetben végrehajtott feladatok ennek a szolgáltatásnévnek az identitása alatt vannak. Emellett mind a computeruntime kettő ugyanazzal a szolgáltatásnévvel jön létre.

Tipp.

A beállítás engedélyeket biztosít owner a szolgáltatásnév számára.

  • Ennek az az oka, hogy a CD-folyamat automatikusan hozzáférést biztosít az újonnan kiépített Azure Machine Tanulás-végponthoz az Azure Machine Tanulás-munkaterülethez a kapcsolatok adatainak olvasásához.
  • Emellett hozzáadja az Azure Machine Tanulás Workspace-hez társított kulcstartó-szabályzathoz és list titkos engedélyekkelget.

A tulajdonosi engedély a folyamat YAML-kódjának módosításával és az engedélyekkel kapcsolatos lépés eltávolításával módosítható contributor szintengedélyekká.

Az Azure DevOps beállítása

Az LLMOps-folyamat Azure DevOps használatával történő beállításához több lépést is el kell végezni.

Új Azure DevOps-projekt létrehozása

Kövesse az irányelveket egy új Azure DevOps-projekt Létrehozásához az Azure DevOps felhasználói felületén.

Hitelesítés beállítása az Azure DevOps és az Azure között

Kövesse az irányelveket a korábban létrehozott szolgáltatásnév használatához, valamint az Azure DevOps és az Azure Services közötti hitelesítés beállításához.

Ez a lépés konfigurál egy új Azure DevOps Service-Csatlakozás iont, amely a szolgáltatásnév adatait tárolja. A projektben lévő folyamatok a kapcsolat neve alapján olvashatják el a kapcsolati információkat. Ez segít konfigurálni az Azure DevOps-folyamat lépéseit az Azure-hoz való automatikus csatlakozáshoz.

Azure DevOps-változócsoport létrehozása

Az irányelveket követve hozzon létre egy új változócsoportot, és adjon hozzá egy, az Azure DevOps Service-Csatlakozás ionhoz kapcsolódó változót.

A szolgáltatásnév neve automatikusan elérhető környezeti változóként a folyamatok számára.

Az Azure DevOps-adattár és -folyamatok konfigurálása

Ez az adattár két ágat használ – main a development kód-előléptetésekhez és a folyamatok végrehajtásához a bennük lévő kódmódosítások helyett. Kövesse az irányelveket , hogy saját helyi és távoli adattárat állítson be az adattárból származó kód használatához.

A lépések magukban foglalják az adattárból és development branches az main adattárból való klónozást, valamint a kód társítását az új Azure DevOps-adattárra való hivatkozáshoz. A kódmigráláson kívül a folyamatok – mind a PR, mind a fejlesztői folyamatok úgy vannak konfigurálva, hogy azok automatikusan végrehajtásra kerülnek a pr létrehozási és egyesítési eseményindítók alapján.

A fejlesztési ág ágszabályzatát úgy is konfigurálnia kell, hogy a szolgáltatáságból a fejlesztési ágon létrehozott összes pr-folyamathoz végrehajtsa a PR-folyamatot. A "dev" folyamat akkor lesz végrehajtva, amikor a lekéréses kérelem a fejlesztési ágba egyesül. A "dev" folyamat CI- és CD-fázisokból áll.

A folyamatokban implementált hurokban is van ember. A folyamat CI-fázisának dev végrehajtása után a CD-fázis a manuális jóváhagyás után következik. A jóváhagyásnak az Azure DevOps-folyamat buildelési felhasználói felületéről kell történnie. Az alapértelmezett időtúllépés 60 perc, amely után a folyamat el lesz utasítva, és a CD-fázis nem lesz végrehajtva. A végrehajtás manuális jóváhagyása a folyamat CD-lépéseinek végrehajtásához vezet. A manuális jóváhagyás úgy van konfigurálva, hogy értesítéseket küldjön a következőnek: ""replace@youremail.com. A megfelelő e-mail-azonosítóra kell cserélni.

A folyamatok tesztelése

A folyamatok teszteléséhez kövesse a fent említett irányelveket .

A lépések a következők:

  1. Pr(lekéréses kérelem) létrehozása egy szolgáltatáságból a fejlesztési ágba.
  2. A PR-folyamatnak automatikusan végre kell hajtania az ágházirend-konfiguráció eredményeként.
  3. A lekéréses kérelem ezután egyesül a fejlesztési ágban.
  4. A rendszer végrehajtja a társított "dev" folyamatot. Ez teljes CI- és CD-végrehajtást eredményez, és a meglévő Azure Machine-Tanulás-végpontok kiépítését vagy frissítését eredményezi.

A tesztkimeneteknek az itt láthatóhoz hasonlónak kell lenniük.

Helyi végrehajtás

A helyi végrehajtás képességeinek kihasználásához kövesse az alábbi telepítési lépéseket:

  1. Klónozza az adattárat: Először klónozza a sablon adattárát a GitHub-adattárból.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Env-fájl beállítása: hozzon létre .env fájlt a legfelső mappaszinten, és adja meg az említett elemek adatait. Adjon hozzá annyi kapcsolatnevet, amennyit csak szükséges. Az adattár összes folyamat példája az AzureOpenAI nevű aoaikapcsolatot használja. Adjon hozzá egy sort aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} az api_key és api_base frissített értékeivel. Ha a folyamatokban további, eltérő nevű kapcsolatokat használ, azokat ennek megfelelően kell hozzáadni. Jelenleg az AzureOpenAI-t használja a támogatott szolgáltatóként.

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. Készítse elő a helyi conda vagy virtuális környezetet a függőségek telepítéséhez.

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

  1. Hozza vagy írja be a folyamatokat a sablonba az itt található dokumentáció alapján.

  2. A local_execution mappában megadott példákhoz hasonló Python-szkripteket írhat.

Következő lépések