Инструменты для построения MLOps-подхода в компании | Блог VK Cloud

VK Cloud

VK Cloud

Пять инструментов для реализации MLOps-подхода в компании

MLOps помогает автоматизировать сквозные процессы машинного обучения и улучшить совместную работу специалистов по данным и ML-инженеров.

MLOps все еще считается относительно новым подходом к работе с данными, однако для реализации MLOps-подхода уже есть много инструментов — как Open Source, так и проприетарных.

В этой статье мы сравнили плюсы и минусы работы со свободным ПО и продуктами вендоров, разобрали 5 популярных инструментов для MLOps и рассказали, как быстро начать их использовать.

Зачем нужен MLOps

К 2026 году глобальные расходы на искусственный интеллект превысят 300 млрд долларов, говорится в исследовании IDC. Но при этом только 13% ML/DL-проектов доходят до выпуска в продакшен. В итоге крупные расходы компаний на искусственный интеллект окупаются не так хорошо, как хотелось бы. MLOps стал подходом, который позволяет повысить эффективность процессов, связанных с машинном обучением, увеличить количество и улучшить качество моделей, которые применяются для решения бизнес-задач.
 
Сообщество дата-специалистов позаимствововало принципы из DevOps и адаптировало их под процессы машинного обучения — так появился MLOps. Эта методология помогает эффективно разрабатывать, развертывать и отслеживать модели структурированным образом. Раньше разработка моделей и различные операции проходили отдельно друг от друга, а выпуск в прод осуществлялся вручную. Но MLOps объединил все компоненты задачи в единый процесс и помог наладить совместную работу.

Выбираем инструменты для MLOps: Open Source vs проприетарное ПО

В любом проекте возникают вопросы: как управлять моделями? Какие инструменты использовать для контроля жизненного цикла ML-проектов? Как повысить эффективность процессов? Для этих задач компании могут использовать продукты вендоров, например SageMaker, или строить собственные платформы на базе Open-Source-инструментов. Мы сравнили оба подхода по пяти критериям.

Качество кода. Считается, что вендорские решения более надежные и оптимизированные. Но даже самые продвинутые продукты могут работать с ошибками. При этом в «закрытых» инструментах нет доступа к коду и нет возможности самостоятельно починить, если что-то сломалось. Придется ждать обновление от вендора.

В Open Source исходный код инструментов открыт и доступен всем. Как правило, над кодом работает целое сообщество разработчиков — они улучшают инструмент и исправляют ошибки. При этом чем популярнее сервис, тем он быстрее развивается.

Универсальность. Создавать «максимально функциональный продукт» — это достаточно частый подход при разработке платформенных решений вендоров. При этом может сложиться ситуация, когда набор инструментов в решении избыточен или частично неприменим. Поэтому на каком-то этапе может понадобиться еще одно решение и его интеграция в систему.

Open-Source-инструменты гибко настраиваются под разные задачи и предполагают простую адаптацию в ИТ-систему. Они напоминают конструктор: любую часть можно заменить, добавить или удалить, чтобы получить решение под свои задачи. Конечно же, такая доработка решения потребует навыков и сформированной команды разработчиков.

Порог входа. Компании, которые используют проприетарное ПО для MLOps, нередко сталкиваются со сложностями поиска специалистов на рынке труда с навыками работы с действующим стеком технологий. Использование Open-Source-инструментов упрощает поиск специалистов для работы с данными, поскольку большинство из них уже знакомо с популярными сервисами (например, JupyterHub, MLflow) или может быстро освоить их с помощью обучающих материалов, созданных комьюнити.

Гибкость. Монолитная структура усложняет настройку инструмента под отдельные потребности или подключение к другим платформам. Open-Source-решения дают возможность полность контролировать их работу: настраивать под свои проекты, выполнять нужные процессы в любой момент. А еще, как правило, у Open Source большой выбор фреймворков и библиотек, которые можно подключать/отключать по мере необходимости.

