Python-modellek modellkezelése az Azure Machine Learninggel

Application Insights
Blob Storage
Container Instances
Container Registry
Azure DevOps
Kubernetes Service
Machine Learning
Pipelines

Ez a hivatkozási architektúra bemutatja, hogyan valósítható meg a folyamatos integráció (CI), a folyamatos teljesítés (CD) és a folyamat átképzése egy AI-alkalmazáshoz az Azure DevOps és a Azure Machine learninghasználatával.This reference architecture shows how to implement a continuous integration (CI), continuous delivery (CD), and retraining pipeline for an AI application using Azure DevOps and Azure Machine Learning. A megoldás a scikit-Learn diabétesz adatkészletre épül, de könnyen adaptálható bármely AI-forgatókönyvhöz és más népszerű Build-rendszerekhez, mint például a Jenkins és a Travis.The solution is built on the scikit-learn diabetes dataset but can be easily adapted for any AI scenario and other popular build systems such as Jenkins and Travis.

GitHub-embléma az architektúrához tartozó referenciák a githubonérhetők el.GitHub logo A reference implementation for this architecture is available on GitHub.

A MLOps architektúra ábrája

ArchitektúraArchitecture

Ez az architektúra a következő összetevőkből áll:This architecture consists of the following components:

Azure-folyamatok.Azure Pipelines. Ez az összeállítási és tesztelési rendszer az Azure DevOps alapul, és a létrehozási és kiadási folyamatokhoz használatos.This build and test system is based on Azure DevOps and used for the build and release pipelines. Az Azure-folyamatok ezeket a folyamatokat a feladatok nevű logikai lépésekben megtörik.Azure Pipelines breaks these pipelines into logical steps called tasks. Az Azure CLI -feladat például megkönnyíti az Azure-erőforrásokkal való munkát.For example, the Azure CLI task makes it easier to work with Azure resources.

Azure Machine learning.Azure Machine Learning. A Azure Machine Learning egy felhőalapú szolgáltatás, amely a gépi tanulási modellek skálán való betanítását, kiértékelését, üzembe helyezését és felügyeletét végzi.Azure Machine Learning is a cloud service for training, scoring, deploying, and managing machine learning models at scale. Ez az architektúra a Python 3 Azure Machine learning SDK -val hozza létre a munkaterületet, a számítási erőforrásokat, a gépi tanulási folyamatot és a pontozási képet.This architecture uses the Azure Machine Learning SDK for Python 3 to create a workspace, compute resources, the machine learning pipeline, and the scoring image. Az Azure Machine Learning munkaterület lehetővé teszi a gépi tanulási modellek kipróbálását és betanítását és üzembe helyezését.An Azure Machine Learning workspace provides the space in which to experiment and train and deploy machine learning models.

Azure Machine learning a számítási szolgáltatás egy automatikus skálázási, GPU-és CPU-csomópont-beállításokkal rendelkező, igény szerinti virtuális gépek fürtje.Azure Machine Learning Compute is cluster of virtual machines on demand with an automatic scaling and GPU and CPU node options. A betanítási feladatot a rendszer a fürtön hajtja végre.The training job is executed on this cluster.

Azure Machine learning folyamatok olyan újrafelhasználható gépi tanulási munkafolyamatokat biztosítanak, amelyek az egyes forgatókönyvekben újra felhasználhatók.Azure Machine Learning pipelines provide reusable machine learning workflows that can be reused across scenarios. A betanítás, a modell kiértékelése, a modell regisztrálása és a képek létrehozása a folyamatokon belül különböző lépésekben történik ebben a használati esetben.Training, model evaluation, model registration, and image creation occur in distinct steps within these pipelines for this use case. A folyamat közzététele vagy frissítése a létrehozási fázis végén történik, és új adatérkezéskor aktiválódik.The pipeline is published or updated at the end of the build phase and gets triggered on new data arrival.

