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.