Meet YOLO26: next-gen vision AI.

Link to this sectionИнтеграция с ClearML#

ClearML MLOps experiment tracking platform

Link to this sectionО ClearML#

ClearML — это MLOps-платформа с открытым исходным кодом, созданная для оптимизации рабочих процессов машинного обучения и экономии времени инженеров.

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

Используй столько инструментов из этого набора, сколько тебе нужно: начни только с менеджера экспериментов или объедини все в полноценный конвейер.

Дашборд скаляров ClearML с метриками обучения YOLOv5

Link to this section🦾 Настройка#

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

  • Зарегистрируйся в бесплатном облачном сервисе ClearML, или
  • Разверни свой собственный сервер ClearML — он имеет открытый исходный код, поэтому остается доступным вариантом даже для конфиденциальных данных.

Затем установи Python-пакет clearml и подключи SDK к своему серверу:

pip install clearml

Создай учетные данные в разделе Settings → Workspace → Create new credentials (в правом верхнем углу интерфейса ClearML), а затем выполни:

clearml-init

Следуй подсказкам. Вот и все — настройка завершена.

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

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

Читай дальше об оптимизации гиперпараметров и удаленном выполнении.

Link to this section🔗 Управление версиями набора данных#

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

Интерфейс управления версиями наборов данных ClearML

Link to this sectionПодготовка набора данных#

Репозиторий 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

Link to this sectionЗагрузка набора данных#

Чтобы зарегистрировать набор данных как версионированный набор данных 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

Link to this sectionОбучение на наборе данных ClearML#

После регистрации набора данных укажи его при обучении по ID:

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

Link to this section👀 Оптимизация гиперпараметров#

Имея версионированные эксперименты и данные, ты можешь строить на их основе более сложные процессы. Поскольку каждый отслеживаемый эксперимент фиксирует всю среду — код, установленные пакеты и конфигурацию, — запуски становятся полностью воспроизводимыми. 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 ClearML с метриками YOLOv5

Link to this section🤯 Удаленное выполнение (Продвинутый уровень)#

Локальный запуск HPO удобен, но часто тебе потребуется запускать эксперименты на более мощном оборудовании — локальной GPU-машине или облачном инстансе. Это задача для ClearML Agent:

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

Преврати любую машину — облачную VM, локальный GPU-сервер или ноутбук — в агент ClearML с помощью:

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

Link to this sectionКлонирование, редактирование и постановка в очередь#

Когда агент запущен, ты можешь назначать ему работу прямо из интерфейса:

  • 🪄 Нажми правой кнопкой мыши на эксперимент и клонируй его.
  • 🎯 Измени его гиперпараметры.
  • ⏳ Нажми правой кнопкой мыши на клонированную задачу и добавь ее в целевую очередь.

Постановка задачи в очередь из UI

Link to this sectionУдаленное выполнение задачи#

Ты также можешь программно пометить скрипт для удаленного выполнения, добавив 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
# ...

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

Link to this sectionАвтомасштабирование воркеров#

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

Посмотри видео для начала работы ниже:

Смотреть видео

Link to this sectionУзнай больше#

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

Контрибьюторы

Комментарии