Python-modellek modellkezelése az Azure Machine Learninggel

Azure Blob Storage
Azure Container Registry
Azure DevOps
Azure Machine Learning
Azure Pipelines

Ez a referenciaarchitektúra bemutatja, hogyan implementálhat folyamatos integrációs (CI), folyamatos kézbesítési (CD) és újratanítási folyamatot egy AI-alkalmazáshoz az Azure DevOps és az Azure Machine Tanulás használatával. A megoldás a scikit-learn diabétesz adatkészletre épül, de könnyen alkalmazható bármilyen AI-forgatókönyvhez és más népszerű buildrendszerekhez, például a Jenkinshez vagy a Travishez.

Az architektúra referencia-implementációja elérhető a GitHubon.

Architektúra

A Machine Tanulás DevOps architektúrájának diagramja.

Töltse le az architektúra Visio-fájlját.

Munkafolyamat

Ez az architektúra a következő szolgáltatásokból áll:

Azure Pipelines. Ez a buildelési és tesztelési rendszer az Azure DevOpson alapul, és a buildelési és kiadási folyamatokhoz használatos. Az Azure Pipelines ezeket a folyamatokat tevékenységeknek nevezett logikai lépésekre bontja. Az Azure CLI-feladat például megkönnyíti az Azure-erőforrások használatát.

Az Azure Machine Tanulás egy felhőalapú szolgáltatás a gépi tanulási modellek nagy léptékű betanítására, pontozására, üzembe helyezésére és kezelésére. Ez az architektúra az Azure Machine Tanulás Python SDK-t használja munkaterület, számítási erőforrások, gépi tanulási folyamat és pontozási rendszerkép létrehozásához. Az Azure Machine Tanulás munkaterületen kísérletezhet, taníthat be és helyezhet üzembe gépi tanulási modelleket.

Az Azure Machine Tanulás Compute egy igény szerinti virtuális gépekből álló fürt, amely automatikus skálázási, GPU- és CPU-csomópont-beállításokkal rendelkezik. A betanítási feladat ezen a fürtön lesz végrehajtva.

Az Azure Machine Tanulás-folyamatok újrafelhasználható gépi tanulási munkafolyamatokat biztosítanak, amelyek több forgatókönyvben újra felhasználhatók. A betanítás, a modell kiértékelése, a modellregisztráció és a képlétrehozás különböző lépésekben történik ezen folyamatokon belül ebben a használati esetben. A folyamat a buildelési fázis végén lesz közzétéve vagy frissítve, és az új adatok érkezésekor aktiválódik.

Azure Blob Storage. A blobtárolók a pontozási szolgáltatás naplóinak tárolására szolgálnak. Ebben az esetben a bemeneti adatokat és a modell előrejelzését is összegyűjti a rendszer. Némi átalakítás után ezek a naplók használhatók a modell újratanításához.

Azure Container Registry. A pontozó Python-szkript Docker-rendszerképként van csomagolva, és a beállításjegyzékben verziószámozott.

Azure Container Instances. A kiadási folyamat részeként a minőségbiztosítási és átmeneti környezet utánzása a pontozó webszolgáltatási rendszerkép tárolópéldányokban való üzembe helyezésével történik, amely egyszerű, kiszolgáló nélküli módot biztosít a tárolók futtatására.

Azure Kubernetes Service. Miután a pontozó webszolgáltatás rendszerképét alaposan tesztelte a minőségbiztosítási környezetben, a rendszer üzembe helyezi az éles környezetben egy felügyelt Kubernetes-fürtön.

Azure-alkalmazás Elemzések. Ez a monitorozási szolgáltatás a teljesítmény rendellenességeinek észlelésére szolgál.

MLOps-folyamat

Ez a megoldás az AI-projektek különböző szakaszainak végpontok közötti automatizálását mutatja be a szoftvermérnökök számára már ismerős eszközök használatával. A gépi tanulási probléma egyszerű, ha a DevOps-folyamatra összpontosít. A megoldás a scikit-learn diabetes adatkészletet használja, és egy gerinc lineáris regressziós modellt hoz létre a cukorbetegség valószínűségének előrejelzéséhez.

Ez a megoldás a következő három folyamaton alapul:

  • Folyamat összeállítása. Létrehozza a kódot, és tesztcsomagot futtat.
  • Újratanítási folyamat. A modell újratanítása ütemezés szerint vagy új adatok elérhetővé válása esetén.
  • Kiadási folyamat. Üzembe helyezi a pontozási rendszerképet, és biztonságosan előlépteti a különböző környezetekben.

A következő szakaszok ezeket a folyamatokat ismertetik.

Buildelési folyamat