Azure Blob Storage.Azure Blob Storage. A blob-tárolók a pontozási szolgáltatásból származó naplók tárolására szolgálnak.Blob containers are used to store the logs from the scoring service. Ebben az esetben a bemeneti adatokat és a modell előrejelzését is gyűjti.In this case, both the input data and the model prediction are collected. Néhány átalakítás után ezek a naplók használhatók a modell átképzéséhez.After some transformation, these logs can be used for model retraining.

Azure Container Registry.Azure Container Registry. A pontozási Python-szkript Docker-rendszerképként van csomagolva, és a beállításjegyzékben van.The scoring Python script is packaged as a Docker image and versioned in the registry.

Azure Container instances.Azure Container Instances. A kiadási folyamat részeként a MINŐSÉGBIZTOSÍTÁSi és átmeneti környezet a pontozási webszolgáltatások rendszerképének Container Instancesre való üzembe helyezésével van elindítva, amely egyszerű, kiszolgáló nélküli módot biztosít a tárolók futtatására.As part of release pipeline, the QA and staging environment is mimicked by deploying the scoring webservice image to Container Instances, which provides an easy, serverless way to run a container.

Azure Kubernetes szolgáltatás.Azure Kubernetes Service. Miután a pontozási webszolgáltatási lemezképet alaposan tesztelték a QA-környezetben, a rendszer egy felügyelt Kubernetes-fürtön helyezi üzembe az éles környezetben.Once the scoring webservice image is thoroughly tested in the QA environment, it is deployed to the production environment on a managed Kubernetes cluster.

Azure Application Insights.Azure Application Insights. Ez a figyelési szolgáltatás a teljesítménybeli rendellenességek észlelésére szolgál.This monitoring service is used to detect performance anomalies.

MLOps folyamatMLOps Pipeline

Ez a megoldás egy AI-projekt különböző szakaszainak teljes körű automatizálását mutatja be a szoftveres mérnökök által már ismerős eszközök használatával.This solution demonstrates an end-to-end automation of various stages of an AI project using tools that are already familiar to software engineers. A gépi tanulási probléma egyszerűen megtarthatja a fókuszt a DevOps folyamaton.The machine learning problem is simple to keep the focus on the DevOps pipeline. A megoldás a scikit-Learn diabétesz adatkészletet használja, és létrehoz egy Ridge lineáris regressziós modellt a cukorbetegség valószínűségének előrejelzéséhez.The solution uses the scikit-learn diabetes dataset and builds a ridge linear regression model to predict the likelihood of diabetes. A részletekért lásd: Python scikit – Learn models .See Training of Python scikit-learn models for details.

Ez a megoldás a következő három folyamaton alapul:This solution is based on the following three pipelines:

  • Folyamat létrehozása.Build pipeline. Felépíti a kódot, és futtatja a tesztek egy csomagját.Buildings the code and runs a suite of tests.
  • Folyamat átképzése.Retraining pipeline. Újratanítja a modellt egy ütemezett időpontban, vagy amikor új adatai válnak elérhetővéRetrains the model on a schedule or when new data becomes available
  • Kiadási folyamat.Release pipeline. Operationalizes a pontozási képet, és a különböző környezetekben biztonságosan támogatja.Operationalizes the scoring image and promotes it safely across different environments.

A következő szakaszok ismertetik ezeket a folyamatokat.The next sections describe each of these pipelines.

Buildelési folyamatBuild pipeline

