Ознакомься с нашим партнерством с ClearML , чтобы получить расширенный опыт Ultrlaytics YOLOv5 с бесшовной интеграцией ML, отслеживанием экспериментов и многим другим.
На Ultralytics мы на коммерческой основе сотрудничаем с другими стартапами, которые помогают нам финансировать исследования и разработку наших потрясающих инструментов с открытым исходным кодом, таких как YOLOv5, чтобы они оставались бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.
ClearML это наш новый партнер: набор инструментов с открытым исходным кодом, призванный сэкономить твое время.
Миссия компании заключается в ускорении внедрения ML, поэтому ClearML позволяет легко интегрировать ML в любой программный и аппаратный продукт.
Эта интеграция делает обучение модели еще более простым. YOLOv5 модель и использовать менеджер экспериментов ClearML для ее автоматического отслеживания. Ты можешь легко указать идентификатор версии набора данных ClearML в качестве входных данных, и он автоматически будет использован для обучения твоей модели.
Только от тебя зависит, сколько из этих инструментов ты хочешь использовать, ты можешь придерживаться менеджера экспериментов или собрать их все вместе в впечатляющий конвейер.
Чтобы следить за твоими экспериментами и данными, ClearML должен взаимодействовать с сервером. У тебя есть два варианта: либо бесплатно подписаться на хостинговый сервис 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
Это позволит запечатлеть:
Не так уж и плохо! Теперь мы можем визуализировать всю эту информацию в пользовательском интерфейсе ClearML , чтобы получить представление о прогрессе нашего обучения. Добавь в представление таблицы пользовательские столбцы (например, mAP_0.5), чтобы ты мог легко отсортировать модели, показавшие наилучшие результаты. Или выбери несколько экспериментов и напрямую сравнивай их!
Со всей этой информацией мы можем сделать еще больше, например, оптимизировать гиперпараметры и удаленное выполнение, так что продолжай читать, чтобы узнать, как это сделать!
Версионирование данных отдельно от кода, как правило, является хорошей идеей, к тому же это упрощает получение последней версии. Этот репозиторий поддерживает ввод идентификатора версии набора данных, и он обязательно получит данные, если их еще нет. Кроме того, этот рабочий процесс сохраняет идентификатор используемого набора данных в параметрах задачи, так что ты всегда будешь точно знать, какие данные использовались в том или ином эксперименте!
Репозиторий 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 , ты можешь очень просто использовать его для обучения пользовательских моделей 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 локально очень удобно, но что, если мы хотим проводить эксперименты на удаленной машине? Может быть, у тебя есть доступ к очень мощной машине GPU на месте, или у тебя есть бюджет на использование облачных GPU. Вот тут-то и приходит на помощь ClearML Agent.
Узнай, на что способен агент, здесь:
Вкратце: каждый эксперимент, отслеживаемый менеджером экспериментов, содержит достаточно информации, чтобы воспроизвести его на другой машине (установленные пакеты, незафиксированные изменения и т.д.). Поэтому агент ClearML делает именно это: он прослушивает очередь входящих заданий и, когда находит одно, воссоздает среду и запускает его, продолжая сообщать менеджеру экспериментов о скалярах, графиках и т.д.
Ты можешь превратить любую машину (облачную ВМ, локальную GPU , собственный ноутбук... ) в агента ClearML , просто запустив его:
clearml-agent daemon --queue [--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 для тебя всякий раз, когда в очереди будут обнаружены эксперименты. Как только задания будут обработаны, автомасштабатор автоматически отключит удаленные машины, и ты перестанешь платить! Посмотри видео о начале работы с автомасштабаторами ниже.
Есть вопросы? Присоединяйся к нашему сообществу и оставь свой вопрос сегодня!
Начни свое путешествие с будущим машинного обучения