Поддержка. На поддержание работоспособности большого стека Open-Source-инструментов нужно немало ресурсов. В какой-то момент на большом проекте что-то может пойти не так, и тогда команда может потратить много времени на поиск и устранение ошибок. Кроме того, по мере того как проект будет масштабироваться, потребуется больше ресурсов на управление и поддержание всего стека.

Когда выбирать проприетарные инструменты:

нет опыта работы с Open Source и настройки решений «под себя»;
большой и сложный проект, в котором нужна вендорская поддержка;
есть бюджет на лицензионное ПО.

Когда выбирать Open Source:

необходимо полностью адаптировать решение под потребности компании;
нужен доступ к как можно большему числу Best Practices;
нужно исключить Vendor Lock-in-риски и иметь возможность в любой момент сменить поставщика решения;
хочется использовать самые актуальные фичи, которые зачастую быстрее появляются в Open Source.

Какие инструменты существуют

Open-Source-решения закрывают весь стек ML-задачи на пяти этапах:

сбор, подготовка, разметка данных;
обучение модели;
оценка качества модели;
вывод модели в продакшен;
мониторинг.

Всего существует более 50 MLOps-инструментов. Команда MyMLOps даже создала конструктор, с помощью которого можно собрать свой стек MLOps из Open-Source-решений. Пример можно увидеть ниже.

Дальше мы расскажем о пяти комплексных решениях.

1. Metaflow

Изначально сервис разработали в Netflix, компания открыла к нему доступ в 2019 году, чтобы помочь специалистам по данным и инженерам по машинному обучению в управлении ML-проектами. Система дружественна к Python и поддерживает язык R.

Metaflow можно использовать в различных проектах машинного обучения. Сервис автоматически отслеживает и версионирует эксперименты и данные. Помимо этого, в платформу встроены следующие функции:

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

По факту Metaflow — это прослойка между дата-сайентистом и Kubernetes и инфраструктурой. Инженер может использовать Metaflow как Python-библиотеку для описания шагов при работе с ML-моделью в виде DAG.

2. MLflow

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

В MLflow есть четыре основных компонента:

MLflow Tracking — хранение и доступ к коду, данным, конфигурациям и результатам;
MLflow Projects — упаковка в контейнеры и деплой моделей;
MLflow Models — развертывание ML-моделей и управление ими в различных средах обслуживания;
MLflow Model Registry — центральное хранилище моделей, обеспечивающее управление версиями, переходы между этапами, аннотации и управление моделями машинного обучения.

Платформу можно интегрировать с библиотеками машинного обучения, включая TensorFlow и Pytorch. А управлять экспериментами и метаданными — с помощью CLI, Python, R, Java и REST API.

3. Kubeflow

Kubeflow упрощает для разработчиков организацию и развертывание ML-процессов. С его помощью можно легко разворачивать ML-модели в Kubernetes, а также можно использовать в следующих задачах:

подготовка данных;
обучение и оптимизация ML-модели;
обслуживание прогнозов;
управление производительностью модели в рабочей среде.

В решении есть встроенная поддержка JupyterLab, RStudio и Visual Studio Code. Можно настраивать гиперпараметры и поиск нейронной архитектуры. Одно из преимуществ Kubeflow — в нем есть UI для обработки и отслеживания экспериментов, заданий и запусков. Помимо этого, встроен движок для организации многоэтапных рабочих процессов машинного обучения.

Несмотря на широкую функциональность Kubeflow, опрос 2022 года показал, что команды используют только отдельные его компоненты, а не весь сервис целиком из-за его сложности. Кроме того, при внедрении многим не хватает документации и обучающих материалов, и в инструменте приходится разбираться самостоятельно.

4. Pachyderm

