Открыть сервис

MLflow

MLflow — это платформа с открытым исходным кодом для управления жизненным циклом проектов машинного обучения (ML), включая этапы экспериментов, воспроизводимости, развёртывания и регистрации моделей. Разработана компанией Databricks и впервые выпущена в 2018 году. MLflow предоставляет набор инструментов, не привязанных к конкретным библиотекам или фреймворкам, что позволяет интегрировать её с любыми ML-технологиями (TensorFlow, PyTorch, Scikit-learn, XGBoost и другими).

История

MLflow была анонсирована компанией Databricks в июне 2018 года как ответ на проблему фрагментации инструментов в области машинного обучения. До её появления разработчики часто использовали разрозненные решения для отслеживания экспериментов (например, TensorBoard), упаковки кода (Docker) и развёртывания (Kubernetes), что затрудняло воспроизводимость и совместную работу. MLflow объединила эти функции в единую платформу с простым API.

Первая стабильная версия (1.0) вышла в декабре 2019 года. В 2020 году проект был принят в инкубатор Apache Software Foundation, но в 2022 году вышел из него, сохранив лицензию Apache 2.0. На 2025 год MLflow остаётся одним из наиболее популярных инструментов MLOps (согласно опросам O’Reilly и JetBrains), используемым как в стартапах, так и в крупных корпорациях (например, Adobe, Microsoft, Zillow).

Компоненты MLflow

MLflow состоит из четырёх основных модулей, каждый из которых решает конкретную задачу в жизненном цикле ML.

MLflow Tracking

MLflow Tracking — это API и пользовательский интерфейс для логирования параметров, метрик, артефактов (файлов, моделей, графиков) и исходного кода во время выполнения ML-экспериментов. Данные сохраняются в хранилище (локальная файловая система, база данных SQL, облачное хранилище S3/ADLS/GCS) и могут быть визуализированы в веб-интерфейсе.

Основные возможности:

  • Логирование числовых параметров (например, learning_rate, batch_size) и метрик (accuracy, loss).
  • Сохранение артефактов: файлов моделей, изображений (например, графиков обучения), текстовых отчётов.
  • Автоматическое логирование для популярных библиотек (через mlflow.autolog()).
  • Сравнение запусков (runs) по метрикам и параметрам.

MLflow Projects

MLflow Projects — это формат упаковки ML-кода для воспроизводимости. Проект описывается файлом MLproject (YAML), в котором указываются зависимости (conda, pip, Docker), точки входа (entry points) и параметры командной строки. Это позволяет запускать один и тот же эксперимент на разных окружениях (локально, в кластере Spark, в облаке) без ручной настройки.

Пример структуры проекта: `` my_project/ ├── MLproject ├── conda.yaml ├── train.py └── data/ ``

MLflow Models

MLflow Models — это стандартный формат для упаковки ML-моделей, пригодных для развёртывания. Модель сохраняется в виде директории с файлом MLmodel (YAML), который содержит:

  • flavour (формат модели: python_function, sklearn, pytorch, tensorflow, onnx и др.);
  • путь к артефактам модели;
  • зависимости окружения;
  • сигнатуру (входные и выходные данные).

Модели могут быть загружены и использованы через mlflow.pyfunc.load_model() или развёрнуты как REST-сервис с помощью встроенного сервера (mlflow models serve).

MLflow Model Registry

MLflow Model Registry — это централизованное хранилище для управления версиями моделей, их аннотациями и стадиями жизненного цикла (Staging, Production, Archived). Реестр интегрирован с Tracking: после успешного эксперимента модель можно зарегистрировать, присвоить ей версию и перевести на нужную стадию. Это упрощает процесс CI/CD для ML-моделей.

Архитектура и развёртывание

