Продолжая разбираться с популярными MLOps-инструментами, сегодня рассмотрим, как MLflow реализует управление версиями модели и данных, а также чем это отличается от DVC. Преимущества и недостатки популярных MLOps-инструментов с возможностями их совместного использования.
Плюсы и минусы MLflow для MLOps-инженера
Концепция MLOps, направленная на сокращение разрыва между различными специалистами, участвующими в процессах разработки, развертывания и эксплуатации систем машинного обучения, инструментально поддерживается многими технологиями. Одной из наиболее востребованных среди них считается MLflow – комплексная платформа от Databricks с открытым исходным кодом для управления сквозными конвейерами машинного обучения. Она не зависит от библиотеки и языка, а потому может применяться с любыми ML-библиотеками и языками программирования. Дополнительным преимуществом MLflow является наличие REST API и CLI-интерфейса, а также поддержка Python, R и Java. Полноценную автоматизацию всего MLOps-цикла обеспечивают 4 модуля MLflow: Tracking, Project, Models и Registry, о которых мы писали здесь. На практике MLflow широко используется многими крупными корпорациями типа Databricks, Microsoft, Toyota, МТС, ВК, а также небольшими инженерными компаниями по всему миру.
Главными преимуществами MLflow считаются следующие:
- простая настройка механизма отслеживания моделей;
- удобные API;
- автоматизация сбора и подготовки данных, обучения и запуска модели в производство;
- стандартизированные компоненты для каждого этапа жизненного цикла машинного обучения, что упрощает разработку ML-приложений;
- интеграция со множеством Data Science инструментов, в т.ч. возможность развертывания моделей в Amazon SageMaker, Microsoft Azure ML и Kubernetes;
- стандартный формат для упаковки моделей Machine Learning.
Впрочем, как мы уже отмечали в прошлой статье, в отличие от Kubeflow, MLflow больше подходит для отдельных Data Scientist’ов, которые работают над отслеживанием экспериментов и созданием моделей Machine Learning. Это обусловлено отсутствием многопользовательской среды с ролевой моделью доступа и другими настройками безопасности. Кроме того, в Mlflow есть сложности с добавлением дополнительных заданий к моделям и их развертыванием на разных платформах.
Впрочем, несмотря на богатый набор функциональных возможностей, MLflow – далеко не единственный инструмент современного MLOps-инженера. Еще одним востребованным средством считается DVC (Data Version Control), о которой мы поговорим далее.
Что такое DVC
Как следует из названия, DVC – это система контроля версий с открытым исходным кодом, используемая в проектах машинного обучения. Это своего рода Git для машинного обучения, который работает с версиями данных, а не версиями кода. DVC помогает работать с большими моделями и файлами данных, которые невозможно обработать с помощью Git, позволяя хранить информацию о различных версиях данных, чтобы правильно отслеживать работу ML-модели. Для совместной работы в команде можно определить удаленный репозиторий отправки данных и моделей.
Важно, что DVC разгружает MLOps-инженера, избавляя от необходимости следить, какая модель использует какой набор данных и каким образом. DVC состоит из набора инструментов и процессов, которые отслеживают изменяющиеся версии текущих данных и коллекции предыдущих. Репозитории DVC содержат файлы, на которые распространяется действие системы контроля версий. Классифицированное состояние поддерживается для каждого изменения, зафиксированного в любом файле данных. Дополнительным плюсом использования DVC для MLOps-инженера является автоматическая маркировка датасета. Кроме того, этот инструмент позволяет пользователям работать там, где они привыкли: на настольных компьютерах, ноутбуках с GPU и облачных ресурсах. DVC исключает необходимость в электронных таблицах, инструментах и специальных сценариях обмена документами: достаточно команд push/pull для перемещения согласованных пакетов ML-моделей, данных и кода в рабочую среду, на удаленные машины или на компьютер коллеги.
Главными преимуществами DVC считаются:
- возможность отслеживать модели и конвейеры данных наряду с управлением версиями данных;
- совместная работа – можно делиться моделями через облачное хранилище, что упрощает командное взаимодействие в проведении экспериментов и оптимизирует использование общих ресурсов;
- простота работы со множеством моделей и метрик данных, т.к. DVC следит за тем, какая модель была обучена с какой версией данных;
- возможность работать с локальными файлами, что решает проблему именования файлов для нескольких версий.
Однако, DVC тесно связан с управлением конвейером. Поэтому, если команда уже использует другой инструмент конвейера данных, будет избыточность и дублирование функций. DVC является легковесным решением с ограниченным набором функций. Поэтому высока вероятность, что придется вручную создавать дополнительные фичи, нужные вашей команде. Кроме того, есть риск неправильной настройки конвейера в DVC, если команда забудет добавить выходной файл. Наконец, проверка отсутствующих зависимостей в DVC довольно сложна.
MLflow и DVC: versus или вместе?
Разобравшись с назначением, возможностями, достоинствами и недостатками обоих MLOps-инструментов с открытым исходным кодом, можно сделать вывод об их применении. Будучи направленными на разные аспекты поддержки MLOps-задач, DVC и MLflow не исключают, а дополняют друг друга. DVC используется для наборов данных, а MLflow — для отслеживания жизненного цикла машинного обучения.
Data Scientist может использовать их совместно следующим образом: загружать данные из MLflow-репозитория Git вместе с кодом, а затем инициализировать локальный репозиторий с помощью Git и DVC, чтобы отслеживать датасет. С другой стороны, Git будет следовать набору данных, созданному DVC, а затем передавать его в удаленное хранилище. Если нужно получить доступ к исполнительной версии данных с помощью кода, можно использовать API DVC. Это позволит отслеживать детали набора данных вместе с показателями ML-модели с помощью MLflow. Таким образом, совместное применение популярных MLOps-инструментов позволит повысить воспроизводимость проекта Machine Learning в целом.
В заключение отметим еще пару полезных советов по работе с MLflow. Можно сделать логирование необязательным, встроив в свой код простой переключатель ведения журнала. Это позволит избежать загрузки незавершенных или пустых запусков в проект MLflow при отладке, т.к. каждый запуск фиксирует хэш Git, чтобы отслеживать версию кода. Но, чтобы лучше обеспечить согласованность, рекомендуется зафиксировать все обновления кода перед отслеживанием эксперимента.
Узнайте, как выбрать и внедрить наиболее подходящие инструменты MLOps в реальные проекты аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники