MLOps для моделей Python с использованием Машинного обучения Azure

Application Insights
Хранилище BLOB-объектов
Экземпляры контейнеров
Реестр контейнеров
Azure DevOps
Служба Kubernetes
Машинное обучение
Pipelines

ОбзорOverview

В этой эталонной архитектуре демонстрируется реализация конвейера непрерывной интеграции (CI), непрерывной поставки (CD) и переобучения для приложения AI с использованием Azure DevOps и машинное обучение Azure.This reference architecture shows how to implement continuous integration (CI), continuous delivery (CD), and retraining pipeline for an AI application using Azure DevOps and Azure Machine Learning. Решение основано на наборе данных scikit-учиться диабета, но его можно легко адаптировать для любого сценария ии и других популярных систем сборки, таких как Jenkins или 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 or Travis.

Эталонная реализация для этой архитектуры доступна на сайте GitHub.A reference implementation for this architecture is available on GitHub.

Схема архитектуры Млопс

АрхитектураArchitecture

Эта архитектура состоит из следующих компонентов.This architecture consists of the following components:

Azure pipelines.Azure Pipelines. Эта система сборки и тестирования основана на Azure DevOps и используется для конвейеров сборки и выпуска.This build and test system is based on Azure DevOps and used for the build and release pipelines. Azure Pipelines прерывает эти конвейеры в логические шаги, называемые задачами.Azure Pipelines breaks these pipelines into logical steps called tasks. Например, задача Azure CLI упрощает работу с ресурсами Azure.For example, the Azure CLI task makes it easier to work with Azure resources.

Машинное обучение Azure — это облачная служба для обучения, оценки, развертывания и управления моделями машинного обучения в масштабе.Azure Machine Learning is a cloud service for training, scoring, deploying, and managing machine learning models at scale. Эта архитектура использует пакет SDK для машинное обучение Azure Python для создания рабочей области, вычислений ресурсов, конвейера машинного обучения и образа оценки.This architecture uses the Azure Machine Learning Python SDK to create a workspace, compute resources, the machine learning pipeline, and the scoring image. Рабочая область машинное обучение Azure предоставляет пространство, в котором можно экспериментировать, обучать и развертывать модели машинного обучения.An Azure Machine Learning workspace provides the space in which to experiment, train, and deploy machine learning models.

Машинное обучение Azure COMPUTE — это кластер виртуальных машин по запросу с автоматическим масштабированием, параметрами GPU и узла ЦП.Azure Machine Learning Compute is a cluster of virtual machines on-demand with automatic scaling and GPU and CPU node options. Задание обучения выполняется в этом кластере.The training job is executed on this cluster.

Машинное обучение Azure конвейеры обеспечивают многократно используемые рабочие процессы машинного обучения, которые можно повторно использовать в сценариях.Azure Machine Learning pipelines provide reusable machine learning workflows that can be reused across scenarios. Обучение, оценка модели, регистрация модели и создание образа происходят в отдельных шагах в этих конвейерах для этого варианта использования.Training, model evaluation, model registration, and image creation occur in distinct steps within these pipelines for this use case. Конвейер публикуется или обновляется в конце фазы сборки и активируется при новом получении данных.The pipeline is published or updated at the end of the build phase and gets triggered on new data arrival.

Хранилище BLOB-объектов Azure.Azure Blob Storage. Контейнеры больших двоичных объектов используются для хранения журналов из службы оценки.Blob containers are used to store the logs from the scoring service. В этом случае собираются и входные данные, и Прогноз модели.In this case, both the input data and the model prediction are collected. После некоторого преобразования эти журналы можно использовать для повторного обучения модели.After some transformation, these logs can be used for model retraining.

Реестр контейнеров Azure.Azure Container Registry. Сценарий Python для оценки упаковывается как образ DOCKER и имеет версию в реестре.The scoring Python script is packaged as a Docker image and versioned in the registry.

