YOLO Vision 2026:

Интеграция с ClearML#

ClearML MLOps experiment tracking platform

О ClearML#

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

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

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

🦾 Настройка#

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

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

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

pip install clearml

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

clearml-init

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

🚀 Обучение YOLOv5 с ClearML#

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

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

Продолжи чтение, чтобы узнать об оптимизации гиперпараметров и удалённом выполнении.

🔗 Управление версиями датасетов#

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

Подготовка датасета#

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

После регистрации датасета укажи его идентификатор для обучения:

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

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

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

Чтобы запустить HPO локально, используй поставляемый скрипт. Сначала убедись, что в менеджере экспериментов существует задача обучения, — скрипт клонирует её и изменяет её гиперпараметры.

Укажи идентификатор задачи в шаблоне в 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

🤯 Удалённое выполнение (расширенный уровень)#

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

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

Комментарии