# MLflow

> Открытая платформа для жизненного цикла ML — трекинг экспериментов, реестр моделей, упаковка и сервинг; с версии 3 также трассировка и оценка LLM-приложений.

Источник: https://llmdocs.ru/wiki/mlflow/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Разработчик**: 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** — открытая платформа для управления жизненным циклом моделей [машинного обучения](https://llmdocs.ru/wiki/machine-learning.md): журналирования экспериментов, хранения и версионирования моделей, их упаковки и развёртывания. Это один из самых распространённых инструментов [MLOps](https://llmdocs.ru/wiki/mlops.md): он не привязан к конкретной библиотеке и работает с [scikit-learn](https://llmdocs.ru/wiki/scikit-learn.md), [PyTorch](https://llmdocs.ru/wiki/pytorch.md), XGBoost, [Hugging Face](https://llmdocs.ru/wiki/hugging-face.md) и другими. Последние версии добавили трассировку и оценку приложений на [больших языковых моделях](https://llmdocs.ru/wiki/llm.md).[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]

```python
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](https://llmdocs.ru/wiki/docker.md)-образ; также есть интеграции с Kubernetes (через KServe и Seldon), SageMaker и Azure ML. Подробнее о подходах — в статье [Сервинг моделей](https://llmdocs.ru/wiki/model-serving.md).

## MLflow для LLM

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

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

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

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

Встроенная аутентификация минимальна; на практике сервер ставят за [обратный прокси](https://llmdocs.ru/wiki/reverse-proxy.md) с SSO. Управляемые версии предлагают Databricks, AWS SageMaker, Azure ML и Nebius.

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

Weights & Biases и Comet (облачные, с сильной визуализацией), ClearML, Neptune, Aim; для версионирования данных MLflow часто сочетают с [DVC](https://llmdocs.ru/wiki/dvc.md).

## См. также

- [MLOps](https://llmdocs.ru/wiki/mlops.md)
- [Сервинг моделей](https://llmdocs.ru/wiki/model-serving.md)
- [Версионирование данных (DVC)](https://llmdocs.ru/wiki/dvc.md)
- [Оценка LLM (evals)](https://llmdocs.ru/wiki/llm-evals.md)
- [Hugging Face](https://llmdocs.ru/wiki/hugging-face.md)

## Источники

1. [MLflow — документация](https://mlflow.org/docs/latest/)
2. [MLflow Tracking](https://mlflow.org/docs/latest/ml/tracking/)
3. [MLflow Model Registry](https://mlflow.org/docs/latest/ml/model-registry/)
4. [MLflow — Tracing for GenAI](https://mlflow.org/docs/latest/genai/tracing/)
5. [Zaharia et al. — Accelerating the Machine Learning Lifecycle with MLflow (2018)](https://people.eecs.berkeley.edu/~matei/papers/2018/ieee_mlflow.pdf)
6. [MLflow — GitHub](https://github.com/mlflow/mlflow)
