Перейти к содержанию

Интеграция ClearML

Clear|MLClear|ML

О ClearML

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

🔨 Отслеживайте каждый запуск обучения YOLOv5 в менеджере экспериментов.

🔧 Контролируйте версии и легко получайте доступ к своим пользовательским данным для обучения с помощью интегрированного инструмента контроля версий данных ClearML.

🔦 Удаленно обучайте и отслеживайте ваши запуски обучения YOLOv5 с помощью ClearML Agent

🔬 Получите наилучшее значение mAP, используя ClearML оптимизацию гиперпараметров.

🔭 Превратите свою недавно обученную модель YOLOv5 в API всего несколькими командами, используя ClearML Serving.


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

Панель управления скалярами ClearML



🦾 Настройка

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

Зарегистрируйтесь бесплатно в ClearML Hosted Service или настройте свой собственный ClearML server. Даже сервер имеет открытый исходный код, поэтому, даже если вы работаете с конфиденциальными данными, все должно быть в порядке!

  • Установите clearml python package:

    pip install clearml
    
  • Подключите ClearML SDK к серверу, создав учетные данные (перейдите в правый верхний угол в Settings -> Workspace -> Create new credentials), затем выполните команду ниже и следуйте инструкциям:

    clearml-init
    

Вот и все! Вы закончили 😎


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

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

pip install clearml

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

Если вы хотите изменить project_name или task_name, используйте --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 чтобы сохранить checkpoint каждые n эпох)
  • Вывод в консоль
  • Скаляры (mAP_0.5, mAP_0.5:0.95, точность, полнота, потери, скорость обучения, ...)
  • Общая информация, такая как сведения о машине, время выполнения, дата создания и т. д.
  • Все созданные графики, такие как коррелограмма меток и матрица ошибок
  • Изображения с ограничивающими рамками на эпоху
  • Mosaic на эпоху
  • Количество изображений для валидации на эпоху

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

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

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

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

Интерфейс набора данных ClearML

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

Репозиторий YOLOv5 поддерживает несколько различных наборов данных, используя YAML-файлы, содержащие их информацию. По умолчанию наборы данных загружаются в ../datasets папку относительно корневой папки репозитория. Так, если вы скачали coco128 dataset, используя ссылку в 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.txt

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

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

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

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

# Optionally add --parent <parent_dataset_id> 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 close

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

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

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


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

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

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

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

Вам нужно будет заполнить ID этого template task в скрипте, расположенном по адресу 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.py

HPO

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

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

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

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

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

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

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

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

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

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

Поставить задачу в очередь из пользовательского интерфейса

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

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

Чтобы запустить скрипт обучения YOLOv5 удаленно, все, что вам нужно сделать, это добавить эту строку в скрипт training.py после инстанциации clearml logger:

# ...
# 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 запустит скрипт до этой строки, после чего он упакует код и отправит его в очередь!

Автоматическое масштабирование workers

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

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

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

Узнать больше

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



📅 Создано 1 год назад ✏️ Обновлено 4 месяца назад

Комментарии