Эффективная настройка гиперпараметров с помощью Ray Tune и YOLO11
Настройка гиперпараметров необходима для достижения максимальной производительности модели путем нахождения оптимального набора гиперпараметров. Для этого необходимо провести испытания с различными гиперпараметрами и оценить эффективность каждого испытания.
Ускоренный тюнинг с Ultralytics YOLO11 и Ray Tune
Ultralytics YOLO11 включает Ray Tune для настройки гиперпараметров, что упрощает оптимизацию гиперпараметров модели YOLO11 . С помощью Ray Tune вы можете использовать расширенные стратегии поиска, параллелизм и раннюю остановку, чтобы ускорить процесс настройки.
Рэй Тьюн
Ray Tune - это библиотека для настройки гиперпараметров, разработанная для обеспечения эффективности и гибкости. Она поддерживает различные стратегии поиска, параллелизм и стратегии ранней остановки, а также легко интегрируется с популярными фреймворками машинного обучения, включая Ultralytics YOLO11 .
Интеграция с Weights & Biases
YOLO11 также позволяет дополнительно интегрировать с Weights & Biases для мониторинга процесса настройки.
Установка
Чтобы установить необходимые пакеты, выполните команду:
Установка
Использование
Использование
tune()
Параметры метода
Сайт tune()
метод в YOLO11 предоставляет простой в использовании интерфейс для настройки гиперпараметров с помощью Ray Tune. Он принимает несколько аргументов, которые позволяют настроить процесс настройки. Ниже приведено подробное объяснение каждого параметра:
Параметр | Тип | Описание | Значение по умолчанию |
---|---|---|---|
data |
str |
Файл конфигурации набора данных (в формате YAML) для запуска тюнера. В этом файле должны быть указаны пути к обучающим и проверочным данным, а также другие настройки, специфичные для данного набора данных. | |
space |
dict, optional |
Словарь, определяющий пространство поиска гиперпараметров для Ray Tune. Каждый ключ соответствует имени гиперпараметра, а значение определяет диапазон значений, которые необходимо исследовать при настройке. Если значение не указано, YOLO11 использует пространство поиска по умолчанию с различными гиперпараметрами. | |
grace_period |
int, optional |
Период отсрочки в эпохах для планировщика ASHA в Ray Tune. Планировщик не будет завершать испытания раньше этого количества эпох, позволяя модели пройти минимальное обучение перед принятием решения о досрочном прекращении. | 10 |
gpu_per_trial |
int, optional |
Количество графических процессоров, выделяемых для каждого испытания при настройке. Это помогает управлять использованием GPU , особенно в мультиGPU окружении. Если это значение не указано, тюнер будет использовать все доступные GPU. | Нет |
iterations |
int, optional |
Максимальное количество испытаний, выполняемых в процессе настройки. Этот параметр помогает контролировать общее количество тестируемых комбинаций гиперпараметров, чтобы процесс настройки не длился бесконечно. | 10 |
**train_args |
dict, optional |
Дополнительные аргументы для передачи в train() метода во время настройки. Эти аргументы могут включать такие параметры, как количество эпох обучения, размер партии, а также другие конфигурации, специфичные для конкретного обучения. |
{} |
Настраивая эти параметры, вы можете точно настроить процесс оптимизации гиперпараметров в соответствии с вашими конкретными потребностями и имеющимися вычислительными ресурсами.
Описание пространства поиска по умолчанию
В следующей таблице перечислены параметры пространства поиска по умолчанию для настройки гиперпараметров в YOLO11 с помощью Ray Tune. Каждый параметр имеет свой диапазон значений, определяемый tune.uniform()
.
Параметр | Диапазон значений | Описание |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Начальная скорость обучения |
lrf |
tune.uniform(0.01, 1.0) |
Коэффициент конечной скорости обучения |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Снижение веса |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Эпохи разминки |
warmup_momentum |
tune.uniform(0.0, 0.95) |
Разминочный импульс |
box |
tune.uniform(0.02, 0.2) |
Потеря веса |
cls |
tune.uniform(0.2, 4.0) |
Вес потери класса |
hsv_h |
tune.uniform(0.0, 0.1) |
Диапазон увеличения оттенков |
hsv_s |
tune.uniform(0.0, 0.9) |
Диапазон увеличения насыщенности |
hsv_v |
tune.uniform(0.0, 0.9) |
Значение (яркость) диапазона увеличения |
degrees |
tune.uniform(0.0, 45.0) |
Диапазон увеличения вращения (градусы) |
translate |
tune.uniform(0.0, 0.9) |
Диапазон увеличения перевода |
scale |
tune.uniform(0.0, 0.9) |
Диапазон увеличения масштаба |
shear |
tune.uniform(0.0, 10.0) |
Диапазон увеличения сдвига (градусы) |
perspective |
tune.uniform(0.0, 0.001) |
Диапазон перспективного увеличения |
flipud |
tune.uniform(0.0, 1.0) |
Вероятность увеличения вертикального переворота |
fliplr |
tune.uniform(0.0, 1.0) |
Вероятность увеличения горизонтального флипа |
mosaic |
tune.uniform(0.0, 1.0) |
Вероятность увеличения мозаики |
mixup |
tune.uniform(0.0, 1.0) |
Вероятность увеличения путаницы |
copy_paste |
tune.uniform(0.0, 1.0) |
Вероятность увеличения при копировании-вставке |
Пример пользовательского пространства поиска
В этом примере мы демонстрируем, как использовать пользовательское пространство поиска для настройки гиперпараметров с помощью Ray Tune и YOLO11. Задавая пользовательское пространство поиска, вы можете сфокусировать процесс настройки на определенных гиперпараметрах, представляющих интерес.
Использование
В приведенном выше фрагменте кода мы создаем модель YOLO с предварительно обученными весами "yolo11n.pt". Затем мы вызываем tune()
метод, указав конфигурацию набора данных в файле "coco8.yaml". Мы предоставляем пользовательское пространство поиска для начальной скорости обучения lr0
используя словарь с ключом "lr0" и значением tune.uniform(1e-5, 1e-1)
. Наконец, мы передаем дополнительные аргументы обучения, такие как количество эпох, непосредственно методу tune в виде epochs=50
.
Обработка результатов настройки лучей
После проведения эксперимента по настройке гиперпараметров с помощью Ray Tune вы можете захотеть провести различные анализы полученных результатов. В этом руководстве мы рассмотрим общие рабочие процессы для обработки и анализа этих результатов.
Загрузка результатов экспериментов с мелодиями из каталога
После проведения эксперимента по настройке с tuner.fit()
Вы можете загрузить результаты из каталога. Это удобно, особенно если вы проводите анализ после выхода из начального обучающего сценария.
experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")
restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()
Базовый анализ на уровне эксперимента
Получите обзор результатов испытаний. Вы можете быстро проверить, не было ли ошибок во время испытаний.
Базовый анализ на уровне судебного разбирательства
Доступ к конфигурациям гиперпараметров отдельных испытаний и последним отчетным метрикам.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Построение графика всей истории отчетных показателей для испытания
Вы можете построить историю отчетных показателей для каждого испытания, чтобы увидеть, как показатели менялись с течением времени.
import matplotlib.pyplot as plt
for i, result in enumerate(result_grid):
plt.plot(
result.metrics_dataframe["training_iteration"],
result.metrics_dataframe["mean_accuracy"],
label=f"Trial {i}",
)
plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()
Резюме
В этой документации мы рассмотрели общие рабочие процессы для анализа результатов экспериментов, проведенных с помощью Ray Tune, используя Ultralytics. Основные шаги включают загрузку результатов эксперимента из каталога, выполнение базового анализа на уровне эксперимента и испытания и построение графиков метрик.
Чтобы получить максимальную отдачу от экспериментов по настройке гиперпараметров, загляните на страницу документации Ray Tune "Анализ результатов ".
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как настроить гиперпараметры модели YOLO11 с помощью Ray Tune?
Чтобы настроить гиперпараметры модели Ultralytics YOLO11 с помощью Ray Tune, выполните следующие действия:
-
Установите необходимые пакеты:
-
Загрузите модель YOLO11 и приступайте к настройке:
При этом используются передовые стратегии поиска и параллелизм Ray Tune для эффективной оптимизации гиперпараметров вашей модели. Для получения дополнительной информации ознакомьтесь с документацией по Ray Tune.
Какие гиперпараметры используются по умолчанию для настройки YOLO11 с помощью Ray Tune?
Ultralytics YOLO11 использует следующие гиперпараметры по умолчанию для настройки с помощью Ray Tune:
Параметр | Диапазон значений | Описание |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Начальная скорость обучения |
lrf |
tune.uniform(0.01, 1.0) |
Коэффициент конечной скорости обучения |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Снижение веса |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Эпохи разминки |
box |
tune.uniform(0.02, 0.2) |
Потеря веса |
cls |
tune.uniform(0.2, 4.0) |
Вес потери класса |
hsv_h |
tune.uniform(0.0, 0.1) |
Диапазон увеличения оттенков |
translate |
tune.uniform(0.0, 0.9) |
Диапазон увеличения перевода |
Эти гиперпараметры можно настроить в соответствии с вашими конкретными потребностями. Полный список и более подробную информацию можно найти в руководстве по настройке гиперпараметров.
Как я могу интегрировать Weights & Biases с моим YOLO11 для настройки модели?
Чтобы интегрировать Weights & Biases (W&B) в процесс тюнинга Ultralytics YOLO11 :
-
Установите W&B:
-
Измените свой скрипт настройки:
Эта настройка позволит вам контролировать процесс настройки, отслеживать конфигурации гиперпараметров и визуализировать результаты в W&B.
Почему стоит использовать Ray Tune для оптимизации гиперпараметров с помощью YOLO11?
Ray Tune предлагает множество преимуществ для оптимизации гиперпараметров:
- Передовые стратегии поиска: Использует такие алгоритмы, как Bayesian Optimization и HyperOpt, для эффективного поиска параметров.
- Параллелизм: Поддерживает параллельное выполнение нескольких испытаний, что значительно ускоряет процесс настройки.
- Ранняя остановка: Использует стратегии, подобные ASHA, для раннего прекращения неэффективных испытаний, что позволяет экономить вычислительные ресурсы.
Ray Tune легко интегрируется с Ultralytics YOLO11, предоставляя простой в использовании интерфейс для эффективной настройки гиперпараметров. Чтобы начать работу, ознакомьтесь с руководством по настройке гиперпараметров.
Как определить пользовательское пространство поиска для настройки гиперпараметров YOLO11 ?
Чтобы определить пользовательское пространство поиска для настройки гиперпараметров YOLO11 с помощью Ray Tune:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
Это позволяет настроить диапазон гиперпараметров, таких как начальная скорость обучения и импульс, которые будут исследоваться в процессе настройки. Расширенные настройки см. в разделе Пример пользовательского пространства поиска.