ML Infrastructure
~30 мин

Трекинг экспериментов

MLflow, DVC, W&B — трекинг экспериментов, версионирование моделей и данных.

Трекинг экспериментов — чтобы не терять результаты в Excel

Загрузка интерактивного виджета...

Ты запустил 50 экспериментов за неделю. Какой дал лучший результат? С какими гиперпараметрами? На каких данных? Какая версия кода? Если ответ «где-то в Jupyter-ноутбуке» — это проблема. Трекинг экспериментов — это системное логирование всего: параметры, метрики, артефакты, код, данные. MLflow, DVC, W&B — инструменты, которые превращают хаос в воспроизводимые результаты.

MLflow — стандарт индустрии

MLflow — самый популярный open-source инструмент с четырьмя компонентами: Tracking (логирование экспериментов), Projects (воспроизводимые запуски), Models (упаковка моделей) и Model Registry (версионирование моделей в проде). В большинстве компаний используют как минимум Tracking + Registry. Ниже — типичный workflow: логируем параметры, метрики, артефакты и саму модель. Потом через UI сортируем по AUC, сравниваем эксперименты.

import mlflow

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

with mlflow.start_run(run_name="gbm-tuned-v3"):
    mlflow.log_params({"n_estimators": 500, "max_depth": 6, "lr": 0.05})
    mlflow.log_param("train_size", len(X_train))

    model = GradientBoostingClassifier(**params)
    model.fit(X_train, y_train)

    mlflow.log_metric("auc", roc_auc_score(y_test, y_pred))
    mlflow.log_metric("logloss", log_loss(y_test, y_pred))
    mlflow.log_artifact("feature_importance.png")
    mlflow.sklearn.log_model(model, "model",
        registered_model_name="churn-model")

Model Registry — от эксперимента к продакшну

Model Registry хранит версии моделей и их стадии: Staging (тестирование) → Production (рабочая) → Archived (старая). Переключение между версиями — одна строка: client.transition_model_version_stage("churn-model", version=3, stage="Production"). Загрузить production-модель для inference тоже одна строка: mlflow.sklearn.load_model("models:/churn-model/Production").

DVC — Git для данных

MLflow трекает эксперименты, но не данные. А данные тоже меняются: добавили фичи, переразметили выборку, удалили дубликаты. DVC (Data Version Control) — это Git для больших файлов. Метаданные (.dvc файлы) хранятся в Git, а сами файлы (датасеты, модели) — в S3 или GCS. Команды аналогичны Git: dvc add, dvc push, dvc pull, dvc checkout. Плюс dvc.yaml описывает воспроизводимый ML-пайплайн (prepare → train → evaluate), а dvc repro перезапускает только изменившиеся шаги.

# Версионирование данных
dvc init && dvc remote add -d myremote s3://bucket/dvc
dvc add data/train.csv          # создаёт .dvc файл (в Git)
git add data/train.csv.dvc && git commit -m "Add dataset v1"
dvc push                        # данные → S3

# Новый разработчик: git clone + dvc pull → всё скачается
# Откат: git checkout v1.0 && dvc checkout → данные той версии

# Сравнить метрики между ветками
dvc metrics diff  # auc: 0.91 → 0.93 (+0.02)

W&B и что выбрать

W&B (Weights & Biases) — облачная платформа с мощной визуализацией, особенно хороша для deep learning: графики loss по эпохам в реальном времени, визуализация градиентов, гиперпараметрический поиск (Sweeps). API простой: wandb.init(), wandb.log({"loss": loss}), wandb.finish().

  • MLflow — open-source, self-hosted, стандарт индустрии. Model Registry для продакшна. Первый выбор
  • DVC — версионирование данных + воспроизводимые пайплайны. Дополняет MLflow
  • W&B — лучшая визуализация, Sweeps для гиперпараметров. Облачный, удобнее для DL
  • Популярная комбинация: DVC (данные + пайплайны) + MLflow (эксперименты + model registry)

💡 Как это в реальной работе

Каждый эксперимент логируется в MLflow: параметры, метрики, артефакты. Через месяц тимлид спрашивает «а почему мы выбрали CatBoost?» — открываешь MLflow, сортируешь по AUC, показываешь сравнение. Модель уходит в Model Registry как Staging → прошла A/B → переводишь в Production. Всё задокументировано, всё воспроизводимо.

🎯 На собесе

Как вы трекаете эксперименты? MLflow или W&B: логируем параметры, метрики, артефакты. DVC для версионирования данных и воспроизводимых пайплайнов. Model Registry для управления версиями моделей в проде (Staging → Production → Archived). Зачем всё это? Воспроизводимость: через полгода можно точно воспроизвести любой эксперимент.