A CI-folyamat a kód minden bejelentkezésekor aktiválódik. A kód felépítését és a tesztek futtatását követően közzétesz egy frissített Azure Machine Learning-folyamatot. A buildelési folyamat a következő feladatokból áll:

  • Kódminőség. Ezek a tesztek biztosítják, hogy a kód megfeleljen a csapat szabványainak.

  • Egységteszt. Ezek a tesztek ellenőrzik, hogy a kód működik-e, megfelelő-e a kódlefedettség, és stabil-e.

  • Adatteszt. Ezek a tesztek ellenőrzik, hogy az adatminták megfelelnek-e a várt sémának és eloszlásnak. Szabja testre ezt a tesztet más használati esetekhez, és futtassa külön adathálózati folyamatként, amely az új adatok érkezésekor aktiválódik. Helyezze át például az adattesztelési feladatot egy adatbetöltési folyamatba , hogy korábban tesztelhesse.

Feljegyzés

Érdemes megfontolnia a DevOps-eljárások engedélyezését a gépi tanulási modellek betanításához használt adatokhoz, de ez a cikk nem foglalkozik ezzel. Az adatbetöltési folyamat CI/CD architektúrájáról és ajánlott eljárásairól további információt az adatbetöltési folyamat DevOps című szakaszában talál.

Az Azure Machine Tanulás és a Python SDK infrastruktúrájának beállításakor a következő egyszeri feladatok történnek:

  • Hozza létre azt a munkaterületet, amely az összes Azure Machine-Tanulás kapcsolódó erőforrást üzemelteti.
  • Hozza létre a betanítási feladatot futtató számítási erőforrásokat.
  • Hozza létre a gépi tanulási folyamatot a frissített betanítási szkripttel.
  • Tegye közzé a gépi tanulási folyamatot REST-végpontként a betanítási munkafolyamat vezényléséhez. A következő szakasz ezt a lépést ismerteti.

Újratanítási folyamat

A gépi tanulási folyamat a modell aszinkron újratanításának folyamatát vezényli. Az újratanítás indítása lehet előre ütemezett, vagy történhet akkor, amikor az előző lépésből meghívja a közzétett folyamat REST-végpontját, és ezzel új adatok válnak elérhetővé.

Ez a folyamat a következő lépéseket ismerteti:

  • Modell betanítása. A betanítási Python-szkript végrehajtása az Azure Machine Tanulás Számítási erőforráson történik a futtatási előzményekben tárolt új modellfájl lekéréséhez. Mivel a betanítás egy AI-projekt legintenzívebb feladata, a megoldás az Azure Machine Tanulás Compute-t használja.

  • Modell kiértékelése. Egy egyszerű kiértékelési teszt összehasonlítja az új modellt a meglévő modellel. Csak akkor lesz előléptetve, ha az új modell jobb. Ellenkező esetben a modell nincs regisztrálva, és a folyamat megszakad.

  • Modell regisztrálása. Az újratanított modell regisztrálva van az Azure Machine Tanulás Modell beállításjegyzékében. Ez a szolgáltatás verziókövetést biztosít a modellekhez a metaadatcímkék mellett, hogy könnyen reprodukálhatók legyenek.

Kiadási folyamat

Ez a folyamat bemutatja, hogyan lehet üzembe helyezni a pontozó lemezképet, és hogyan lehet biztonságosan előléptetni a különböző környezetekben. Ez a folyamat két környezetre, a minőségbiztosítási és az éles környezetre van felosztva:

Minőségbiztosítási környezet

  • Modellösszetevő-eseményindító. A kiadási folyamatok minden alkalommal aktiválódnak, amikor új összetevő érhető el. Az Azure Machine Tanulás Model Managementben regisztrált új modell kiadási összetevőként lesz kezelve. Ebben az esetben a rendszer minden új modellhez elindít egy folyamatot.

  • Pontozási kép létrehozása. A regisztrált modell egy pontozószkripttel és Python-függőségekkel (Conda YAML-fájl) együtt van csomagolva egy üzemeltetési Docker-rendszerképbe. A rendszerkép automatikusan verziószámot kap az Azure Container Registry rendszerén keresztül.

  • Üzembe helyezés tárolópéldányokon. Ez a szolgáltatás nem éles környezet létrehozására szolgál. A pontozási rendszerkép is itt van üzembe helyezve, és ezt többnyire tesztelésre használják. A Tárolópéldányok segítségével egyszerűen és gyorsan tesztelheti a Docker-rendszerképet.

  • Webszolgáltatás tesztelése. Egy egyszerű API-teszt gondoskodik arról, hogy a rendszerkép sikeresen üzembe legyen helyezve.

Éles környezet

  • Üzembe helyezés az Azure Kubernetes Service-ben. Ez a szolgáltatás egy pontozó lemezkép webszolgáltatásként való üzembe helyezésére használható nagy méretekben éles környezetben.

  • Webszolgáltatás tesztelése. Egy egyszerű API-teszt gondoskodik arról, hogy a rendszerkép sikeresen üzembe legyen helyezve.

Megfontolások

Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek halmaza. További információ: Microsoft Azure Well-Architected Framework.

Méretezhetőség

