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

ClearML: эксперименты, артефакты и pipeline

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

Experiment tracking на бумаге понятен; на практике нужен конкретный инструмент. В курсе — ClearML: open-source платформа для логирования runs, хранения артефактов, оркестрации pipeline и (опционально) деплоя. Этот урок — не «кликайте все кнопки», а понимание архитектуры ClearML и того, как DS и MLE работают с одной системой.

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

Компоненты ClearML.

Компонент Назначение
ClearML Server API, UI, metadata DB, file server
Agent Worker на машине/GPU — выполняет tasks из очереди
SDK (clearml) Python: Task.init, log metrics, upload artifacts
ClearML Data Версионирование датасетов (optional)
Pipeline DAG из steps, каждый step — task

Разработчик ставит SDK; Server — центральная точка правды для экспериментов.

Task lifecycle.

  1. task = Task.init(project_name=..., task_name=...)

  2. task.connect_configuration(config_dict) — hyperparameters.

  3. Training loop → Logger.report_scalar(...).

  4. task.upload_artifact('model', artifact_object=path).

  5. task.close() — run зафиксирован.

Task получает уникальный ID — его цитируют в MMS и Jenkins.

Artifacts. Файлы (model, plots, csv) привязаны к task. URI стабилен — inference job может скачать artifact по ID без «скинь в Slack».

Hyper-Dataset / Data versioning. Для зрелых команд: snapshot данных как first-class object. На старте достаточно логировать path + hash в parameters.

ClearML Agent и очереди. DS пушит task в queue gpu-large; agent на GPU-сервере забирает job. Это разделение: ноутбук не держит 8-hour train, cluster делает.

Pipeline (ClearML Pipeline). Steps: preprocesstrainevaluate. Каждый step — отдельный task с dependency. Параметры pipeline versioned; rerun с новым lr — один CLI/UI action.

Интеграция с Git. task.set_repo(...) или auto-detect commit. Diff кода виден в UI run.

Безопасность. Server в corp VPN; API keys per user; projects с ACL. Не коммитить credentials в clearml.conf.

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

Структура репозитория:

ml-churn/ train.py # Task.init + training evaluate.py pipeline.py # ClearML Pipeline definition clearml.conf # local ignore; server URL from env

Фрагмент train.py (учебный паттерн):

` from clearml import Task

task = Task.init(project_name="churn", task_name="lgbm-train") task.connect_configuration({"lr": 0.05, "max_depth": 6})

... обучение ...

task.get_logger().report_scalar("validation", "f1", f1_score, iteration=1) task.upload_artifact("model", artifact_object="model.joblib") `

MLE настраивает Agent в Kubernetes (Helm chart ClearML agent) с GPU nodeSelector. DS из UI: Clone run → изменить max_depth → Enqueue → agent выполняет.

Pipeline nightly: cron в Kubernetes CronJob вызывает pipeline.py --run; утром DS смотрит таблицу runs, champion помечает tag candidate.

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

  • Подключите учебный train.py к ClearML: parameters + одна metric + один artifact.

  • Создайте project и выполните 3 runs с разными hyperparameters; сравните в UI.

  • Выпишите Task ID лучшего run для следующего урока (MMS).

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