Настраивайтесь на YOLO Vision 2025!
25 сентября 2025 г.
10:00 — 18:00 BST
Гибридное мероприятие
Yolo Vision 2024

Удаленная тренировка и мониторинг Ultralytics YOLOv5 с использованием ClearML

Команда Ultralytics

4 мин чтения

21 октября 2022 г.

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

В Ultralytics мы коммерчески сотрудничаем с другими стартапами, чтобы помочь нам финансировать исследования и разработки наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, чтобы они оставались бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.

ClearML — наш новый партнер: инструментарий с открытым исходным кодом, разработанный для экономии вашего времени.

С миссией ускорения внедрения машинного обучения, ClearML делает интеграцию машинного обучения простой в любое программное и аппаратное обеспечение.

Эта интеграция еще больше упрощает обучение модели YOLOv5 и использование менеджера экспериментов ClearML для автоматического отслеживания. Вы можете легко указать идентификатор версии набора данных ClearML в качестве входных данных, и он будет автоматически использоваться для обучения вашей модели.

Выведите отслеживание экспериментов на новый уровень

  • Отслеживайте каждый запуск обучения YOLOv5 в менеджере экспериментов.
  • Версионируйте и легко получайте доступ к своим пользовательским данным обучения с помощью интегрированного инструмента ClearML Data Versioning Tool.
  • Получите наилучшее значение mAP с помощью оптимизации гиперпараметров ClearML.
  • Превратите свою недавно обученную модель YOLOv5 в API с помощью всего нескольких команд, используя ClearML Serving.

Вы сами решаете, сколько из этих инструментов использовать: можно ограничиться менеджером экспериментов или объединить их все в впечатляющий конвейер.

Настройка

Чтобы отслеживать ваши эксперименты и данные, ClearML должен взаимодействовать с сервером. У вас есть два варианта: либо бесплатно зарегистрироваться в ClearML Hosted Service, либо настроить собственный сервер, см. здесь.

Даже сервер имеет открытый исходный код, поэтому, если вы работаете с конфиденциальными данными, это не проблема!

  1. Установите python-пакет clearml: pip install clearml
  2. Подключите ClearML SDK к серверу, создав учетные данные (перейдите в правый верхний угол в «Настройки» → «Рабочее пространство» → «Создать новые учетные данные»), затем выполните команду ниже и следуйте инструкциям: clearml-init

И вуаля! Вы готовы начать...

Обучение YOLOv5 с помощью ClearML

Чтобы включить отслеживание экспериментов ClearML, просто установите пакет ClearML pip.

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, точность, полнота, потери, скорость обучения, ...)
  • Общая информация, такая как сведения о машине, время работы, дата создания и т. д.
  • Все созданные графики, такие как коррелограмма меток и матрица ошибок
  • Изображения с ограничивающими рамками для каждой эпохи
  • Мозаика на эпоху
  • Количество изображений для валидации за эпоху

Неплохо! Теперь мы можем визуализировать всю эту информацию в ClearML UI, чтобы получить обзор прогресса нашего обучения. Добавьте пользовательские столбцы в табличное представление (например, mAP_0.5), чтобы можно было легко сортировать по наиболее эффективной модели. Или выберите несколько экспериментов и сравните их напрямую!

С этой информацией можно сделать еще больше, например, оптимизировать гиперпараметры и выполнять удаленное исполнение, так что продолжайте читать, чтобы узнать, как!

Управление версиями набора данных

Версионность ваших данных отдельно от вашего кода, как правило, является хорошей идеей и облегчает получение последней версии. Этот репозиторий поддерживает предоставление идентификатора версии набора данных, и он обязательно получит данные, если их еще нет. Кроме того, этот рабочий процесс также сохраняет используемый идентификатор набора данных как часть параметров задачи, поэтому вы всегда будете точно знать, какие данные были использованы в каком эксперименте!

Подготовьте свой набор данных

Репозиторий 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 # ← ЗДЕСЬ!
        |_ LICENSE
        |_ README.txt

Загрузите свой набор данных

Чтобы добавить этот набор данных в ClearML в качестве набора данных с версиями, перейдите в корневую папку набора данных и выполните следующую команду:

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .


Команда clearml-data sync на самом деле является сокращенной командой. Вы также можете выполнить эти команды одну за другой:

# Опционально добавьте --parent, если хотите основываться

# на этой версии на другой версии набора данных, поэтому дубликаты файлов не загружаются!

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

Запуск обучения с использованием набора данных ClearML

Теперь, когда у вас есть набор данных ClearML, вы можете очень просто использовать его для обучения пользовательских моделей YOLOv5.

python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache

Оптимизация гиперпараметров

Теперь, когда у нас есть наши эксперименты и версия данных, пришло время взглянуть на то, что мы можем построить поверх этого!

Используя информацию о коде, установленных пакетах и деталях окружения, эксперимент теперь полностью воспроизводим. Фактически, ClearML позволяет клонировать эксперимент и даже изменять его параметры. Затем мы можем просто перезапустить его с этими новыми параметрами автоматически, это в основном то, что делает HPO!

Чтобы запустить оптимизацию гиперпараметров локально, мы включили готовый скрипт. Просто убедитесь, что задача обучения была запущена хотя бы один раз, чтобы она находилась в менеджере экспериментов ClearML, мы по сути клонируем ее и изменим ее гиперпараметры.

Вам нужно будет заполнить идентификатор этой шаблонной задачи в скрипте, который находится в utils\/loggers\/clearml\/hpo.py, а затем просто запустить его. Вы можете изменить task.execute_locally() на task.execute(), чтобы поместить его в очередь ClearML и заставить удаленного агента работать над ним.

# Чтобы использовать optuna, сначала установите ее, в противном случае вы можете изменить оптимизатор на просто RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

Удаленное выполнение (дополнительно)

Запуск HPO локально — это действительно удобно, но что, если мы хотим запускать наши эксперименты на удаленной машине? Возможно, у вас есть доступ к очень мощной машине с графическим процессором на месте или у вас есть бюджет на использование облачных графических процессоров. Именно здесь вступает в игру ClearML Agent.

Посмотрите, что может делать агент, здесь:

Короче говоря: каждый эксперимент, отслеживаемый менеджером экспериментов, содержит достаточно информации для его воспроизведения на другой машине (установленные пакеты, незафиксированные изменения и т. д.). Таким образом, агент ClearML делает именно это: он прослушивает очередь входящих задач и, когда находит задачу, воссоздает среду и запускает ее, продолжая сообщать скаляры, графики и т. д. менеджеру экспериментов.

Вы можете превратить любую машину (облачную виртуальную машину, локальную машину с графическим процессором, свой собственный ноутбук) в агента ClearML, просто запустив:

clearml-agent daemon --queue [--docker]

Клонирование, редактирование и постановка в очередь

После запуска нашего агента мы можем дать ему работу. Помните из раздела HPO, что мы можем клонировать задачу и редактировать гиперпараметры? Мы можем сделать это и через интерфейс!

🪄 Клонируйте эксперимент, щелкнув по нему правой кнопкой мыши.

🎯 Отредактируйте гиперпараметры по своему усмотрению.

⏳ Поставьте задачу в очередь, щелкнув по ней правой кнопкой мыши

Удаленное выполнение задачи

Теперь вы можете клонировать задачу, как мы объяснили выше, или просто пометить свой текущий скрипт, добавив task.execute_remotely(), и при выполнении он будет помещен в очередь, чтобы агент начал работу!

Чтобы запустить скрипт обучения YOLOv5 удаленно, вам нужно всего лишь добавить эту строку в скрипт training.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 # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Когда вы запустите скрипт обучения после этого изменения, python запустит скрипт до этой строки, после чего он упакует код и отправит его в очередь!

Автоматическое масштабирование рабочих процессов

ClearML также поставляется с автоматическими масштабаторами! Этот инструмент будет автоматически запускать новые удаленные машины в облаке по вашему выбору (AWS, GCP, Azure) и превращать их в агенты ClearML для вас всякий раз, когда в очереди обнаруживаются эксперименты. После обработки задач автоматический масштабатор автоматически выключит удаленные машины, и вы перестанете платить! Посмотрите видео о том, как начать работу с автоматическими масштабаторами, ниже.

Есть вопросы? Присоединяйтесь к нашему сообществу и задайте свой вопрос сегодня!

Давайте строить будущее
ИИ вместе!

Начните свой путь в будущее машинного обучения

Начать бесплатно
Ссылка скопирована в буфер обмена