Efficient Hyperparameter Tuning with Ray Tune and YOLO11
Настройка гиперпараметров жизненно важна для достижения максимальной производительности модели путем обнаружения оптимального набора гиперпараметров. Это включает в себя запуск испытаний с различными гиперпараметрами и оценку производительности каждого испытания.
Ускорь тюнинг с помощью Ultralytics YOLO11 и Ray Tune
Ultralytics YOLO11 incorporates Ray Tune for hyperparameter tuning, streamlining the optimization of YOLO11 model hyperparameters. With Ray Tune, you can utilize advanced search strategies, parallelism, and early stopping to expedite the tuning process.
Рэй Тьюн
Ray Tune is a hyperparameter tuning library designed for efficiency and flexibility. It supports various search strategies, parallelism, and early stopping strategies, and seamlessly integrates with popular machine learning frameworks, including Ultralytics YOLO11.
Интеграция с Weights & Biases
YOLO11 also allows optional integration with Weights & Biases for monitoring the tuning process.
Установка
Чтобы установить необходимые пакеты, выполни:
Установка
Использование
Использование
tune()
Параметры метода
The tune()
Метод в YOLO11 предоставляет простой в использовании интерфейс для настройки гиперпараметров с помощью Ray Tune. Он принимает несколько аргументов, которые позволяют тебе настроить процесс настройки. Ниже приведено подробное объяснение каждого параметра:
Параметр | Тип | Описание | Значение по умолчанию |
---|---|---|---|
data | str | The dataset configuration file (in YAML format) to run the tuner on. This file should specify the training and validation data paths, as well as other dataset-specific settings. | |
space | dict, optional | Словарь, определяющий пространство поиска гиперпараметров для Ray Tune. Каждый ключ соответствует имени гиперпараметра, а значение задает диапазон значений, которые нужно исследовать при настройке. Если его не указать, YOLO11 использует пространство поиска по умолчанию с различными гиперпараметрами. | |
grace_period | int, optional | The grace period in epochs for the ASHA scheduler in Ray Tune. The scheduler will not terminate any trial before this number of epochs, allowing the model to have some minimum training before making a decision on early stopping. | 10 |
gpu_per_trial | int, optional | Количество графических процессоров, которое нужно выделить на каждое испытание при настройке. Это помогает управлять использованием GPU , особенно в мультиGPU окружении. Если это значение не указано, тюнер будет использовать все доступные GPU. | Нет |
iterations | int, optional | Максимальное количество испытаний, которые нужно провести во время настройки. Этот параметр помогает контролировать общее количество тестируемых комбинаций гиперпараметров, гарантируя, что процесс настройки не будет идти бесконечно. | 10 |
**train_args | dict, optional | Дополнительные аргументы, которые нужно передать в train() method during tuning. These arguments can include settings like the number of training epochs, размер партии, and other training-specific configurations. | {} |
Настроив эти параметры, ты сможешь точно настроить процесс оптимизации гиперпараметров под свои конкретные нужды и имеющиеся вычислительные ресурсы.
Описание пространства поиска по умолчанию
В следующей таблице перечислены параметры пространства поиска по умолчанию для настройки гиперпараметров в YOLO11 с помощью Ray Tune. Каждый параметр имеет свой диапазон значений, определяемый tune.uniform()
.
Параметр | Диапазон значений | Описание |
---|---|---|
lr0 | tune.uniform(1e-5, 1e-1) | Initial learning rate |
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 предлагает множество преимуществ для оптимизации гиперпараметров:
- Продвинутые стратегии поиска: Используй такие алгоритмы, как байесовская оптимизация и HyperOpt, для эффективного поиска параметров.
- Параллелизм: Поддерживает параллельное выполнение нескольких испытаний, что значительно ускоряет процесс настройки.
- Ранняя остановка: Используй стратегии вроде ASHA для раннего прекращения малоэффективных испытаний, экономя вычислительные ресурсы.
Ray Tune seamlessly integrates with Ultralytics YOLO11, providing an easy-to-use interface for tuning hyperparameters effectively. To get started, check out the Efficient Hyperparameter Tuning with Ray Tune and YOLO11 guide.
Как определить пользовательское пространство поиска для настройки гиперпараметров 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)
Это позволяет настроить диапазон гиперпараметров, таких как начальная скорость обучения и импульс, которые будут исследоваться в процессе настройки. О расширенных настройках читай в разделе " Пример пользовательского пространства поиска ".