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
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
- Szeretne többet megtudni? Tekintse meg a kapcsolódó képzési tervet, indítsa el a gépi tanulási életciklust az MLOps használatával.