Перейти к содержанию

Эффективная настройка гиперпараметров с помощью Ray Tune и YOLO11

Настройка гиперпараметров необходима для достижения максимальной производительности модели путем нахождения оптимального набора гиперпараметров. Для этого необходимо провести испытания с различными гиперпараметрами и оценить эффективность каждого испытания.

Ускоренный тюнинг с Ultralytics YOLO11 и Ray Tune

Ultralytics YOLO11 включает Ray Tune для настройки гиперпараметров, что упрощает оптимизацию гиперпараметров модели YOLO11 . С помощью Ray Tune вы можете использовать расширенные стратегии поиска, параллелизм и раннюю остановку, чтобы ускорить процесс настройки.

Рэй Тьюн

Обзор Ray Tune

Ray Tune - это библиотека для настройки гиперпараметров, разработанная для обеспечения эффективности и гибкости. Она поддерживает различные стратегии поиска, параллелизм и стратегии ранней остановки, а также легко интегрируется с популярными фреймворками машинного обучения, включая Ultralytics YOLO11 .

Интеграция с Weights & Biases

YOLO11 также позволяет дополнительно интегрировать с Weights & Biases для мониторинга процесса настройки.

Установка

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

Установка

# 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() Параметры метода

Сайт 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. Задавая пользовательское пространство поиска, вы можете сфокусировать процесс настройки на определенных гиперпараметрах, представляющих интерес.

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

from ray import tune

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:

Параметр Диапазон значений Описание
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 :

  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 предлагает множество преимуществ для оптимизации гиперпараметров:

  • Передовые стратегии поиска: Использует такие алгоритмы, как 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)

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

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

Комментарии