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

ClearML Интеграция

Clear|MLClear|ML

О сайте ClearML

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

🔨 Отслеживайте каждую тренировку YOLOv5 в менеджере экспериментов

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

🔦 Удаленная тренировка и мониторинг тренировок YOLOv5 с помощью ClearML Agent.

🔬 Получение наилучшей карты с помощью ClearML оптимизации гиперпараметров

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


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

ClearML приборная панель скаляров



🦾 Подготовка к работе

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

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

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

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

    clearml-init
    

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


🚀 Обучение YOLOv5 С ClearML

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

pip install clearml>=1.2.0

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

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

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

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

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

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 на самом деле является сокращенной командой. Вы также можете выполнять эти команды одну за другой:

# 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 . Мы, по сути, клонируем ее и изменим ее гиперпараметры.

Вам нужно будет заполнить идентификатор этого 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 :

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

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

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

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

Комментарии