Перейти к содержимому

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

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.

Установка

Чтобы установить необходимые пакеты, выполни:

Установка

# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

Использование

Использование

from ultralytics import YOLO

# Load a YOLO11n model
model = YOLO("yolo11n.pt")

# Start tuning hyperparameters for YOLO11n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() Параметры метода

The tune() Метод в YOLO11 предоставляет простой в использовании интерфейс для настройки гиперпараметров с помощью Ray Tune. Он принимает несколько аргументов, которые позволяют тебе настроить процесс настройки. Ниже приведено подробное объяснение каждого параметра:

ПараметрТипОписаниеЗначение по умолчанию
datastrThe 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.
spacedict, optionalСловарь, определяющий пространство поиска гиперпараметров для Ray Tune. Каждый ключ соответствует имени гиперпараметра, а значение задает диапазон значений, которые нужно исследовать при настройке. Если его не указать, YOLO11 использует пространство поиска по умолчанию с различными гиперпараметрами.
grace_periodint, optionalThe 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_trialint, optionalКоличество графических процессоров, которое нужно выделить на каждое испытание при настройке. Это помогает управлять использованием GPU , особенно в мультиGPU окружении. Если это значение не указано, тюнер будет использовать все доступные GPU.Нет
iterationsint, optionalМаксимальное количество испытаний, которые нужно провести во время настройки. Этот параметр помогает контролировать общее количество тестируемых комбинаций гиперпараметров, гарантируя, что процесс настройки не будет идти бесконечно.10
**train_argsdict, 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().

ПараметрДиапазон значенийОписание
lr0tune.uniform(1e-5, 1e-1)Initial learning rate
lrftune.uniform(0.01, 1.0)Итоговый коэффициент скорости обучения
momentumtune.uniform(0.6, 0.98)Momentum
weight_decaytune.uniform(0.0, 0.001)Снижение веса
warmup_epochstune.uniform(0.0, 5.0)Эпохи разминки
warmup_momentumtune.uniform(0.0, 0.95)Разминочный импульс
boxtune.uniform(0.02, 0.2)Коробка для похудения
clstune.uniform(0.2, 4.0)Вес для потери класса
hsv_htune.uniform(0.0, 0.1)Диапазон увеличения оттенков
hsv_stune.uniform(0.0, 0.9)Диапазон увеличения насыщенности
hsv_vtune.uniform(0.0, 0.9)Значение (яркость) диапазона увеличения
degreestune.uniform(0.0, 45.0)Диапазон увеличения вращения (градусы)
translatetune.uniform(0.0, 0.9)Диапазон увеличения перевода
scaletune.uniform(0.0, 0.9)Диапазон увеличения масштаба
sheartune.uniform(0.0, 10.0)Диапазон увеличения сдвига (градусы)
perspectivetune.uniform(0.0, 0.001)Перспективный диапазон увеличения
flipudtune.uniform(0.0, 1.0)Вероятность увеличения вертикального флипа
fliplrtune.uniform(0.0, 1.0)Вероятность увеличения горизонтального флипа
mosaictune.uniform(0.0, 1.0)Вероятность увеличения мозаики
mixuptune.uniform(0.0, 1.0)Вероятность увеличения смешивания
copy_pastetune.uniform(0.0, 1.0)Вероятность увеличения с помощью копи-паста

Пример пользовательского пространства поиска

В этом примере мы продемонстрируем, как использовать пользовательское пространство поиска для настройки гиперпараметров с помощью Ray Tune и YOLO11. Задав пользовательское пространство поиска, ты сможешь сфокусировать процесс настройки на определенных гиперпараметрах, представляющих интерес.

Использование

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo11n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-1)},
    epochs=50,
    use_ray=True,
)

В приведенном выше фрагменте кода мы создаем модель 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()

Базовый анализ на уровне экспериментов

Получи обзор того, как проходили испытания. Ты можешь быстро проверить, не было ли ошибок во время испытаний.

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

Базовый анализ на уровне испытаний

Получи доступ к конфигурациям гиперпараметров отдельных испытаний и последним отчетным метрикам.

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, выполни следующие шаги:

  1. Установи необходимые пакеты:

    pip install -U ultralytics "ray[tune]"
    pip install wandb  # optional for logging
    
  2. Загрузи свою модель YOLO11 и приступай к настройке:

    from ultralytics import YOLO
    
    # Load a YOLO11 model
    model = YOLO("yolo11n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

При этом используются продвинутые стратегии поиска и параллелизм Ray Tune, чтобы эффективно оптимизировать гиперпараметры твоей модели. За дополнительной информацией обращайся к документации по Ray Tune.

Какие гиперпараметры по умолчанию используются для настройки YOLO11 с помощью Ray Tune?

Ultralytics YOLO11 использует следующие гиперпараметры по умолчанию для настройки с помощью Ray Tune:

ПараметрДиапазон значенийОписание
lr0tune.uniform(1e-5, 1e-1)Начальная скорость обучения
lrftune.uniform(0.01, 1.0)Итоговый коэффициент скорости обучения
momentumtune.uniform(0.6, 0.98)Momentum
weight_decaytune.uniform(0.0, 0.001)Снижение веса
warmup_epochstune.uniform(0.0, 5.0)Эпохи разминки
boxtune.uniform(0.02, 0.2)Коробка для похудения
clstune.uniform(0.2, 4.0)Вес для потери класса
hsv_htune.uniform(0.0, 0.1)Диапазон увеличения оттенков
translatetune.uniform(0.0, 0.9)Диапазон увеличения перевода

Эти гиперпараметры можно настроить под твои конкретные нужды. Полный список и более подробную информацию ты найдешь в руководстве по настройке гиперпараметров.

Как интегрировать Weights & Biases с тюнингом модели YOLO11?

Чтобы интегрировать Weights & Biases (W&B) с твоим процессом тюнинга Ultralytics YOLO11:

  1. Установи W&B:

    pip install wandb
    
  2. Измени свой скрипт тюнинга:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo11n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

Эта настройка позволит тебе контролировать процесс настройки, отслеживать конфигурации гиперпараметров и визуализировать результаты в 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)

Это позволяет настроить диапазон гиперпараметров, таких как начальная скорость обучения и импульс, которые будут исследоваться в процессе настройки. О расширенных настройках читай в разделе " Пример пользовательского пространства поиска ".

📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии