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