Службы " экземпляры контейнеров Azure".Azure Container Instances. В рамках конвейера выпуска среда контроля качества и промежуточной среды проходиться путем развертывания образа WebService в службе "экземпляры контейнеров", который обеспечивает простой и бессерверный способ запуска контейнера.As part of the 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.

Служба Kubernetes Azure.Azure Kubernetes Service. После тщательного тестирования образа WebService в среде контроля качества он развертывается в рабочей среде в управляемом кластере Kubernetes.Once the scoring webservice image is thoroughly tested in the QA environment, it is deployed to the production environment on a managed Kubernetes cluster.

Application Insights Azure.Azure Application Insights. Эта служба мониторинга используется для обнаружения аномалий производительности.This monitoring service is used to detect performance anomalies.

Конвейер МлопсMLOps Pipeline

Это решение демонстрирует комплексную автоматизацию различных стадий проекта AI с помощью средств, уже знакомых инженерам по.This solution demonstrates end-to-end automation of various stages of an AI project using tools that are already familiar to software engineers. Проблема машинного обучения проста в том, чтобы сосредоточиться на конвейере DevOps.The machine learning problem is simple to keep the focus on the DevOps pipeline. Решение использует набор данных scikit-учиться диабета и строит модель линейной регрессии для прогнозирования вероятности диабета.The solution uses the scikit-learn diabetes dataset and builds a ridge linear regression model to predict the likelihood of diabetes. Дополнительные сведения см. в статье обучение Scikit Python .See Training of Python scikit-learn models for details.

Это решение основано на следующих трех конвейерах:This solution is based on the following three pipelines:

  • Конвейер сборки.Build pipeline. Выполняет сборку кода и выполняет набор тестов.Builds the code and runs a suite of tests.
  • Конвейер повторного обучения.Retraining pipeline. Переучить модель по расписанию или когда новые данные становятся доступными.Retrains the model on a schedule or when new data becomes available.
  • Конвейер выпуска.Release pipeline. Оператионализес образ оценки и повышает его безопасность в разных средах.Operationalizes the scoring image and promotes it safely across different environments.

В следующих разделах описывается каждый из этих конвейеров.The next sections describe each of these pipelines.

Конвейер сборкиBuild pipeline

Конвейер CI активируется каждый раз при возврате кода.The CI pipeline gets triggered every time code is checked in. Он публикует обновленный конвейер Машинного обучения Azure после создания кода и выполнения набора тестов.It publishes an updated Azure Machine Learning pipeline after building the code and running a suite of tests. Конвейер сборки состоит из следующих задач.The build pipeline consists of the following tasks:

  • Качество кода.Code quality. Эти тесты гарантируют, что код соответствует стандартам группы.These tests ensure that the code conforms to the standards of the team.

  • Модульный тест.Unit test. Эти тесты позволяют убедиться, что код работает, имеет достаточный объем протестированного кода и является стабильным.These tests make sure the code works, has adequate code coverage, and is stable.

  • Проверка данных.Data test. Эти тесты проверяют, соответствуют ли образцы данных ожидаемой схеме и распределению.These tests verify that the data samples conform to the expected schema and distribution. Настройте этот тест для других вариантов использования и запустите его как отдельный конвейер работоспособности данных, который активируется по мере поступления новых данных.Customize this test for other use cases and run it as a separate data sanity pipeline that gets triggered as new data arrives. Например, переместите задачу тестирования данных в конвейер приема данных , чтобы можно было протестировать его ранее.For example, move the data test task to a data ingestion pipeline so you can test it earlier.

Примечание

Рекомендуется включить DevOpsные методики для данных, используемых для обучения моделей машинного обучения, но это не рассматривается в этой статье.You should consider enabling DevOps practices for the data used to train the machine learning models, but this is not covered in this article. Дополнительные сведения об архитектуре и рекомендациях по непрерывной интеграции и отработку отказа конвейера приема данных см. в разделе DevOps для конвейера приема данных.For more information about the architecture and best practices for CI/CD of a data ingestion pipeline, see DevOps for a data ingestion pipeline.

При настройке инфраструктуры для Машинное обучение Azure и пакета SDK для Python выполняются следующие одноразовые задачи:The following one-time tasks occur when setting up the infrastructure for Azure Machine Learning and the Python SDK:

  • Создайте рабочую область, в которой размещаются все ресурсы, связанные с Машинное обучение Azure.Create the workspace that hosts all Azure Machine Learning-related resources.
  • Создайте ресурсы для вычислений, которые запускают задание обучения.Create the compute resources that run the training job.
  • Создайте конвейер машинного обучения с обновленным сценарием обучения.Create the machine learning pipeline with the updated training script.
  • Опубликуйте конвейер машинного обучения в качестве конечной точки RESTFUL для управления рабочим процессом обучения.Publish the machine learning pipeline as a REST endpoint to orchestrate the training workflow. В следующем разделе описывается этот шаг.The next section describes this step.

Конвейер повторного обученияRetraining pipeline

Конвейер машинного обучения управляет процессом повторного обучения модели асинхронным способом.The machine learning pipeline orchestrates the process of retraining the model in an asynchronous manner. Переобучение можно активировать по расписанию или при появлении новых данных путем вызова конечной точки REST опубликованного конвейера из предыдущего шага.Retraining can be triggered on a schedule or when new data becomes available by calling the published pipeline REST endpoint from the previous step.

Этот конвейер охватывает следующие этапы.This pipeline covers the following steps:

  • Обучение модели.Train model. Сценарий Python для обучения выполняется в ресурсе Машинное обучение Azure COMPUTE, чтобы получить новый файл модели , хранящийся в журнале выполнения.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. Так как обучение — это наиболее трудоемкая задача в проекте AI, решение использует машинное обучение Azure вычисления.Since training is the most compute-intensive task in an AI project, the solution uses Azure Machine Learning Compute.

  • Оцените модель.Evaluate model. Простой тест оценки сравнивает новую модель с существующей моделью.A simple evaluation test compares the new model with the existing model. Только в том случае, если новая модель более эффективна, ее уровень повышается.Only when the new model is better does it get promoted. В противном случае модель не будет зарегистрирована и конвейер отменяется.Otherwise, the model is not registered and the pipeline is canceled.

  • Регистрация модели.Register model. Переобучение модели регистрируется в реестре модели машинного обучения Azure.The retrained model is registered with the Azure ML Model registry. Эта служба обеспечивает управление версиями для моделей вместе с тегами метаданных, чтобы их можно было легко воссоздать.This service provides version control for the models along with metadata tags so they can be easily reproduced.

Конвейер выпускаRelease pipeline

Этот конвейер показывает, как эксплуатацию изображение оценки и безопасно повышать его в разных средах.This pipeline shows how to operationalize the scoring image and promote it safely across different environments. Этот конвейер делится на две среды, вопросы и ответы:This pipeline is subdivided into two environments, QA and production:

Среда контроля качестваQA environment

  • Триггер артефакта модели.Model Artifact trigger. Конвейеры выпуска вызываются каждый раз, когда доступен новый артефакт.Release pipelines get triggered every time a new artifact is available. Новая модель, зарегистрированная для Машинное обучение Azure Управление моделями, рассматривается как артефакт выпуска.A new model registered to Azure Machine Learning Model Management is treated as a release artifact. В этом случае для каждой новой модели регистрируется конвейер.In this case, a pipeline is triggered for each new model is registered.

  • Создание образа оценки.Create a scoring image. Зарегистрированная модель упаковывается вместе с скриптом оценки и зависимостями Python (CONDA YAML File) в образ DOCKER в области рабочего процесса.The registered model is packaged together with a scoring script and Python dependencies (Conda YAML file) into an operationalization Docker image. Образу автоматически назначается версия с помощью реестра контейнеров Azure.The image automatically gets versioned through Azure Container Registry.

  • Развертывание в экземплярах контейнеров.Deploy on Container Instances. Эта служба используется для создания нерабочей среды.This service is used to create a non-production environment. Образ оценки также разворачивается здесь, и в основном используется для тестирования.The scoring image is also deployed here, and this is mostly used for testing. Экземпляры контейнеров обеспечивают простой и быстрый способ тестирования образа DOCKER.Container Instances provides an easy and quick way to test the Docker image.

  • Тестирование веб-службы.Test web service. Простая проверка API гарантирует, что образ будет успешно развернут.A simple API test makes sure the image is successfully deployed.

Рабочая средаProduction environment

  • Развертывание в службе Kubernetes Azure.Deploy on Azure Kubernetes Service. Эта служба используется для развертывания образа оценки в качестве веб-службы при масштабировании в рабочей среде.This service is used for deploying a scoring image as a web service at scale in a production environment.

  • Тестирование веб-службы.Test web service. Простая проверка API гарантирует, что образ будет успешно развернут.A simple API test makes sure the image is successfully deployed.

Вопросы масштабируемостиScalability considerations

Конвейер сборки в Azure DevOps можно масштабировать для приложений любого размера.A build pipeline on Azure DevOps can be scaled for applications of any size. Максимальное время ожидания для конвейеров сборки зависит от агента, на котором они выполняются.Build pipelines have a maximum timeout that varies depending on the agent they are run on. Сборки могут выполняться постоянно на собственных агентах (частных агентах).Builds can run forever on self-hosted agents (private agents). Для общедоступных проектов, размещенных в Майкрософт, сборки могут выполняться в течение шести часов.For Microsoft-hosted agents for a public project, builds can run for six hours. Для частных проектов ограничение составляет 30 минут.For private projects, the limit is 30 minutes.

Чтобы использовать максимальное время ожидания, задайте следующее свойство в файле Azure PIPELINES YAML :To use the maximum timeout, set the following property in your Azure Pipelines YAML file:

jobs:
- job: <job_name>
  timeoutInMinutes: 0

В идеале необходимо быстро завершить конвейер сборки и выполнить только модульные тесты и подмножество других тестов.Ideally, have your build pipeline finish quickly and execute only unit tests and a subset of other tests. Это позволяет быстро проверять изменения и устранять их при возникновении проблем.This allows you to validate the changes quickly and fix them if issues arise. Выполнение долго выполняющихся тестов в нерабочее время.Run long-running tests during off-hours.

Конвейер выпуска публикует веб-службу оценки в реальном времени.The release pipeline publishes a real-time scoring web service. Выпуск в среде контроля качества выполняется с помощью экземпляров контейнера для удобства, но можно использовать другой кластер Kubernetes, работающий в среде контроля качества и промежуточного хранения.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.

Масштабировать рабочую среду в соответствии с размером кластера службы Azure Kubernetes.Scale the production environment according to the size of your Azure Kubernetes Service cluster. Размер кластера зависит от нагрузки, которую вы ожидаете для развернутой веб-службы оценки.The size of the cluster depends on the load you expect for the deployed scoring web service. Для архитектуры оценки в реальном времени пропускная способность является ключевой метрикой оптимизации.For real-time scoring architectures, throughput is a key optimization metric. Для сценариев неглубокого обучения необходимо, чтобы ЦП был достаточным для выполнения нагрузки. Однако для рабочих нагрузок глубокого обучения, когда скорость является узким местом, GPU обычно обеспечивают лучшую производительность по сравнению с процессорами.For non-deep learning scenarios, the 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. Служба Azure Kubernetes поддерживает типы узлов ЦП и GPU, поэтому это решение использует его для развертывания образа.Azure Kubernetes Service supports both CPU and GPU node types, which is the reason this solution uses it for image deployment. Дополнительные сведения см. в разделе GPU и ЦП для развертывания моделей глубокого обучения.For more information, see GPUs vs CPUs for deployment of deep learning models.

