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

хранилище BLOB-объектов Azure
Реестр контейнеров Azure
Azure DevOps
Машинное обучение Azure
Azure Pipelines

В этой эталонной архитектуре показано, как реализовать непрерывную интеграцию (CI), непрерывную доставку (CD) и переобучение конвейера для приложения ИИ с помощью Azure DevOps и Машинное обучение Azure. Решение построено на наборе данных диабета scikit-learn, но может быть легко адаптировано для любого сценария ИИ и других популярных систем сборки, таких как Jenkins или Travis.

Эталонную реализацию для этой архитектуры можно найти на сайте GitHub.

Архитектура

Схема архитектуры Машинное обучение DevOps.

Скачайте файл Visio для этой архитектуры.

Рабочий процесс

Эта архитектура состоит из следующих служб:

Azure Pipelines. Эта система сборки и тестирования основана на Azure DevOps и используется для конвейеров сборки и выпуска. Azure Pipelines разбивает эти конвейеры на логические шаги, называемые задачами. Например, задача Azure CLI упрощает работу с ресурсами Azure.

Машинное обучение Azure — это облачная служба для обучения, оценки, развертывания и управления моделями машинного обучения в масштабе. Эта архитектура использует пакет SDK для Python Машинное обучение Azure для создания рабочей области, вычислительных ресурсов, конвейера машинного обучения и образа оценки. Рабочая область Машинное обучение Azure предоставляет пространство для экспериментов, обучения и развертывания моделей машинного обучения.

вычисления Машинное обучение Azure — это кластер виртуальных машин по запросу с параметрами автоматического масштабирования и GPU и ЦП. Задание обучения выполняется в этом кластере.

конвейеры Машинное обучение Azure предоставьте повторно используемые рабочие процессы машинного обучения, которые можно повторно использовать в разных сценариях. Обучение, оценка модели, регистрация моделей и создание изображений выполняются в различных шагах в этих конвейерах для этого варианта использования. Конвейер публикуется или обновляется в конце этапа сборки и активируется при поступлении новых данных.

Хранилище BLOB-объектов Azure. Контейнеры BLOB-объектов используются для хранения журналов из службы оценки. В этом случае собираются входные данные и прогноз модели. После некоторого преобразования эти журналы можно использовать для переобучения модели.

Реестр контейнеров Azure. Скрипт Python оценки упаковается в виде образа Docker и версий в реестре.

Экземпляры контейнеров Azure. В рамках конвейера выпуска QA и промежуточной среды имитируются путем развертывания образа веб-службы оценки в Экземпляры контейнеров, что обеспечивает простой бессерверный способ запуска контейнера.

Служба Azure Kubernetes. После тщательного тестирования образа веб-службы оценки в среде QA он развертывается в рабочей среде в управляемом кластере Kubernetes.

Azure Application Insights. Эта служба мониторинга используется для обнаружения аномалий производительности.

Конвейер MLOps

Это решение демонстрирует сквозную автоматизацию различных этапов проекта искусственного интеллекта с помощью инструментов, уже знакомых инженерам программного обеспечения. Проблема машинного обучения проста, чтобы сосредоточиться на конвейере DevOps. Решение использует набор данных диабета scikit-learn и создает модель линейной регрессии для прогнозирования вероятности диабета.

Это решение основано на следующих трех конвейерах:

  • Конвейер сборки. Создает код и выполняет набор тестов.
  • Переобучение конвейера. Переобучение модели по расписанию или при получении новых данных.
  • Конвейер выпуска. Выполняет эксплуатацию образа оценки и обеспечивает безопасность в разных средах.

В следующих разделах описывается каждый из этих конвейеров.

Создание конвейера

