Где отслеживаешь историю экспериментов и обучений моделей?

«Где отслеживаешь историю экспериментов и обучений моделей?» — вопрос из категории MLOps и деплой моделей, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для трекинга экспериментов я использую специализированные инструменты, которые позволяют не просто записывать метрики, а воспроизводить любую прошлую модель со всеми ее условиями.

Мой основной стек:

  1. MLflow: Использую его в большинстве проектов за открытость и самодостаточность. Он логирует параметры, метрики, артефакты (модели, графики) и даже версию кода (git commit).

    import mlflow
    import mlflow.sklearn
    
    with mlflow.start_run(run_name="RandomForest_Experiment_1"):
        # Логируем гиперпараметры
        mlflow.log_param("n_estimators", 100)
        mlflow.log_param("max_depth", 10)
    
        # Обучаем модель
        model = RandomForestClassifier(n_estimators=100, max_depth=10)
        model.fit(X_train, y_train)
    
        # Логируем метрики
        accuracy = model.score(X_test, y_test)
        mlflow.log_metric("accuracy", accuracy)
    
        # Сохраняем саму модель как артефакт
        mlflow.sklearn.log_model(model, "model")

    Удобно, что потом через UI можно сравнивать десятки запусков по разным метрикам.

  2. Weights & Biases (W&B): Применяю в исследовательских проектах, особенно с глубоким обучением. Его сильные стороны — интерактивные дашборды, совместная работа в команде и удобная визуализация.

  3. DVC (Data Version Control): Когда критически важна воспроизводимость, связываю трекинг экспериментов в MLflow с версионированием данных и конфигурационных файлов через DVC. Это гарантирует, что модель v1.2 всегда будет связана с конкретным срезом данных dataset_v4 и конфигом config.yaml.

Что именно я отслеживаю в каждом эксперименте:

  • Гиперпараметры модели.
  • Метрики на валидационной и тестовой выборках.
  • Временные характеристики (длительность обучения, инференса).
  • Хеш датасета и git-коммита, чтобы точно знать, на каких данных и какой версии кода обучалась модель.
  • Визуализации: матрицы ошибок, кривые обучения, PR/AUC-кривые.