Масштабируйте конвейер повторного обучения вверх и вниз в зависимости от числа узлов в ресурсе Машинное обучение Azure вычислений и используйте параметр автомасштабирования для управления кластером.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. Эта архитектура использует ЦП.This architecture uses CPUs. Для рабочих нагрузок глубокого обучения графические процессоры лучше подходят и поддерживаются Машинное обучение Azureным вычислением.For deep learning workloads, GPUs are a better choice and are supported by Azure Machine Learning Compute.

Рекомендации по управлениюManagement considerations

  • Задание переобучения монитора.Monitor retraining job. Конвейеры машинного обучения координирующи переобучение в кластере компьютеров и предоставляют простой способ наблюдения за ними.Machine learning pipelines orchestrate retraining across a cluster of machines and provide an easy way to monitor them. Используйте Пользовательский интерфейс машинное обучение Azure и просмотрите раздел конвейеры для журналов.Use the Azure Machine Learning UI and look under the pipelines section for the logs. Кроме того, эти журналы также записываются в большой двоичный объект, и их можно считывать с помощью таких средств, как Обозреватель службы хранилища Azure.Alternatively, these logs are also written to blob and can be read from there as well using tools such as Azure Storage Explorer.

  • Подробности.Logging. Машинное обучение Azure предоставляет простой способ входа в систему на каждом этапе жизненного цикла машинного обучения.Azure Machine Learning provides an easy way to log at each step of the machine learning life cycle. Журналы хранятся в контейнере больших двоичных объектов.The logs are stored in a blob container. Дополнительные сведения см. в разделе Включение ведения журнала в машинное обучение Azure.For more information, see Enable logging in Azure Machine Learning. Для расширенного мониторинга настройте Application Insights для использования журналов.For richer monitoring, configure Application Insights to use the logs.

  • Безопасность.Security. Все секреты и учетные данные хранятся в Azure Key Vault и доступны в Azure pipelines с помощью групп переменных.All secrets and credentials are stored in Azure Key Vault and accessed in Azure Pipelines using variable groups.

Рекомендации по затратамCost considerations

Azure DevOps предоставляется бесплатно для проектов с открытым кодом и небольших проектов, в которых доступно до пяти пользователей.Azure DevOps is free for open-source projects and small projects with up to five users. Для крупных команд приобретите план на основе числа пользователей.For larger teams, purchase a plan based on the number of users.

Compute — это крупнейший фактор затрат в этой архитектуре, и его стоимость зависит от варианта использования.Compute is the biggest cost driver in this architecture and its cost varies depending on the use case. В этой архитектуре используется Машинное обучение Azure COMPUTE, но доступны и другие Параметры .This architecture uses Azure Machine Learning Compute, but other options are available. Машинное обучение Azure не добавляет плату поверх затрат на виртуальные машины, резервные копии которых находятся в кластере.Azure Machine Learning does not add any surcharge on top of the cost of the virtual machines backing your compute cluster. Настройте в расчетном кластере не менее 0 узлов, чтобы при его использовании можно было уменьшить масштаб до 0 узлов без каких-либо затрат.Configure your compute cluster to have a minimum of 0 nodes, so that when not in use, it can scale down to 0 nodes and not incur any costs. Стоимость вычислений зависит от типа узла, количества узлов и режима подготовки (с низким приоритетом или выделенного).The compute cost depends on the node type, a number of nodes, and provisioning mode (low-priority or dedicated). Вы можете оценить стоимость Машинное обучение и других служб с помощью калькулятора ценAzure.You can estimate the cost for Machine Learning and other services using the Azure pricing calculator.

Развертывание решенияDeploy the solution

Чтобы развернуть эту эталонную архитектуру, выполните действия, описанные в руководстве по Начало работы в репозитории GitHub.To deploy this reference architecture, follow the steps described in the Getting Started guide in the GitHub repo.

Дальнейшие действияNext steps