Конвейер CI активируется каждый раз при возврате кода. Он публикует обновленный конвейер Машинного обучения Azure после создания кода и выполнения набора тестов. Конвейер сборки состоит из следующих задач:

  • Качество кода. Эти тесты гарантируют соответствие кода стандартам команды.

  • Модульный тест. Эти тесты позволяют убедиться, что код работает, имеет достаточное покрытие кода и является стабильным.

  • Тест данных. Эти тесты проверяют, соответствуют ли образцы данных ожидаемой схеме и распределению. Настройте этот тест для других вариантов использования и запустите его как отдельный конвейер сменяемости данных, который активируется при поступлении новых данных. Например, переместите задачу тестирования данных в конвейер приема данных, чтобы протестировать его ранее.

Примечание.

Рекомендуется включить методики DevOps для данных, используемых для обучения моделей машинного обучения, но это не описано в этой статье. Дополнительные сведения об архитектуре и рекомендациях по ci/CD конвейера приема данных см. в разделе DevOps для конвейера приема данных.

При настройке инфраструктуры для Машинное обучение Azure и пакета SDK для Python выполняются следующие одноразовые задачи:

  • Создайте рабочую область, в которую размещаются все Машинное обучение Azure ресурсы.
  • Создайте вычислительные ресурсы, выполняющие задание обучения.
  • Создайте конвейер машинного обучения с обновленным скриптом обучения.
  • Опубликуйте конвейер машинного обучения в качестве конечной точки REST для оркестрации рабочего процесса обучения. В следующем разделе описывается этот шаг.

Переобучение конвейера

Конвейер машинного обучения управляет процессом переобучения модели асинхронным образом. Переобучение можно активировать по расписанию или при появлении новых данных путем вызова конечной точки REST опубликованного конвейера из предыдущего шага.

Этот конвейер охватывает следующие действия.

  • Обучение модели. Обучающий скрипт Python выполняется на Машинное обучение Azure вычислительном ресурсе, чтобы получить новый файл модели, который хранится в журнале выполнения. Так как обучение является наиболее интенсивной задачей вычислений в проекте ИИ, решение использует Машинное обучение Azure вычислений.

  • Оценка модели. Простой тест оценки сравнивает новую модель с существующей моделью. Только если новая модель лучше, она становится более продвинутой. В противном случае модель не зарегистрирована и конвейер отменен.

  • Регистрация модели. Переобученная модель зарегистрирована в реестре моделей Машинное обучение Azure. Эта служба предоставляет управление версиями для моделей вместе с тегами метаданных, чтобы их можно было легко воспроизвести.

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

В этом конвейере показано, как работать с изображением оценки и безопасно продвигать его в разных средах. Этот конвейер разделен на две среды, QA и рабочую среду:

Среда QA

  • Триггер артефакта модели. Конвейеры выпуска активируются каждый раз, когда доступен новый артефакт. Новая модель, зарегистрированная в Машинное обучение Azure управления моделями, рассматривается как артефакт выпуска. В этом случае конвейер активируется для каждой новой модели.

  • Создайте изображение оценки. Зарегистрированная модель упаковается вместе со скриптом оценки и зависимостями Python (conda YAML-файл) в образ Docker для операционизации. Образу автоматически назначается версия с помощью реестра контейнеров Azure.

  • Развертывание на Экземпляры контейнеров. Эта служба используется для создания непроизводственных сред. Изображение оценки также развернуто здесь, и это в основном используется для тестирования. Экземпляры контейнеров предоставляет простой и быстрый способ тестирования образа Docker.

  • Тестирование веб-службы. Простой тест API гарантирует успешное развертывание образа.

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

  • Развертывание на Служба Azure Kubernetes. Эта служба используется для развертывания образа оценки в качестве веб-службы в масштабе рабочей среды.

  • Тестирование веб-службы. Простой тест API гарантирует успешное развертывание образа.

Рекомендации

Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

Масштабируемость

конвейер сборки в Azure DevOps можно масштабировать для приложений любого размера. Конвейеры сборки имеют максимальное время ожидания, которое зависит от агента, на который они выполняются. Сборки могут выполняться навсегда на локальных агентах (частных агентах). Для размещенных корпорацией Майкрософт агентов для общедоступного проекта сборки могут выполняться в течение шести часов. Для частных проектов ограничение составляет 30 минут.

