MLflow

Материал из llmdocs — справочник разработчика
Портал: ML и MLOps
MLflow
РазработчикDatabricks, сообщество (Linux Foundation)
Первый выпускиюнь 2018
ЯзыкPython (также API для R, Java, TypeScript)
КомпонентыTracking, Models, Model Registry, Projects, Tracing, Evaluation
Хранилище метаданныхфайлы, SQLite, PostgreSQL, MySQL
Хранилище артефактовлокальный диск, S3, GCS, Azure Blob
ЛицензияApache 2.0
Сайтmlflow.org

MLflow — открытая платформа для управления жизненным циклом моделей машинного обучения: журналирования экспериментов, хранения и версионирования моделей, их упаковки и развёртывания. Это один из самых распространённых инструментов MLOps: он не привязан к конкретной библиотеке и работает с scikit-learn, PyTorch, XGBoost, Hugging Face и другими. Последние версии добавили трассировку и оценку приложений на больших языковых моделях.[1]

История

MLflow представила компания Databricks в 2018 году; среди авторов — Матей Захария, создатель Apache Spark.[5] Мотивом была типичная боль ML-команд: результаты экспериментов разбросаны по ноутбукам и таблицам, неясно, какой код и какие данные дали модель в продакшене, а каждая библиотека сохраняет модели по-своему. Проект с самого начала открыт и в 2020 году передан в Linux Foundation. Версия 2.0 вышла в 2022-м, 3.0 — в 2025 году с упором на генеративный ИИ.

Компоненты

Компонент Назначение
Tracking журнал запусков: параметры, метрики, артефакты, теги, версия кода
Models единый формат упаковки модели («flavor») с окружением и сигнатурой
Model Registry реестр с версиями, псевдонимами (champion), описаниями
Projects воспроизводимый запуск кода с описанием окружения (используется редко)
Tracing / Evaluation трассировка вызовов LLM и агентов, оценка ответов

Tracking

Единица учёта — запуск (run), запуски группируются в эксперименты.[2]

import mlflow
from sklearn.ensemble import RandomForestClassifier

mlflow.set_tracking_uri("http://mlflow.internal:5000")
mlflow.set_experiment("churn")

with mlflow.start_run(run_name="rf-baseline"):
    params = {"n_estimators": 300, "max_depth": 8}
    model = RandomForestClassifier(**params).fit(X_train, y_train)
    mlflow.log_params(params)
    mlflow.log_metric("roc_auc", roc_auc_score(y_val, model.predict_proba(X_val)[:, 1]))
    mlflow.sklearn.log_model(model, name="model", input_example=X_val[:5])

Вызов mlflow.autolog() включает автоматическое журналирование для поддерживаемых библиотек. Веб-интерфейс (mlflow ui или mlflow server) позволяет сортировать запуски, сравнивать графики метрик и выбирать лучшую модель.

Модели и реестр

Модель сохраняется как каталог с файлом MLmodel, описанием зависимостей (requirements.txt, conda.yaml) и сигнатурой входа и выхода. Универсальный интерфейс pyfunc позволяет загрузить любую модель одинаково: mlflow.pyfunc.load_model(uri).predict(df).

Реестр моделей хранит версии под общим именем. Вместо устаревших стадий Staging/Production используются псевдонимы: приложение загружает models:/churn@champion, а смена продакшен-версии сводится к переназначению псевдонима — без изменения кода.[3]

Развёртывание

mlflow models serve поднимает REST-сервер для модели, mlflow models build-docker собирает Docker-образ; также есть интеграции с Kubernetes (через KServe и Seldon), SageMaker и Azure ML. Подробнее о подходах — в статье Сервинг моделей.

MLflow для LLM

С версии 3 MLflow трассирует цепочки вызовов LLM-приложений: каждый вызов модели, инструмента и поиска записывается как span с входами, выходами, задержкой и стоимостью — по стандарту OpenTelemetry.[4] Автотрассировка есть для OpenAI, Anthropic, LangChain, LlamaIndex и других. Модуль оценки позволяет прогонять наборы вопросов и оценивать ответы правилами или моделью-судьёй — см. Оценка LLM (evals). Также поддерживается реестр промптов с версиями.

Развёртывание сервера

Для команды сервер запускают с базой метаданных и объектным хранилищем артефактов:

mlflow server \
  --backend-store-uri postgresql://mlflow:***@db/mlflow \
  --artifacts-destination s3://ml-artifacts \
  --host 0.0.0.0 --port 5000

Встроенная аутентификация минимальна; на практике сервер ставят за обратный прокси с SSO. Управляемые версии предлагают Databricks, AWS SageMaker, Azure ML и Nebius.

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

Weights & Biases и Comet (облачные, с сильной визуализацией), ClearML, Neptune, Aim; для версионирования данных MLflow часто сочетают с DVC.

См. также

Источники

  1. MLflow — документация
  2. MLflow Tracking
  3. MLflow Model Registry
  4. MLflow — Tracing for GenAI
  5. Zaharia et al. — Accelerating the Machine Learning Lifecycle with MLflow (2018)
  6. MLflow — GitHub