Pachyderm автоматизирует преобразование данных с помощью управления версиями данных, Data Lineage и End-to-end-пайплайнов в Kubernetes. Для управлениями версиями можно использовать тот же синтаксис, что и в Git. В Pachyderm высший уровень объекта — репозиторий, поэтому можно использовать Commit, Branches, File, History и Provenance для отслеживания и версионирования набора данных.

Вот несколько ключевых возможностей Pachyderm:

Сохранение версий данных. В Pachyderm есть возможность создавать различные версии данных и хранить их в организованных репозиториях. За счет этого можно обнаруживать неверные коммиты и вносить в них изменения, а также воспроизводить пайплайны с предыдущей версией данных.
Аналитика контейнеров. Сервис поддерживает множество библиотек и фреймворков на каждом этапе пайплайна. С помощью контейнера Pachyderm можно упаковать код, ускорить выполнение Bash-сценария и развернуть свой рабочий процесс в производственной среде.
Регулярное обновление дата-пайплайна. Как только во входные данные вносятся изменения, в конвейере запускаются последующие шаги для соответствующего отражения изменений. Но всегда можно вернуться и посмотреть на комбинации из прошлого.
Индивидуально масштабируемые этапы пайплайна. Pachyderm поддерживает расчет данных / рабочих нагрузок по мере необходимости для каждого этапа конвейера.

Открытая версия предназначена для небольших команд. А те, кому нужны расширенные функции, могут выбрать Enterprise-версию.

5. Seldon Core

Seldon Core — еще одна Open-Source-платформа для развертывания ML-моделей в Kubernetes. Он поддерживает протоколы REST и gRPC, ручное и автоматическое масштабирование. Это одно из самых популярных решений для задач деплоя. Среди возможностей инструмента:

контейнерные модели машинного обучения с использованием готовых серверов логических выводов, пользовательских серверов или языковых оболочек;
графы логических выводов, составленные из предикторов, преобразователей, маршрутизаторов, объединителей и так далее;
метрики с интеграцией в Prometheus и Grafana;
ведение журнала запросов ввода — вывода с возможностью аудита благодаря интеграции с Elasticsearch;
интеграция с Jaeger для распределенной трассировки микросервисов.

Ниже описана End-to-end-схема работы с Seldon Core.

Как сократить издержки работы с Open Source

Выше мы уже писали, что построение инфраструктуры из Open-Source-инструментов требует большего количества ресурсов со стороны ИТ-команды. Это не только повышает затраты на разработку, но и увеличивает Time-to-market.

Поэтому мы разработали Cloud ML Platform — удобную преднастроенную среду, в которой можно реализовать полный цикл ML-разработки. «Из коробки» в ML Platform доступны JupyterHub и MLflow, которые уже интегрированы между собой. Эти решения знакомы многим специалистам по работе с данными и позволяют решать основные MLOps-задачи.

Также мы провели интеграцию MLflow с инфраструктурой облака для решения задач сервинга. MLflow Deploy предоставляет возможность автоматически упаковывать ML-модели в Docker-контейнеры и делать их доступными по REST API для решения задач обслуживания в реальном времени. Сервис интегрирован с компонентами ML Platform: JupyterHub и MLflow.

Для Cloud ML Platform мы выбрали Open-Source-инструменты по нескольким причинам:

низкий порог входа — мы интегрировали и настроили инструменты MLOps, так что не нужно тратить время на то, чтобы разобраться во всех нюансах внедрения;
нет рисков Vendor Lock-in, если кто-то из вендоров решит уйти с рынка;
легко адаптировать инструменты под бизнес-задачи.

Также в VK Cloud есть ключевые инструменты для Data Engineering: Hadoop, Spark, Greenplum, ClickHouse, Airflow.

Новым пользователям мы начисляем 3000 бонусных рублей, чтобы протестировать

Cloud ML Platform

от VK Cloud. Регистрируйтесь в сервисе и начинайте строить MLOps в своей компании.

Рассказываем об IT-бизнесе, технологиях и цифровой трансформации

Подпишитесь в соцсетях или по email