A CI-folyamat a kód minden bejelentkezésekor aktiválódik.The CI pipeline gets triggered every time code is checked in. 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.It publishes an updated Azure Machine Learning pipeline after building the code and running a suite of tests. A létrehozási folyamat a következő feladatokból áll:The build pipeline consists of the following tasks:

  • Kód minősége.Code quality. Ezek a tesztek biztosítják, hogy a kód megfeleljen a csapat szabványainak.These tests ensure that the code conforms to the standards of the team.

  • Egység tesztelése.Unit test. Ezek a tesztek gondoskodnak arról, hogy a kód megfelelően működjön, megfelelő programkód-lefedettséggel rendelkezzen, és stabil legyen.These tests make sure the code works, has adequate code coverage, and is stable.

  • Az adatteszt.Data test. Ezek a tesztek ellenőrzik, hogy az adatminták megfelelnek-e a várt sémának és terjesztésnek.These tests verify that the data samples conform to the expected schema and distribution. Szabja testre ezt a tesztet más használati esetekre, és futtassa külön adattitkosítási folyamatként, amely új adatként érkezik.Customize this test for other use cases and run it as a separate data sanity pipeline that gets triggered as new data arrives. Tegyük fel például, hogy az adat-tesztelési feladatot egy adatfeldolgozási folyamatba helyezi át, hogy korábban is tesztelje.For example, move the data test task to a data ingestion pipeline so you can test it earlier.

Megjegyzés Érdemes megfontolni az DevOps eljárások használatát a gépi tanulási modellek betanításához használt adatkezeléshez, de ez a cikk nem vonatkozik rá.[NOTE] You should consider enabling DevOps practices for the data used to train the machine learning models, but this is not covered in this article. Az adatfeldolgozási folyamat CI/CD-re vonatkozó architektúrával és ajánlott eljárásokkal kapcsolatos további információkért lásd: DevOps adatfeldolgozási folyamathoz.For more information about the architecture and best practices for CI/CD of a data ingestion pipeline, see DevOps for a data ingestion pipeline.

A Azure Machine Learning és a Python SDK infrastruktúrájának beállításakor a következő egyszeri feladatok történnek:The following one-time tasks occur when setting up the infrastructure for Azure Machine Learning and the Python SDK:

  • Hozza létre a munkaterületet, amely az összes Azure Machine Learning kapcsolódó erőforrást üzemelteti.Create the workspace that hosts all Azure Machine Learning-related resources.

  • Hozza létre a betanítási feladatot futtató számítási erőforrásokat.Create the compute resources that run the training job.

  • Hozza létre a Machine learning-folyamatot a frissített tanítási parancsfájllal.Create the machine learning pipeline with the updated training script.

  • Tegye közzé a Machine learning-folyamatot REST-végpontként a betanítási munkafolyamat előkészítéséhez.Publish the machine learning pipeline as a REST endpoint to orchestrate the training workflow. A következő szakasz ezt a lépést ismerteti.The next section describes this step.

Folyamat átképzéseRetraining pipeline

A Machine learning-folyamat összehangolja a modellt aszinkron módon.The machine learning pipeline orchestrates the process of retraining the model in an asynchronous manner. Az átképzést ütemezett vagy új adatok válnak elérhetővé, ha meghívja a közzétett folyamat REST-végpontját az előző lépésből.Retraining can be triggered on a schedule or when new data becomes available by calling the published pipeline REST endpoint from previous step.

Ez a folyamat a következő lépéseket tartalmazza:This pipeline covers the following steps:

  • Betanítási modell.Train model. A betanítási Python-szkriptet a Azure Machine Learning számítási erőforráson hajtja végre, hogy új modellt kapjon a futtatási előzményekbentárolt fájlhoz.The training Python script is executed on the Azure Machine Learning Compute resource to get a new model file which is stored in the run history. Mivel a képzés a legnagyobb számítási igényű feladat egy AI-projektben, a megoldás Azure Machine learning számításthasznál.Since training is the most compute-intensive task in an AI project, the solution uses Azure Machine Learning Compute.

  • Modell kiértékelése.Evaluate model. Az egyszerű próbaverziós tesztek összehasonlítják az új modellt a meglévő modellel.A simple evaluation test compares the new model with the existing model. Csak akkor, ha az új modell jobb, hogy népszerűsítse.Only when the new model is better does it get promoted. Ellenkező esetben a modell nincs regisztrálva, és a folyamat meg lett szakítva.Otherwise, the model is not registered and the pipeline is canceled.

  • Modell regisztrálása.Register model. Az átképzésen átvett modell regisztrálva van az Azure ml-modell beállításjegyzékében.The retrained model is registered with the Azure ML Model registry. Ez a szolgáltatás a modellek verziószámát a metaadatok címkéi mellett biztosítja, így könnyen reprodukálható lehet.This service provides version control for the models along with metadata tags so they can be easily reproduced.

Kiadási folyamatRelease pipeline

Ez a folyamat azt mutatja be, hogyan működővé tenni a pontozási képet, és hogyan lehet biztonságosan támogatni a különböző környezetekben.This pipeline shows how to operationalize the scoring image and promote it safely across different environments. Ez a folyamat két környezettel, a MINŐSÉGBIZTOSÍTÁSsal és a termeléssel van felosztva:This pipeline is subdivided into two environments, QA and production:

QA-környezetQA environment

  • Modellbeli összetevő-trigger.Model Artifact trigger. A kiadási folyamatokat minden alkalommal elindítják, amikor új összetevő érhető el.Release pipelines get triggered every time a new artifact is available. A Azure Machine Learning modellkezelés regisztrált új modell kiadási összetevőként lesz kezelve.A new model registered to Azure Machine Learning Model Management is treated as a release artifact. Ebben az esetben minden új modellhez létrejön egy folyamat, amely regisztrálva van.In this case, a pipeline is triggered for each new model is registered.

  • Pontozási rendszerkép létrehozásaCreate scoring image. A regisztrált modell a pontozási szkripttel és a Python-függőségekkel (Conda YAML-fájllal) együtt van csomagolva egy operacionalizálási Docker-rendszerképbe.The registered model is packaged together with scoring script and Python dependencies (Conda YAML file) into an operationalization Docker image. A rendszerkép automatikusan verziószámot kap az Azure Container Registry rendszerén keresztül.The image automatically gets versioned through Azure Container Registry.

  • Container Instances üzembe helyezése.Deploy on Container Instances. Ez a szolgáltatás nem éles környezet létrehozásához használatos.This service is used to create a non-production environment. A pontozási lemezképet itt is üzembe helyezi, és ez többnyire teszteléshez használatos.The scoring image is also deployed here, and this is mostly used for testing. Container Instances egyszerű és gyors módszert biztosít a Docker-rendszerkép teszteléséhez.Container Instances provides an easy and quick way to test the Docker image.

  • Webszolgáltatás tesztelése.Test web service. Egy egyszerű API-teszt gondoskodik a lemezkép sikeres üzembe helyezéséről.A simple API test makes sure the image is successfully deployed.

Éles környezetProduction environment

  • Üzembe helyezés az Azure Kubernetes szolgáltatásban.Deploy on Azure Kubernetes Service. Ezzel a szolgáltatással a pontozási lemezképek üzembe helyezése egy éles környezetben található webszolgáltatásként történik.This service is used for deploying scoring image as a web service at scale in a production environment.

  • Webszolgáltatás tesztelése.Test web service. Egy egyszerű API-teszt gondoskodik a lemezkép sikeres üzembe helyezéséről.A simple API test makes sure the image is successfully deployed.

Méretezési szempontokScalability considerations

Az Azure DevOps felépített folyamat bármilyen méretű alkalmazásra méretezhető.A build pipeline on Azure DevOps can be scaled for applications of any size. A folyamatok létrehozásához szükséges maximális időkorlát attól függően változik, hogy melyik ügynöktől futnak.Build pipelines have a maximum timeout that varies depending on the agent they are run on. A buildek örökre futtathatók a saját üzemeltetésű ügynökökön (privát ügynökökön).Builds can run forever on self-hosted agents (private agents). Nyilvános projekthez készült Microsoft által üzemeltetett ügynökök esetében a buildek hat órán keresztül futhatnak.For Microsoft-hosted agents for a public project, builds can run for six hours. Privát projektek esetén a korlát 30 percet vesz igénybe.For private projects, the limit is 30 minutes.

A maximális időtúllépés használatához állítsa be a következő tulajdonságot az Azure-folyamatok YAML -fájljába:To use the maximum timeout, set the following property in your Azure Pipelines YAML file:

jobs:
- job: <job_name>
  timeoutInMinutes: 0

Ideális esetben a létrehozási folyamat gyorsan fejeződik be, és csak az egységek és a tesztek egy részhalmazát hajtja végre.Ideally, have your build pipeline finish quickly and execute only unit tests and a subset of other tests. Így gyorsan ellenőrizheti a módosításokat, és kijavíthatja őket, ha problémák merülnek fel.This allows you to validate the changes quickly and fix them if issues arise. Hosszan futó tesztek futtatása munkaidőn kívül.Run long-running tests during off hours.

A kiadási folyamat egy valós idejű pontozási webszolgáltatást tesz közzé.The release pipeline publishes a real-time scoring web service. A QA-környezetbe való kiadás Container Instances használatával végezhető el, de a QA/átmeneti környezetben futó másik Kubernetes-fürtöt is használhat.A release to the QA environment is done using Container Instances for convenience, but you can use another Kubernetes cluster running in the QA/staging environment.

Az éles környezet méretezése az Azure Kubernetes Service-fürt méretétől függően.Scale the production environment according to the size of your Azure Kubernetes Service cluster. A fürt mérete az üzembe helyezett pontozási webszolgáltatás által várt terheléstől függ.The size of the cluster depends on the load you expect for the deployed scoring web service. A valós idejű pontozási architektúrák esetében az átviteli sebesség a legfontosabb optimalizálási mérőszám.For real-time scoring architectures, throughput is a key optimization metric. 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élyreható tanulási feladatokhoz azonban a sebesség szűk keresztmetszet, a GPU-k általában jobb teljesítményt biztosítanak a processzorokkal szemben.For non-deep learning scenarios, CPU should be sufficient to handle the load; however, for deep learning workloads, when speed is a bottleneck, GPUs generally provide better performance compared to CPUs. Ahhoz, hogy a moreTo megfeleljen a GPU-teljesítménynek a CPU-val, általában nagy mennyiségű CPU-val rendelkező fürtöt kell használni.For moreTo match GPU performance using CPUs, a cluster with a large number of CPUs is usually needed. A Kubernetes szolgáltatás támogatja a processzor-és a GPU-csomópontok típusait is – ez a megoldás a Kubernetes szolgáltatást használja a rendszerkép központi telepítéséhez.Kubernetes Service supports both CPU and GPU node types-the reason this solution uses Kubernetes Service for image deployment. További információ: GPU vs CPU-k a Deep learning-modellek üzembe helyezéséhez (blogbejegyzés).For more information, see GPUs vs CPUs for deployment of deep learning models (blog post).

Az átképzési folyamat fel-és leskálázása a Azure Machine Learning számítási erőforrásban lévő csomópontok számától függően, és az automatikus skálázási beállítás használatával kezelheti a fürtöt.Scale the retraining pipeline up and down depending on the number of nodes in your Azure Machine Learning Compute resource, and use the autoscaling option to manage the cluster. Ez az architektúra CPU-ket használ.This architecture uses CPUs. A mély tanulási feladatokhoz a GPU-k jobb választást biztosítanak, és Azure Machine Learning számítások támogatják.For deep learning workloads, GPUs are a better choice and are supported by Azure Machine Learning Compute.