MLflow может работать в нескольких режимах:

  • Локальный режим — все компоненты (Tracking Server, UI, хранилище артефактов) запускаются на одной машине. Подходит для индивидуальной разработки.
  • Серверный режим — Tracking Server запускается отдельно, подключается к удалённой базе данных (PostgreSQL, MySQL) и хранилищу артефактов (S3, Azure Blob). Позволяет командам совместно просматривать и сравнивать эксперименты.
  • Облачные развёртывания — MLflow может быть развёрнут на платформах Databricks, AWS SageMaker, Azure ML, Google Vertex AI, а также в Kubernetes с помощью Helm-чартов.

Применение

MLflow используется в следующих сценариях:

Исследования и разработка

  • Отслеживание гиперпараметров и метрик при обучении моделей.
  • Воспроизведение экспериментов через MLflow Projects.
  • Сравнение десятков и сотен запусков для выбора лучшей модели.

MLOps и CI/CD

  • Автоматическая регистрация моделей в реестре после успешного пайплайна (например, в Jenkins, GitLab CI).
  • Развёртывание моделей в продакшн через REST API или пакетную обработку.
  • Мониторинг дрейфа данных и метрик модели (с интеграцией с Prometheus, Grafana).

Обучение и демонстрация

  • Используется в учебных курсах и хакатонах для демонстрации полного цикла ML.
  • Позволяет быстро делиться результатами экспериментов через ссылки на UI.

Интеграции

MLflow поддерживает интеграции с большинством популярных инструментов:

  • Фреймворки ML: TensorFlow, PyTorch, Scikit-learn, XGBoost, LightGBM, CatBoost, Keras, Fastai, Hugging Face Transformers.
  • Инструменты обработки данных: Apache Spark, Pandas, NumPy.
  • Платформы MLOps: Kubeflow, Airflow, MLflow Pipelines (экспериментальная функция).
  • Облачные провайдеры: AWS, Azure, Google Cloud, Databricks.

Критика и ограничения

Несмотря на популярность, MLflow имеет ряд недостатков, отмечаемых сообществом:

  • Сложность настройки в больших командах: требуется конфигурация базы данных, хранилища артефактов и аутентификации.
  • Ограниченная поддержка мониторинга в реальном времени: MLflow не предоставляет встроенного инструментария для отслеживания дрейфа данных или метрик в продакшене (эту функцию часто берут на себя сторонние решения, такие как Evidently AI или WhyLabs).
  • Проблемы с производительностью при большом количестве запусков (более 10 000) в стандартной конфигурации с SQLite.
  • Отсутствие встроенного управления доступом (RBAC) в open-source версии — эта функция доступна только в платной версии Databricks.

Альтернативы

Существуют другие инструменты, решающие схожие задачи:

  • Kubeflow — платформа для MLOps на Kubernetes, более сложная в настройке, но с поддержкой пайплайнов и оркестрации.
  • Neptune.ai — коммерческий сервис для отслеживания экспериментов с расширенной визуализацией.
  • Weights & Biases (WandB) — популярный инструмент для логирования экспериментов с акцентом на визуализацию и коллаборацию.
  • DVC — система управления версиями данных и экспериментов, интегрируемая с Git.

Интересные факты

  • Название «MLflow» происходит от идеи «потока» (flow) данных и моделей в машинном обучении.
  • MLflow поддерживает более 20 «flavour» (форматов моделей), включая редкие, такие как Spark MLlib и H2O.
  • В 2023 году Databricks выпустила MLflow 2.0 с улучшенной поддержкой пайплайнов и автоматического логирования.
  • MLflow используется в проектах с открытым исходным кодом, таких как Hugging Face Spaces, для демонстрации моделей.

Источники

  1. MLflow Documentation — официальная документация проекта (mlflow.org).
  2. Databricks Blog — анонс MLflow (2018) и обновления версий.
  3. O’Reilly Media — «MLflow: A Tool for Managing the Machine Learning Lifecycle» (2020).
  4. JetBrains Developer Survey — статистика использования инструментов MLOps (2023, 2024).
  5. Apache Software Foundation — инкубатор MLflow (2020–2022).
  6. Статья «MLflow vs. Kubeflow vs. Neptune» на платформе Towards Data Science (2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →