Удаленное обучение и мониторинг Ultralytics YOLOv5 с использованием ClearML
Изучи наше партнерство с ClearML для улучшенного опыта работы с Ultralytics YOLOv5 благодаря бесшовной интеграции ML, отслеживанию экспериментов и многому другому.

В Ultralytics мы сотрудничаем с другими стартапами на коммерческой основе, чтобы финансировать исследования и разработку наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, и сохранять их бесплатными для всех. Эта статья может содержать партнерские ссылки на эти компании.
ClearML — наш новейший партнер: инструментарий с открытым исходным кодом, разработанный для экономии твоего времени.
С миссией ускорения внедрения ML, ClearML делает интеграцию машинного обучения бесшовной в любой программный или аппаратный продукт.
Эта интеграция делает обучение модели YOLOv5 и ее автоматическое отслеживание через менеджер экспериментов ClearML еще проще. Ты можешь легко указать ID версии датасета ClearML в качестве источника данных, и он будет автоматически использован для обучения твоей модели.
Link to this sectionВыведи отслеживание своих экспериментов на новый уровень#
- Отслеживай каждый запуск обучения YOLOv5 в менеджере экспериментов.
- Версионируй и легко получай доступ к своим пользовательским данным для обучения с помощью встроенного инструмента версионирования данных ClearML.
- Достигай наилучшего mAP, используя оптимизацию гиперпараметров ClearML.
- Преврати свою только что обученную модель YOLOv5 в API с помощью всего нескольких команд, используя ClearML Serving.
Только тебе решать, сколько из этих инструментов использовать: ты можешь ограничиться менеджером экспериментов или объединить их все в впечатляющий конвейер.
Link to this sectionНастройка#
Чтобы отслеживать свои эксперименты и данные, ClearML должен связываться с сервером. У тебя есть два варианта: зарегистрироваться бесплатно в ClearML Hosted Service или настроить собственный сервер, подробнее см. в документации по развертыванию ClearML Server.
Даже сервер имеет открытый исходный код, так что если ты работаешь с конфиденциальными данными, это не проблема!
- Установи python-пакет clearml:
pip install clearml - Подключи ClearML SDK к серверу, создав учетные данные (перейди в правый верхний угол: Settings → Workspace → Create new credentials), затем выполни следующую команду и следуй инструкциям:
clearml-init
И вуаля! Ты готов к работе...
Link to this sectionОбучение YOLOv5 с ClearML#
Чтобы включить отслеживание экспериментов ClearML, просто установи pip-пакет ClearML.
pip install clearmlЭто активирует интеграцию со скриптом обучения YOLOv5. Отныне каждый запуск обучения будет фиксироваться и сохраняться в менеджере экспериментов ClearML. Если ты хочешь изменить project_name или task_name, перейди в наш пользовательский логгер, где ты сможешь изменить их: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheЭто позволит зафиксировать:
- Исходный код + незафиксированные изменения
- Установленные пакеты
- (Гипер)параметры
- Файлы моделей (используй --save-period n для сохранения чекпоинта каждые n эпох)
- Вывод консоли
- Скаляры (mAP_0.5, mAP_0.5:0.95, precision, recall, потери, коэффициенты обучения, ...)
- Общая информация, такая как сведения о машине, время выполнения, дата создания и т. д.
- Все созданные графики, такие как коррелограмма меток и матрица ошибок
- Изображения с ограничивающими рамками (bbox) для каждой эпохи
- Мозаика для каждой эпохи
- Изображения валидации для каждой эпохи
Неплохо! Теперь мы можем визуализировать всю эту информацию в интерфейсе ClearML, чтобы получить общее представление о прогрессе обучения. Добавь пользовательские столбцы в табличный вид (например, mAP_0.5), чтобы ты мог легко отсортировать модели по эффективности. Или выбери несколько экспериментов и сравни их напрямую!
Мы можем сделать еще больше с помощью всей этой информации, например, оптимизацию гиперпараметров и удаленное выполнение, так что продолжай читать, чтобы узнать как!
Link to this sectionУправление версиями датасета#
Версионирование данных отдельно от кода — это, как правило, хорошая идея, которая также облегчает получение последней версии. Этот репозиторий поддерживает указание ID версии датасета, и он обеспечит получение данных, если их еще нет. Кроме того, этот рабочий процесс сохраняет ID используемого датасета как часть параметров задачи, поэтому ты всегда будешь точно знать, какие данные использовались в конкретном эксперименте!
Link to this sectionПодготовь свой датасет#
Репозиторий YOLOv5 поддерживает ряд различных датасетов с использованием YAML-файлов, содержащих информацию о них. По умолчанию датасеты загружаются в папку ../datasets относительно корневой папки репозитория. Так что если ты скачал датасет coco128 с помощью ссылки в YAML или с помощью скриптов, предоставленных в yolov5, ты получишь такую структуру папок:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtНо это может быть любой датасет, который ты пожелаешь. Не стесняйся использовать свой собственный, главное, сохраняй эту структуру папок.
Далее, ⚠️скопируй соответствующий YAML-файл в корень папки датасета⚠️. Эти YAML-файлы содержат информацию, которая понадобится ClearML для правильного использования датасета. Конечно, ты можешь создать такой файл самостоятельно, просто следуй структуре примеров YAML.
В основном нам нужны следующие ключи: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtLink to this sectionЗагрузи свой датасет#
Чтобы добавить этот датасет в ClearML как версионированный, перейди в корневую папку датасета и выполни следующую команду:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .Команда clearml-data sync на самом деле является сокращенной командой. Ты также мог бы выполнить эти команды одну за другой:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeLink to this sectionЗапуск обучения с использованием датасета ClearML#
Теперь, когда у тебя есть датасет ClearML, ты можешь очень просто использовать его для обучения собственных моделей YOLOv5.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheLink to this sectionОптимизация гиперпараметров#
Теперь, когда у нас есть эксперименты и версия данных, пришло время взглянуть на то, что мы можем построить поверх этого!
Используя информацию о коде, установленные пакеты и сведения об окружении, сам эксперимент теперь полностью воспроизводим. Фактически, ClearML позволяет тебе клонировать эксперимент и даже изменять его параметры. Затем мы можем просто автоматически перезапустить его с этими новыми параметрами — это, по сути, то, что делает HPO!
Чтобы запустить оптимизацию гиперпараметров локально, мы добавили для тебя готовый скрипт. Просто убедись, что задача обучения была запущена хотя бы раз, чтобы она появилась в менеджере экспериментов ClearML; по сути, мы клонируем ее и изменим ее гиперпараметры.
Тебе нужно будет указать ID этой шаблонной задачи в скрипте, который находится по пути utils/loggers/clearml/hpo.py, а затем просто запустить его. Ты можешь изменить task.execute_locally() на task.execute(), чтобы поместить задачу в очередь ClearML и поручить ее выполнение удаленному агенту.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyLink to this sectionУдаленное выполнение (продвинутый уровень)#
Локальный запуск HPO — это очень удобно, но что, если мы хотим запускать наши эксперименты на удаленной машине? Может быть, у тебя есть доступ к мощной машине с GPU на месте или у тебя есть бюджет на использование облачных GPU. Именно здесь в игру вступает ClearML Agent.
Посмотри, что умеет агент, здесь:
Вкратце: каждый эксперимент, отслеживаемый менеджером экспериментов, содержит достаточно информации для воспроизведения на другой машине (установленные пакеты, незафиксированные изменения и т. д.). Так что агент ClearML делает именно это: он слушает очередь на предмет входящих задач и, когда находит одну, воссоздает окружение и запускает ее, при этом продолжая сообщать скаляры, графики и т. д. в менеджер экспериментов.
Ты можешь превратить любую машину (облачную виртуальную машину, локальную машину с GPU, свой собственный ноутбук) в агента ClearML, просто запустив:
clearml-agent daemon --queue [--docker]Link to this sectionКлонирование, редактирование и добавление в очередь#
Когда наш агент запущен, мы можем дать ему работу. Помнишь из раздела HPO, что мы можем клонировать задачу и редактировать гиперпараметры? Мы можем сделать это и через интерфейс!
🪄 Клонируй эксперимент, нажав на него правой кнопкой мыши
🎯 Отредактируй гиперпараметры так, как тебе нужно
⏳ Помести задачу в любую из очередей, нажав на нее правой кнопкой мыши
Link to this sectionУдаленное выполнение задачи#
Теперь ты можешь клонировать задачу, как мы объяснили выше, или просто пометить свой текущий скрипт, добавив task.execute_remotely(), и при выполнении он будет помещен в очередь, чтобы агент начал над ним работать!
Чтобы запустить скрипт обучения YOLOv5 удаленно, все, что тебе нужно сделать, это добавить эту строку в скрипт train.py после того, как был создан экземпляр логгера ClearML:
# ...
# 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Есть вопросы? Присоединяйся к нашему сообществу и задай свой вопрос сегодня!