Az Azure DevOps létrehozási folyamata minden alkalmazásmérethez skálázható. A buildelési folyamatok maximális időtúllépése attól függően változik, hogy milyen ügynökön futnak. A buildek örökké futhatnak saját üzemeltetésű ügynökökön (magánügynökökön). A Nyilvános projektekHez a Microsoft által üzemeltetett ügynökök esetében a buildek hat órán át futhatnak. Magánprojektek esetén a korlát 30 perc.

A maximális időtúllépés használatához állítsa be a következő tulajdonságot az Azure Pipelines YAML-fájlban :

jobs:
- job: <job_name>
  timeoutInMinutes: 0

Ideális esetben a buildelési folyamat gyorsan befejeződik, és csak egységteszteket és más tesztek egy részét hajtja végre. Így gyorsan ellenőrizheti a módosításokat, és kijavíthatja őket, ha problémák merülnek fel. Futtasson hosszú ideig futó teszteket munkaidőn kívül.

A kiadási folyamat egy valós idejű pontozási webszolgáltatást tesz közzé. A QA-környezethez való kiadás a Container Instances használatával történik, de használhat egy másik Kubernetes-fürtöt is, amely a minőségbiztosítási/előkészítési környezetben fut.

Skálázza az éles környezetet az Azure Kubernetes Service-fürt méretének megfelelően. A fürt mérete az üzembe helyezett pontozási webszolgáltatáshoz várt terheléstől függ. A valós idejű pontozási architektúrák esetében az átviteli sebesség kulcsfontosságú optimalizálási metrika. A nem mély tanulási forgatókönyvek esetében a processzornak elegendőnek kell lennie a terhelés kezeléséhez; a mélytanulási számítási feladatok esetében azonban, ha a sebesség szűk keresztmetszet, a GPU-k általában jobb teljesítményt nyújtanak a processzorokhoz képest. Az Azure Kubernetes Service támogatja a CPU- és GPU-csomóponttípusokat is, ezért használja a megoldás a rendszerképek üzembe helyezéséhez. További információ: GPU-k és processzorok a mélytanulási modellek üzembe helyezéséhez.

Az újratanítási folyamat vertikális fel- és leskálázása az Azure Machine Tanulás számítási erőforrás csomópontjainak számától függően, és az automatikus méretezési beállítással kezelheti a fürtöt. Ez az architektúra processzorokat használ. A mélytanulási számítási feladatok esetében a GPU-k jobb választásnak számítanak, és az Azure Machine Tanulás Compute támogatja.

Menedzsment

  • Újratanítási feladat figyelése. A gépi tanulási folyamatok vezénylik az újratanítást egy gépcsoporton, és egyszerű módot biztosítanak a monitorozásukra. Használja az Azure Machine Tanulás felhasználói felületét, és tekintse meg a naplók folyamatszakaszát. Másik lehetőségként ezek a naplók blobba is írhatók, és onnan is olvashatók olyan eszközökkel, mint az Azure Storage Explorer.

  • Naplózás. Az Azure Machine Tanulás segítségével egyszerűen naplózhatja a gépi tanulási életciklus minden lépését. A naplók egy blobtárolóban vannak tárolva. További információ: Naplózás engedélyezése az Azure Machine-Tanulás. A részletesebb figyeléshez konfigurálja az Alkalmazás Elemzések a naplók használatára.

  • Biztonság. A titkos kulcsok és hitelesítő adatok az Azure Key Vaultban vannak tárolva, és változó csoportok használatával érhetők el az Azure Pipelinesban.

Költségoptimalizálás

A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pillér áttekintése.

Az Azure DevOps ingyenesen használható nyílt forráskódú projektekhez és legfeljebb öt felhasználóval rendelkező kis projektekhez. Nagyobb csapatok esetén vásároljon egy csomagot a felhasználók száma alapján.

A számítás az architektúra legnagyobb költségillesztője, és a költségek a használati esettől függően változnak. Ez az architektúra az Azure Machine Tanulás Compute-t használja, de más lehetőségek is rendelkezésre állnak. Az Azure Machine Tanulás nem ad hozzá pótdíjat a számítási fürtöt futtató virtuális gépek költségein felül. Konfigurálja úgy a számítási fürtöt, hogy legalább 0 csomópont legyen, hogy használaton kívüli állapotban 0 csomópontra skálázható legyen, és ne járjon költségekkel. A számítási költség a csomópont típusától, számos csomóponttól és kiépítési módtól függ (alacsony prioritású vagy dedikált). A Gépi Tanulás és egyéb szolgáltatások költségeit az Azure díjszabási kalkulátorával becsülheti meg.

A forgatókönyv üzembe helyezése

A referenciaarchitektúra üzembe helyezéséhez kövesse a GitHub-adattár Első lépések útmutatójában leírt lépéseket.

Közreműködők

Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.

Fő szerző:

  • Praneet Singh Solanki | Vezető szoftvermérnök

Következő lépések