Felügyelettel kapcsolatos szempontokManagement considerations

  • Figyelő újratanítási feladata.Monitor retraining job. A gépi tanulási folyamatok összehangolják az átképzést a gépek egy fürtjén keresztül, és egyszerű módszert biztosítanak a figyelésre.Machine learning pipelines orchestrate retraining across a cluster of machines and provides an easy way to monitor them. Használja a Azure Portal, és nyissa meg a Machine learning munkaterületet, és tekintse meg a naplók szakaszának folyamatok szakaszát.Use the Azure portal, and go to the machine learning workspace, and look under pipelines section for the logs. Másik lehetőségként a rendszer a blobokat is írásba helyezi, és olyan eszközökkel is elolvashatja őket, mint például a Azure Storage Explorer.Alternatively, these logs are also written to blob and can be read from there as well using tools such as Azure Storage Explorer.

  • Naplózás.Logging. Azure Machine Learning egyszerű módszert kínál a gépi tanulási életciklus egyes lépéseibe való bejelentkezésre.Azure Machine Learning provides an easy way to log at each step of the machine learning life cycle. A naplók egy blob-tárolóban tárolódnak.The logs are stored in a blob container. További információ: a naplózás engedélyezése Azure Machine learning.For more information, see Enable logging in Azure Machine Learning. A gazdagabb figyeléshez konfigurálja Application Insights a naplók használatára.For richer monitoring, configure Application Insights to use the logs.

  • Biztonsági.Security. Az összes titkot és hitelesítő adatot a rendszer a Azure Key Vault tárolja, és az Azure-folyamatokban a változó csoportokhasználatával érhető el.All secrets and credentials are stored in Azure Key Vault and accessed in Azure Pipelines using variable groups.

Költségekkel kapcsolatos szempontokCost considerations

Az Azure DevOps legfeljebb öt felhasználóval ingyenesen használható nyílt forráskódú projektekhez és kis projektekhez.Azure DevOps is free for open-source projects and small projects with up to five users. Nagyobb csapatok esetén a felhasználók száma alapján vásárolhat meg egy csomagot.For larger teams, purchase a plan based on the number of users.

A számítási művelet a legnagyobb díjas illesztőprogram ebben az architektúrában, és a használati esettől függően változhat.Compute is the biggest cost driver in this architecture and varies depending on the use case. A kísérletezés és képzés Azure Machine Learning ingyenes, csak a felhasznált számítási feladatokért kell fizetnie.For experimentation and training, Azure Machine Learning is free, you pay only for the compute used. A modellek Kubernetes Service-fürtre való telepítése során Azure Machine Learning egy kis felárat biztosít a Kubernetes szolgáltatás számítási költségéhez.While deploying models to Kubernetes Service cluster, Azure Machine Learning adds a small surcharge on top of the Kubernetes Service compute cost. A várt webszolgáltatás-terheléstől és a definiált automatikus skálázási lehetőségtől függően szabályozhatja ezt a költségeket.Depending on the expected web service load and the defined autoscaling option, you can control this cost. Az Azure CLI vagy a Azure Machine Learning Python SDK használatával programozott módon állíthatja be az automatikus skálázási konfigurációt.You can use either Azure CLI or Azure Machine Learning Python SDK to programmatically set an autoscaling configuration.

Az átképzési folyamathoz szükség van egy számítási formára is.The retraining pipeline also requires a form of compute. Ez az architektúra Azure Machine Learning számítást használ, de más lehetőségek is rendelkezésre állnak.This architecture uses Azure Machine Learning Compute, but other options are available. Ahogy azt korábban említettük, a képzési modellek nem járnak a Machine learning szolgáltatásra vonatkozó pótdíjkal; csak a számítási költségeket kell megfizetnie.As mentioned earlier, training models do not incur the machine learning service surcharge; you only pay the compute cost. A számítási díj a fürt méretétől, a csomópont típusától és a csomópontok számától függ.The compute cost depends on the cluster size, node type, and number of nodes. Az Azure díjszabási számológépévelmegbecsülheti Machine learning és egyéb szolgáltatások költségeit.You can estimate the cost for Machine Learning and other services using the Azure pricing calculator.

A megoldás üzembe helyezéseDeploy the solution

A hivatkozási architektúra üzembe helyezéséhez kövesse a GitHub-tárház első lépések útmutatójában ismertetett lépéseket.To deploy this reference architecture, follow the steps described in the Getting Started guide in the GitHub repo.