Интеграция с ClearML#
О ClearML#
ClearML — это платформа с открытым исходным кодом MLOps, созданная для оптимизации рабочих процессов машинного обучения и экономии времени инженеров.
- 🔨 Отслеживай каждый запуск обучения YOLOv5 в менеджере экспериментов.
- 🔧 Версионируй свои пользовательские данные для обучения и получай к ним доступ с помощью встроенного инструмента версионирования данных ClearML.
- 🔦 Обучай и контролируй удаленно запуски YOLOv5, используя ClearML Agent.
- 🔬 Находи лучший mAP с помощью оптимизации гиперпараметров ClearML.
- 🔭 Преврати свою обученную модель YOLOv5 в API за несколько команд, используя ClearML Serving.
Используй столько инструментов из этого набора, сколько тебе нужно: начни только с менеджера экспериментов или объедини все в полноценный конвейер.

🦾 Настройка#
ClearML должен взаимодействовать с сервером для отслеживания твоих экспериментов и данных. У тебя есть два варианта:
- Зарегистрируйся в бесплатном хостинговом сервисе ClearML или
- Разверни собственный сервер ClearML — он имеет открытый исходный код, поэтому остается подходящим вариантом даже для конфиденциальных данных.
Затем установи Python-пакет clearml и подключи SDK к своему серверу:
pip install clearmlСгенерируй учетные данные в разделе Settings → Workspace → Create new credentials (в верхнем правом углу интерфейса ClearML), а затем выполни:
clearml-initСледуй подсказкам. Вот и все — настройка завершена.
🚀 Обучение YOLOv5 с помощью ClearML#
Чтобы включить отслеживание экспериментов, установи pip-пакет ClearML, если ты еще этого не сделал:
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), чтобы выполнять сортировку по модели с наилучшими результатами, или выбери несколько экспериментов для их сравнения бок о бок.
Читай дальше, чтобы узнать об оптимизации гиперпараметров и удаленном выполнении.
🔗 Управление версиями набора данных#
Версионирование данных отдельно от кода упрощает получение актуальной версии и гарантирует полную воспроизводимость. Этот репозиторий принимает ID версии набора данных, автоматически загружает данные, если они отсутствуют, и записывает ID как параметр задачи, поэтому ты всегда знаешь, какие данные использовались в конкретном эксперименте.

Подготовка набора данных#
Репозиторий 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#
После регистрации набора данных укажи его при обучении по ID:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache👀 Оптимизация гиперпараметров#
Имея версионированные эксперименты и данные, ты можешь строить на их основе более сложные процессы. Поскольку каждый отслеживаемый эксперимент фиксирует всю среду — код, установленные пакеты и конфигурацию, — запуски становятся полностью воспроизводимыми. ClearML позволяет клонировать эксперимент, изменять его параметры и автоматически перезапускать его, что является основой оптимизации гиперпараметров (HPO).
Для локального запуска HPO используй прилагаемый скрипт. Сначала убедись, что задача обучения существует в менеджере экспериментов — скрипт клонирует её и варьирует гиперпараметры.
Заполни ID задачи шаблона в 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:
Каждый отслеживаемый эксперимент содержит все необходимое для воспроизведения на другой машине (установленные пакеты, незафиксированные изменения и конфигурацию). Агент 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 с помощью других инструментов отслеживания экспериментов.