Управление версиями датасетов для ML-моделей, а также версионирование самих алгоритмов машинного обучения является одной из важных задач MLOps-концепции непрерывной разработки и развертывания систем Machine Learning. Читайте, как реализовать это с помощью платформы LakeFS и фреймворка MLflow.
Что такое LakeFS и при чем здесь MLOps
Системы контроля версий, такие как Git, являются важными инструментами для управления версиями и архивирования исходного кода, помогая отслеживать изменения в нем. Если в новой версии возникла ошибка, разработчики могут вернуться к прежнему рабочему состоянию, сократив ущерб для бизнеса и других членов команды. В системах Machine Learning меняется не только код, но и данные, о чем мы писали здесь. Чтобы обеспечить непрерывное управление всеми артефактами, от исходного кода ML-системы до датасетов и параметров модели машинного обучения, в инженерную практику сегодня активно внедряется концепция MLOps.
Одним из инструментов для управления данными согласно MLOps является LakeFS – мощная платформа с открытым исходным кодом, которая отлично интегрируется с Apache Spark, Kafka, Hive Metastore, dbt, Trino, Presto. Она поддерживает управление данными в объектных облачных хранилищах AWS S3, Azure Blob Storage, Google Cloud Storage, предоставляя контроль версий над озером данных за счет git-подобной семантики, включая ветки для создания изолированной версии данных, фиксации для создания воспроизводимой точки во времени и слияния для включения изменений в одно атомарное действие.
LakeFS обеспечивает отказоустойчивость, атомарность и управляемость озер данных, предоставляя инструменты для отката назад или вперед к определенным версиям Data Lake в любое время. Также платформа позволяет автоматизировать процесс непрерывной интеграции и развертывания данных с помощью механизмов совместимости схемы, принудительного применения формата и соглашения об именах. MLOps-инженер может настроить рабочий процесс для приема данных в непроизводственную ветвь, чтобы не допустить внесения критических изменений в production и свести к минимуму сбои ML-системы.
Запустив LakeFS и установив его собственный CLI-интерфейс, нужно создать репозиторий для хранения данных. Затем можно создавать среды разработки, где будут применяться инструменты преобразования данных. При том, что LakeFS можно использовать отдельно, его комбинация с другими широко используемыми MLOps-средствами, дает еще больший эффект. В частности, можно объединить LakeFS с MLflow, чтобы дополнить обучение моделей версионированием данных. Как это сделать, рассмотрим далее.
Совмещение с MLflow
Напомним, MLflow от Databricks – это тоже открытая кросс-языковая платформа, которая помогает управлять сквозными конвейерами машинного обучения. Она поддерживает REST API и CLI-интерфейсы, а также языки Python, R и Java. Полноценную автоматизацию всего MLOps-цикла обеспечивают 4 модуля MLflow: Tracking, Project, Models и Registry, о чем мы писали здесь. На практике MLflow широко используется множеством крупных корпораций (Databricks, Microsoft, Toyota, МТС, ВК и пр.), а также небольшими инженерными компаниями по всему миру.
Компонент MLflow под названием Registry, который представляет собой централизованное хранилище моделей c API и пользовательским интерфейсом, можно использовать для управления версиями модели и переносе ее из среды разработки в производственное развертывание.
Выполнив предварительную обработку данных в MLflow, можно использовать Python-клиент API платформы LakeFS, чтобы создать новую ветку и зафиксировать созданный датасет в репозитории. Для этого сначала нужно установить клиент. Например, на Python Это можно сделать с помощью менеджера пакетов pip:
$ pip install 'lakefs_client==<lakeFS version>'
В реальном проекте надо разделить наборы данных для тестирования и обучения, а также сохранить их в репозиторий. Можно импортировать имя репозитория LakeFS в ML-модель с помощью mlflow.log_param, чтобы вывести эту часть информации при обратной загрузке модели.
Совместное применение LakeFS и MLflow не ограничивается созданием версий датасетов для обучения ML-моделей. Можно не только вывести версию датасета, связанную с конкретной версией модели, но и совместить LakeFS с другими компонентами MLflow. Например, MLflow Tracking поможет связать код ML-модели с данными.
Таким образом, MLflow и LakeFS отлично реализуют идеи MLOps-концепции:
- MLflow пригодится для управления жизненным циклом машинного обучения, включая центральный реестр моделей и их развертывание;
- LakeFS позволит управлять набором данных с помощью git-подобного подхода. .
В результате MLOps-инженер может создавать эффективные и автоматизированные рабочие процессы, которые упрощают проведение экспериментов и повышают воспроизводимость моделей машинного обучения.
Как применять эти и другие современные инструменты MLOps в проектах аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники