Нажимая “Принять все файлы cookie”, вы соглашаетесь на сохранение файлов cookie на вашем устройстве с целью улучшения навигации по сайту, анализа использования сайта и помощи в наших маркетинговых усилиях. Подробнее
Настройки cookie
Нажимая “Принять все файлы cookie”, вы соглашаетесь на сохранение файлов cookie на вашем устройстве с целью улучшения навигации по сайту, анализа использования сайта и помощи в наших маркетинговых усилиях. Подробнее
Узнайте о нашем партнерстве с ClearML , чтобы получить расширенные возможности Ultralytics YOLOv5 с бесшовной интеграцией ML, отслеживанием экспериментов и многим другим.
В Ultralytics мы на коммерческой основе сотрудничаем с другими стартапами, которые помогают нам финансировать исследования и разработку наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, чтобы они оставались бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.
Задача ClearML - ускорить внедрение ML, благодаря чему ML легко интегрируется в любые программные и аппаратные продукты.
Эта интеграция еще больше упрощает обучение YOLOv5 и использовать менеджер экспериментов ClearML для его автоматического track . Вы можете легко указать идентификатор версии набора данных ClearML в качестве входных данных, и он автоматически будет использован для обучения вашей модели.
Выведите отслеживание экспериментов на новый уровень
Отслеживайте каждую тренировку YOLOv5 в менеджере экспериментов.
Версии и удобный доступ к данным пользовательского обучения с помощью встроенного инструмента версионирования данных ClearML .
Получите наилучший mAP с помощью оптимизации гиперпараметров ClearML .
Превратите только что обученную модель YOLOv5 в API всего несколькими командами с помощью ClearML Serving.
Вы сами решаете, сколько из этих инструментов использовать: можно ограничиться менеджером экспериментов или объединить их все в впечатляющий конвейер.
Настройка
Чтобы track результаты ваших экспериментов и данные, ClearML необходимо взаимодействовать с сервером. У вас есть два варианта: либо бесплатно подписаться на хостинг ClearML Hosted Service, либо создать свой собственный сервер, см. здесь.
Даже сервер имеет открытый исходный код, поэтому, если вы работаете с конфиденциальными данными, это не проблема!
Установитеpython clearml : pip install clearml
Подключите ClearML SDK к серверу, создав учетные данные (перейдите справа вверху в Настройки → Рабочее пространство → Создать новые учетные данные), затем выполните команду ниже и следуйте инструкциям: clearml
И вуаля! Вы готовы начать...
Обучение YOLOv5 с помощью ClearML
Чтобы включить функцию отслеживания экспериментов ClearML , просто установите пакет ClearML pip.
pip install clearml
Это позволит интегрироваться со сценарием обучения YOLOv5 . С этого момента каждый тренировочный прогон будет перехватываться и сохраняться менеджером экспериментов ClearML . Если вы хотите изменить имя_проекта или имя_задачи, перейдите в наш пользовательский логгер, где вы можете изменить его: clearml.py
Общая информация, такая как сведения о машине, время работы, дата создания и т. д.
Все созданные графики, такие как коррелограмма меток и матрица ошибок
Изображения с ограничивающими рамками для каждой эпохи
Мозаика на эпоху
Количество изображений для валидации за эпоху
Не так уж плохо! Теперь мы можем визуализировать всю эту информацию в пользовательском интерфейсе ClearML , чтобы получить представление о ходе обучения. Добавьте в таблицу пользовательские столбцы (например, mAP.5), чтобы можно было легко отсортировать модели, показавшие наилучшие результаты. Или выберите несколько экспериментов и напрямую сравните их!
С этой информацией можно сделать еще больше, например, оптимизировать гиперпараметры и выполнять удаленное исполнение, так что продолжайте читать, чтобы узнать, как!
Управление версиями набора данных
Версионность ваших данных отдельно от вашего кода, как правило, является хорошей идеей и облегчает получение последней версии. Этот репозиторий поддерживает предоставление идентификатора версии набора данных, и он обязательно получит данные, если их еще нет. Кроме того, этот рабочий процесс также сохраняет используемый идентификатор набора данных как часть параметров задачи, поэтому вы всегда будете точно знать, какие данные были использованы в каком эксперименте!
Подготовьте свой набор данных
Репозиторий YOLOv5 поддерживает множество различных наборов данных, используя файлы YAML, содержащие информацию о них. По умолчанию наборы данных загружаются в папку ../datasets по отношению к корневой папке репозитория. Таким образом, если вы загрузили набор данных coco128 по ссылке в YAML или с помощью скриптов, предоставляемых yolov5, вы получите такую структуру папок:
Но это может быть любой набор данных, который вы пожелаете. Не стесняйтесь использовать свой собственный, если вы придерживаетесь этой структуры папок.
Далее, ⚠️copy соответствующий YAML-файл в корень набора данных folder⚠️. Эти YAML-файлы содержат информацию, которая понадобится ClearML для правильного использования набора данных. Конечно, вы можете сделать это и сами, просто следуйте структуре примеров YAML.
В основном, нам нужны следующие ключи: path, train, test, val, nc, names.
Чтобы включить этот набор данных в ClearML в качестве версионного набора данных, перейдите в корневую папку набора данных и выполните следующую команду:
Теперь, когда у нас есть наши эксперименты и версия данных, пришло время взглянуть на то, что мы можем построить поверх этого!
Используя информацию о коде, установленных пакетах и сведения об окружении, можно полностью воспроизвести сам эксперимент. Фактически, ClearML позволяет клонировать эксперимент и даже изменять его параметры. Затем мы можем просто автоматически повторить его с новыми параметрами, что, по сути, и делает HPO!
Чтобы запустить оптимизацию гиперпараметров локально, мы включили готовый скрипт. Просто убедитесь, что учебная задача была запущена хотя бы один раз, чтобы она была в менеджере экспериментов ClearML , мы, по сути, клонируем ее и изменим ее гиперпараметры.
Вам нужно будет заполнить ID этой шаблонной задачи в скрипте, расположенном по адресу clearml.py, а затем просто запустить ее. Вы можете изменить task.execute_locally() на task.execute(), чтобы поместить задачу в очередь ClearML и заставить удаленного агента работать с ней вместо этого.
# Чтобы использовать optuna, сначала установите его, иначе вы можете изменить оптимизатор на просто RandomSearch pip install optuna python clearml.py
Удаленное выполнение (дополнительно)
Запускать HPO локально очень удобно, но что, если мы хотим проводить эксперименты на удаленной машине? Возможно, у вас есть доступ к очень мощной машине GPU на месте, или у вас есть бюджет на использование облачных GPU. Здесь на помощь приходит ClearML Agent.
Вкратце: каждый эксперимент, отслеживаемый менеджером экспериментов, содержит достаточно информации, чтобы воспроизвести его на другой машине (установленные пакеты, незафиксированные изменения и т. д.). Поэтому агент ClearML делает именно это: он прослушивает очередь входящих заданий и, когда находит одно из них, воссоздает среду и запускает его, продолжая сообщать скаляры, графики и т. д. менеджеру экспериментов.
Вы можете превратить любую машину (облачную виртуальную машину, локальную машину GPU , ваш собственный ноутбук) в агента ClearML , просто запустив его:
демон clearml--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 при обнаружении экспериментов в очереди. Как только задания будут обработаны, автомасштабатор автоматически отключит удаленные машины, и вы перестанете платить! Посмотрите видео о начале работы с автомасштабировщиком ниже.