Чтобы использовать максимальное время ожидания, задайте следующее свойство в файле YAML Azure Pipelines:

jobs:
- job: <job_name>
  timeoutInMinutes: 0

В идеале можно быстро завершить конвейер сборки и выполнить только модульные тесты и подмножество других тестов. Это позволяет быстро проверять изменения и устранять их при возникновении проблем. Выполнение длительных тестов в нерабочее время.

Конвейер выпуска публикует веб-службу оценки в режиме реального времени. Выпуск среды качества обслуживания выполняется с помощью Экземпляры контейнеров для удобства, но вы можете использовать другой кластер Kubernetes, работающий в среде QA/промежуточной среды.

Масштабируйте рабочую среду в соответствии с размером кластера Служба Azure Kubernetes. Размер кластера зависит от нагрузки, ожидаемой для развернутой веб-службы оценки. Для архитектур оценки в режиме реального времени пропускная способность — это ключевая метрика оптимизации. Для сценариев, не относящихся к глубокому обучению, ЦП должен быть достаточно для обработки нагрузки; Однако для рабочих нагрузок глубокого обучения, когда скорость является узким местом, графические процессоры обычно обеспечивают более высокую производительность по сравнению с ЦП. Служба Azure Kubernetes поддерживает типы узлов ЦП и GPU, поэтому это решение использует его для развертывания образов. Дополнительные сведения см. в разделе GPUs и ЦП для развертывания моделей глубокого обучения.

Масштабируйте конвейер переобучения вверх и вниз в зависимости от количества узлов в Машинное обучение Azure вычислительном ресурсе и используйте параметр автомасштабирования для управления кластером. Эта архитектура использует ЦП. Для рабочих нагрузок глубокого обучения графические процессоры являются лучшим выбором и поддерживаются Машинное обучение Azure вычислений.

Управление

  • Отслеживайте переобучение задания. Конвейеры машинного обучения оркеструют переобучение по кластеру компьютеров и обеспечивают простой способ их мониторинга. Используйте пользовательский интерфейс Машинное обучение Azure и просмотрите раздел конвейеров для журналов. Кроме того, эти журналы также записываются в большой двоичный объект и могут быть прочитаны там, а также с помощью таких средств, как служба хранилища Azure Обозреватель.

  • ведение журналов. Машинное обучение Azure предоставляет простой способ ведения журнала на каждом шаге жизненного цикла машинного обучения. Журналы хранятся в контейнере BLOB-объектов. Дополнительные сведения см. в разделе "Включение ведения журнала в Машинное обучение Azure". Для более расширенного мониторинга настройте приложение Аналитика для использования журналов.

  • Безопасность. Все секреты и учетные данные хранятся в Azure Key Vault и доступны в Azure Pipelines с помощью групп переменных.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

Azure DevOps предоставляется бесплатно для проектов с открытым кодом и небольших проектов с до пяти пользователей. Для более крупных команд приобретите план на основе количества пользователей.

Вычисление является самым большим драйвером затрат в этой архитектуре, а его стоимость зависит от варианта использования. Эта архитектура использует Машинное обучение Azure вычислений, но доступны другие варианты. Машинное обучение Azure не добавляет дополнительную плату поверх стоимости виртуальных машин, поддерживаемых вычислительным кластером. Настройте вычислительный кластер, чтобы иметь не менее 0 узлов, чтобы, если он не используется, он может сократить до 0 узлов и не нести никаких затрат. Затраты на вычисления зависят от типа узла, количества узлов и режима подготовки (низкоприоритетный или выделенный). Вы можете оценить стоимость Машинное обучение и других служб с помощью калькулятора цен Azure.

Развертывание этого сценария

Чтобы развернуть эту эталонную архитектуру, выполните действия, описанные в руководстве по началу работы в репозитории GitHub.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участник.

Автор субъекта:

  • Praneet Singh Solanki | Старший инженер по программному обеспечению

Следующие шаги