Лучшие DevOps практики и кейсы

Обзор MLOps для Reproducible ML

Команды и компании применяющие Machine Learning (ML) концентрируются на процессе обучения моделей, однако это всего лишь малая часть процесса разработки.
Процесс разработки ML решений состоит из множества гипотез о данных и перебора разных алгоритмов с помощью которых мы пытаемся улучшить метрики наших моделей. После окончания разработки модели мы готовим ее к релизу, оборачиваем в код, который будет работать в production, и запускаем ее бизнес-процессы основных систем, где она будет работать.

В течении всего процесса у нас появляются такие компоненты:
  • наборы данных
  • код
  • артефакты (файлы настроек моделей, веса моделей и их метрики)

Стандартом индустрии для хранения кода стал Git. Однако, остальные компоненты хранятся компаниями, как попало, хотя для них уже есть удобный инструментарий, подробнее об этом и поговорим.


Экосистемы вокруг ML процессов


1. DVC

DvC – это Git (система контроля версий) для данных, который поможет справиться с их распределением по версиям и удобной организацией больших объемов. Сервис позволяет сохранить свои наборы данных и артефакты после тренировки в любом удобном для вас месте (Cloud bucket, Google Drive, HDFS и т.п). Также этот инструмент оброс кучей дополнительных функций, которые позволяют:
  • отслеживать показатели
  • запускать пайплайны
  • cтроить процесс развертывания модели c помощью cml.dev

CML (Continuous Machine Learning) – инструмент от команды DvC для построения полного цикла ML процессов. Уже возможно применить его в Github/Gitlab репозиториях для автоматического запуска метрик или даже полного развертывания. Создатели предлагают такой подход:
  • Continuous Integration для ML – CML
  • управление окружением – Docker/Packer
  • Infrastructure as a Code – Terraform/Docker Machine
  • Data as a Code – DvC

Также мы сможем интегрировать CML с Airflow для автоматизации папйлайнов, KubeFlow и Seldon для обучения и развертывания моделей, о них всех поговорим чуть позже.

2. MLFlow

MLFlow от DataBricks начинался как библиотека для логирования экспериментов. Этот сервис подойдет как для небольших проектов, так и для серьезных организаций. MLFlow предоставляет инструменты для полного цикла Machine Learning:
  • Tracking (хранение метрик, файлов настроек модели, и перезапуск экспериментов)
  • Projects (перезапуск экспериментов в conda/docker среде)
  • Models (запускает с вашей моделью REST сервер или Docker-образ)
  • Model Registry (хранение моделей на разных стадиях: Staging, Production, Archived)

Кстати, Вы можете использовать DvC вместе с MLFlow. MLFlow прост в использовании, в отличие от Kubeflow, который дает большую полноту системы и возможность интеграции с другими сервисами.

3.Kubeflow

Kubeflow – фреймворк от Google c Kubernetes в основе и с поддержкой Jupiter Notebook. Имеет такие модули для полного жизненного цикла моделей:
  • Pipelines (оркестрация ML моделей, эксперименты, сохранение артефактов – метрики)
  • Training (поддерживается TensorFlow, PyTorch, MxNet, Chainer)
  • HyperParameters Search (NAS и поиск оптимальных гиперпараметров)
  • Serving (поддерживает множество решений: KFServing, Seldon, NVidia Trinton, BentoML)
  • Fairing (для быстрой тренировки и развертывания)
  • Metadata (для хранения метрик и файлов моделей)
  • Multitenancy (для разграничения доступов)

Kubeflow обладает наиболее внушительным количеством сервисов из всех перечисленных систем и наибольшим количеством интеграций, что позволит строить необходимые части вашей системы из независимых блоков. Однако установка Kubeflow будет сложнее для Data Scientist-а / ML Engineer, несмотря на то что мы настраиваем его на Python, поэтому лучше обратится к DevOps. Этот фреймворк станет идеальным решением для Enterprise приложений с высокой нагрузкой и если вы уже активно используете Kubernetes.

Другие решения


1. Пайплайны для повторяющихся задач

Большинство знакомо с повторяющими задачами и их автоматизацией через cron-job, однако очень часто при работе с данными и другими задачами нам нужно выполнять их последовательно или параллельно после окончания предыдущих событий. Самыми популярными решениями таких задач являются Airflow, Luigi и Argo.

Рассмотрим Airflow:
  • пишем pipeline на Python
  • в качестве БД (MySQL/Postgres)
  • задачи добавляются в граф (DAG)
  • имеет большое количество интеграций и операторов: выполнение bash команд, Python кода, отправки email-a, HTTP, SQL, sensor (ждет выполнения события) и т.д

Airflow – cамый полнофункциональный, зрелый инструмент, однако вам нужно будет выделить время, чтобы лучше разобраться в нем. Если вы хотите что-то полегче, то рекомендуем вам Luigi, если вы хотите писать пайплайны на yml и активно работаете с Kubernetes, то можете попробовать Argo.


2. Деплой без Kubeflow: Seldon

Seldon – платформа с открытым исходным кодом для деплоя ML моделей в облако или локально (on-premise) с поддержкой Kubernetes. Состоит из 3-х частей: Seldon Core, alibi для мониторинга и explainability ML моделей, alibi-detect для обнаружения outlier-ов и метрик. 
Seldon Core поддерживает популярные ML фреймворки (TensorFlow, PyTorch, sklearn, xgboost, Spark и т.п). Сервис оборачивает модель в REST/GRPC и позволяет котейнеризировать и мониторить микросервис с ней.
Seldon подкупает свой простотой по сравнению с Kubernetes и model и cloud-agnostic подходом.

Если Вас интересуют другие решения, то можете обратить внимание на Cortex с Go в основе и возможностью развертывания моделей на AWS с масштабированием (scaling) и мониторингом.

3. Достойны упоминания

h2o AutoML, AWS SageMaker – пусть машины учатся без ML Engineer-ов
Pachyderm – data lake и git для пайплайнов с данными
Optuna – автоматический подбор гиперпараметров
Neptune.ai – инструмент для контроля экспериментов и коллаборации

    Machine Learning, по сравнению с Software Engineering – молодая сфера, постепенно принимающая хорошие практики и рабочие подходы. Очень важно сделать работу c ML (эксперименты, хранение данных, метрик и моделей) не только впечатляющими на презентациях, но и повторяемым в рабочей среде. Надеемся, что применение какого-либо из инструментов описанных выше позволит вам наладить работу ML части и приносить еще больше пользы людям и организациям и генерировать прибыль.

    Если у Вас все еще возникают вопросы насчет сервисов для построения Reproducible Machine Learning напишите нам или назначьте звонок, чтобы более детально рассмотреть Ваш случай.
Статьи