Интеграция с ClearML#
О ClearML#
ClearML — это платформа MLOps с открытым исходным кодом, созданная для оптимизации рабочих процессов машинного обучения и экономии времени инженеров.
- 🔨 Отслеживай каждый запуск обучения YOLOv5 в менеджере экспериментов.
- 🔧 Версионируй и используй свои данные для обучения с помощью интегрированного инструмента версионирования данных ClearML.
- 🔦 Удалённо обучай и отслеживай запуски YOLOv5 с помощью ClearML Agent.
- 🔬 Находи лучший показатель mAP с помощью оптимизации гиперпараметров ClearML.
- 🔭 Превращай обученную модель YOLOv5 в API с помощью нескольких команд и ClearML Serving.
Используй столько этих инструментов, сколько тебе нужно, — начни только с менеджера экспериментов или объедини их все в единый конвейер.
🦾 Настройка#
ClearML должен обмениваться данными с сервером, чтобы отслеживать эксперименты и данные. У тебя есть два варианта:
- Зарегистрироваться в бесплатном ClearML Hosted Service или
- Развернуть собственный сервер ClearML — это ПО имеет открытый исходный код, поэтому оно остаётся подходящим вариантом даже для конфиденциальных данных.
Затем установи пакет clearml Python и подключи SDK к своему серверу:
pip install clearmlСоздай учётные данные в разделе Settings → Workspace → Create new credentials (в правом верхнем углу интерфейса ClearML), затем выполни:
clearml-initСледуй инструкциям. Готово — настройка завершена.
🚀 Обучение YOLOv5 с ClearML#
Чтобы включить отслеживание экспериментов, установи пакет ClearML для pip, если ещё не сделал этого:
pip install clearmlЭто включит интеграцию со скриптом обучения YOLOv5. Отныне каждый запуск обучения будет фиксироваться и сохраняться в менеджере экспериментов ClearML.
Чтобы настроить названия проекта и задачи, передай --project и --name в train.py. По умолчанию используются YOLOv5 и Training. ClearML использует / как разделитель подпроектов, поэтому не используй / в пользовательских названиях проектов.
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheИли с пользовательскими названиями:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheКаждый запуск сохраняет:
- Исходный код и незакоммиченные изменения
- Установленные пакеты
- Гиперпараметры
- Контрольные точки модели (используй
--save-period n, чтобы сохранять каждуюnэпоху) - Вывод консоли
- Скалярные показатели (mAP_0.5, mAP_0.5:0.95, точность, полнота, значения функции потерь, скорости обучения)
- Сведения о машине, время выполнения и дата создания
- Сгенерированные графики, например коррелограмма меток и матрица ошибок
- Изображения с ограничивающими рамками для каждой эпохи
- Визуализации мозаики для каждой эпохи
- Изображения для валидации на каждой эпохе
Всё отображается в интерфейсе ClearML, поэтому ты можешь отслеживать обучение в одном месте. Добавь пользовательские столбцы (например, mAP_0.5), чтобы сортировать модели по качеству, или выбери несколько экспериментов для параллельного сравнения.
Продолжи чтение, чтобы узнать об оптимизации гиперпараметров и удалённом выполнении.
🔗 Управление версиями датасетов#
Версионирование данных отдельно от кода упрощает получение последней версии и обеспечивает полную воспроизводимость. Этот репозиторий принимает идентификатор версии датасета, автоматически загружает данные, если их нет, и записывает идентификатор как параметр задачи, чтобы ты всегда знал, какие данные использовались в каждом эксперименте.
Подготовка датасета#
Репозиторий YOLOv5 поддерживает множество датасетов через конфигурационные файлы YAML. По умолчанию датасеты загружаются в папку ../datasets относительно корня репозитория. После загрузки coco128 структура папок выглядит так:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtПодойдёт любой датасет, если ты сохранишь эту структуру.
Затем скопируй YAML-файл датасета в корневую папку датасета — ClearML считывает этот файл, чтобы корректно использовать датасет. Ты можешь написать собственный YAML по примеру структуры, указав в нём path, train, test, val, nc и names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtЗагрузка датасета#
Чтобы зарегистрировать датасет как версионируемый датасет ClearML, перейди в его корневую папку и выполни:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync — это сокращение для следующей последовательности, которую также можно выполнить явно:
# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeОбучение на датасете ClearML#
После регистрации датасета укажи его идентификатор для обучения:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache👀 Оптимизация гиперпараметров#
После версионирования экспериментов и данных ты можешь использовать их как основу для дальнейшей работы. Поскольку каждый отслеживаемый эксперимент сохраняет всё окружение — код, установленные пакеты и конфигурацию, — запуски полностью воспроизводимы. ClearML позволяет клонировать эксперимент, изменять его параметры и автоматически запускать его повторно, что является основой оптимизации гиперпараметров (HPO).
Чтобы запустить HPO локально, используй поставляемый скрипт. Сначала убедись, что в менеджере экспериментов существует задача обучения, — скрипт клонирует её и изменяет её гиперпараметры.
Укажи идентификатор задачи в шаблоне в utils/loggers/clearml/hpo.py, затем выполни:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.pyЗамени task.execute_locally() на task.execute(), чтобы отправить задачу в очередь ClearML для получения удалённым агентом.

🤯 Удалённое выполнение (расширенный уровень)#
Локальный запуск HPO удобен, но часто эксперименты нужно выполнять на более мощном оборудовании — локальной GPU-машине или в облачном экземпляре. Для этого и предназначен ClearML Agent:
Каждый отслеживаемый эксперимент содержит всё необходимое для воспроизведения на другой машине (установленные пакеты, незакоммиченные изменения и конфигурацию). Агент ClearML прослушивает очередь, получает входящие задачи, воссоздаёт окружение, выполняет задачу и передаёт скалярные показатели и графики обратно в менеджер экспериментов.
Преврати любую машину — облачную VM, локальный GPU-компьютер или ноутбук — в агент ClearML с помощью:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Клонирование, редактирование и постановка в очередь#
После запуска агента ты можешь назначать ему задачи непосредственно из интерфейса:
- 🪄 Щёлкни правой кнопкой мыши по эксперименту и клонируй его.
- 🎯 Измени его гиперпараметры.
- ⏳ Щёлкни правой кнопкой мыши по клонированной задаче и поставь её в целевую очередь.
Удалённое выполнение задачи#
Ты также можешь программно пометить выполняющийся скрипт для удалённого выполнения, добавив task.execute_remotely() после создания логгера ClearML. Добавь выделенную строку в train.py:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINE
# data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
data_dict = loggers.clearml.data_dict
# ...После этого изменения запуск скрипта обучения выполняется до этой строки, упаковывает код и отправляет его в очередь.
Автомасштабирование рабочих узлов#
ClearML поставляется с автомасштабировщиками, которые запускают удалённые машины в AWS, GCP или Azure при наличии ожидающих экспериментов в очереди, превращают их в агентов ClearML и выключают после завершения работы — поэтому ты платишь только за фактически используемые вычислительные ресурсы.
Посмотри видео для начинающих ниже:
Узнай больше#
Дополнительную информацию об интеграции ClearML с моделями Ultralytics смотри в нашем руководстве по интеграции с ClearML и узнай, как улучшить свой рабочий процесс MLOps с помощью других инструментов отслеживания экспериментов.
