Szerkesztés

Megosztás a következőn keresztül:


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 Learning 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 Learning 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 Learning egy felhőalapú szolgáltatás a gépi tanulási modellek nagy léptékű betanításához, pontozásához, üzembe helyezéséhez és kezeléséhez. Ez az architektúra az Azure Machine Learning Python SDK használatával hoz létre egy munkaterületet, számítási erőforrásokat, a gépi tanulási folyamatot és a pontozási rendszerképet. Az Azure Machine Learning-munkaterületen kísérletezhet, taníthat be és helyezhet üzembe gépi tanulási modelleket.

Az Azure Machine Learning Compute egy igény szerinti virtuális gépekből álló fürt, amely automatikus skálázási és 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 Learning-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 Insights. 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 Learning és a Python SDK infrastruktúrájának beállításakor az alábbi egyszeri feladatok történnek:

  • Hozza létre az Azure Machine Learninghez kapcsolódó összes erőforrást üzemeltető munkaterületet.
  • 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 Learning Compute-erőforráson történik egy új modellfájl lekéréséhez, amelyet a futtatási előzmények tárolnak. Mivel a betanítás egy AI-projekt legintenzívebb feladata, a megoldás az Azure Machine Learning Computet 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 Learning Model 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 Learning 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 Learning Compute-erőforrás csomópontjainak számától függően, és az automatikus skálázási lehetőséggel 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 Learning 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 Learning felhasználói felületét , és tekintse meg a naplók folyamatainak szakaszá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 Learning 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 Learningben. A részletesebb monitorozás érdekében konfigurálja az Application Insightst 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 Learning Compute-t használja, de más lehetőségek is rendelkezésre állnak. Az Azure Machine Learning nem számít fel 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 Machine Learning és más szolgáltatások költségeit az Azure díjkalkulá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