X
Ultralytics YOLOv8.2 РелизUltralytics YOLOv8.2 РелизUltralytics YOLOv8.2 Стрела освобождения
Зелёная проверка
Ссылка копируется в буфер обмена

Удаленно тренируй и контролируй YOLOv5 с помощью ClearML

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

Логотип FacebookЛоготип ТвиттераЛоготип LinkedInСимвол копирования-ссылки

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

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

Миссия компании заключается в ускорении внедрения ML, поэтому ClearML позволяет легко интегрировать ML в любой программный и аппаратный продукт.

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

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

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

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

Настраивай вещи

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

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

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

И вуаля! Ты готов приступить к работе...

Тренировка YOLOv5 с ClearML

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

установите трубопровод clearml

Это позволит интегрироваться с тренировочным скриптом YOLOv5 . С этого момента каждый тренировочный запуск будет перехватываться и сохраняться менеджером экспериментов ClearML . Если ты хочешь изменить имя_проекта или имя_задачи, перейди в наш пользовательский логгер, где ты сможешь его изменить: 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, losses, learning rates, ...)
  • Общая информация, такая как данные о машине, время работы, дата создания и т.д.
  • Все построенные графики, такие как коррелограмма меток и матрица смешения
  • Изображения с ограничительными рамками за эпоху
  • Мозаика на эпоху
  • Валидационные изображения за эпоху

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

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

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

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

Данные, Ultralytics YOLOv5  и ClearML

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

Репозиторий YOLOv5 поддерживает множество различных наборов данных с помощью YAML-файлов, содержащих информацию о них. По умолчанию наборы данных загружаются в папку ../datasets по отношению к корневой папке репозитория. Так что если ты загрузил набор данных coco128 по ссылке в YAML или с помощью скриптов, предоставленных yolov5, то получишь такую структуру папок:

...
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt

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

Далее, ⚠️copy соответствующий YAML-файл в корень набора данных folder⚠️. Эти YAML-файлы содержат информацию, которая понадобится ClearML для правильного использования набора данных. Конечно, ты можешь сделать это и сам, просто следуй структуре примеров YAML-файлов.

По сути, нам нужны следующие ключи: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # <---- HERE!
        |_ 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-данные закрыты

Проведи тренировку, используя набор данных ClearML .

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

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

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

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

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

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

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

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

HPO, Ultralytics YOLOv5  и ClearML

Удаленное выполнение (расширенный вариант)

Запускать HPO локально очень удобно, но что, если мы хотим проводить эксперименты на удаленной машине? Может быть, у тебя есть доступ к очень мощной машине с GPU на месте, или у тебя есть бюджет, чтобы использовать облачные GPU. Вот тут-то и приходит на помощь ClearML Agent.

Узнай, на что способен агент, здесь:

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

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

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

Клонирование, редактирование и загрузка

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

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

🎯 Отредактируй гиперпараметры так, как ты хочешь, чтобы они были

⏳ Отнеси задачу к любой из очередей, щелкнув по ней правой кнопкой мыши.

Enqueue, Ultralytics YOLOv5  и ClearML

Выполнение задачи удаленно

Теперь ты можешь клонировать задачу, как мы объясняли выше, или просто пометить свой текущий скрипт, добавив 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 для тебя всякий раз, когда в очереди будут обнаружены эксперименты. Как только задания будут обработаны, автомасштабатор автоматически отключит удаленные машины, и ты перестанешь платить! Посмотри видео о начале работы с автомасштабаторами ниже.

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

Давай вместе построим будущее
искусственного интеллекта!

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

Читайте больше в этой категории