4.3.1 · блок 4
Зачем experiment tracking
Зачем 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: что хранится где.