04 · MLOps-цикл и реестры4.3–4.4 · ClearML, MMS и E2E-контур4.3.1сложный

Зачем experiment tracking

Зачем это нужно

DS запускает 50 обучений с разными learning rate, фичами и seed. Без системы учёта через неделю никто не вспомнит: какой run дал лучший F1? какие hyperparameters? какой commit? какой snapshot данных? Experiment tracking — журнал экспериментов с метриками, параметрами, артефактами и связью с кодом.

Для MLOps это мост между исследованием и prod: champion model выбирается не по памяти, а по записи в tracker, которую можно приложить к заявке в MMS.

Основные идеи

Что логировать в каждый experiment (run).

  • Parameters — lr, max_depth, список фич, random_seed.

  • Metrics — train/val F1, loss по эпохам (time series).

  • Artifacts — model file, plots, confusion matrix.

  • Source — git commit, script name, Docker image.

  • Tags / notes — «baseline», «added tenure feature», author.

Experiment vs Run vs Project.

  • Project — продукт или задача («churn-v2»).

  • Experiment — группа runs («july-feature-sweep»).

  • Run — одно конкретное обучение.

Сравнение runs. Таблица: отсортировать по val F1, фильтр «tag=approved_candidate». Без tracker — Excel на общем диске, который устарел.

Reproducibility link. Run хранит не только metrics, но и URI датасета, requirements, command line. «Повтори run #442» — одна кнопка или скрипт.

Не путать с MMS. Tracker — для исследований (сотни runs). MMS — для approved production models (единицы записей с governance). Связь: run_id → promoted → model_id в MMS.

Интеграция в pipeline. Train job в Argo Workflows в начале создаёт task в ClearML, в конце логирует metrics и upload model. Jenkins CI может читать «лучший run за nightly» — advanced.

Что tracker не решает. Качество данных, compliance, автоматический deploy — это отдельные gates. Tracker отвечает на «что мы пробовали и что получилось».

Как это выглядит на практике

DS работает над NLP-классификатором:

  1. Создаёт project ticket-classifier в ClearML.

  2. Каждый запуск train.py с Task.init() создаёт run; hyperparameters из argparse автоматически логируются.

  3. После epoch — logger.report_scalar('val', 'f1', value, iteration=epoch).

  4. Лучший run #118: F1=0.84 — artifact model.onnx uploaded.

  5. На demo DS открывает Compare view: run 118 vs 97 — разница только в max_features.

  6. MLE берёт task ID 118 для регистрации в MMS и сборки inference образа с тем же ONNX.

Без tracking: «кажется, вторая версия с tf-idf 10k была лучше» — в prod уехала не та.

Что сделать после занятия

  • Перечислите 5 параметров и 3 метрики, которые вы будете логировать в учебном train script.

  • Опишите правило: когда run может стать кандидатом в prod (threshold + manual review).

  • Сравните роли experiment tracker и Git: что хранится где.

Официальные материалы