Введение
YOLOv8, разработанный компанией Ultralytics в 2023 году, стал одним из уникальных алгоритмов обнаружения объектов в серии YOLO и обладает значительными архитектурными и производительными улучшениями по сравнению с его предшественниками, такими как YOLOv5. Эти улучшения включают в себя основу CSPNet для лучшей извлечения признаков, шею FPN+PAN для улучшенного обнаружения объектов на разных масштабах и переход к безякорному подходу. Эти изменения значительно повышают точность, эффективность и удобство модели для обнаружения объектов в реальном времени.
Использование GPU с YOLOv8 может значительно повысить производительность задач обнаружения объектов, обеспечивая более быстрое обучение и вывод. Этот гид проведет вас через процесс настройки YOLOv8 для использования с GPU, включая конфигурацию, устранение неполадок и советы по оптимизации.
YOLOv8
YOLOv8 строится на основе своих предшественников с помощью современных дизайнов нейронных сетей и техник обучения для повышения производительности в обнаружении объектов. Он объединяет локализацию и классификацию объектов в одном эффективном фреймворке, балансируя скорость и точность. Архитектура состоит из трех ключевых компонентов:
- Основная сеть: Высоко оптимизированная CNN основная сеть, возможно основанная на CSPDarknet, извлекает многоуровневые признаки с использованием эффективных слоев, таких как глубинноразделяемые свертки, обеспечивая высокую производительность с минимальными вычислительными затратами.
- Шея: Улучшенная Сеть агрегации путей (PANet) уточняет и интегрирует многоуровневые признаки для лучшего обнаружения объектов различного размера. Она оптимизирована для эффективности и использования памяти.
- Голова: Безякорная голова предсказывает ограничивающие рамки, оценки уверенности и классовые метки, упрощая предсказания и улучшая адаптивность к разнообразным формам и масштабам объектов.
Эти новшества делают YOLOv8 быстрее, точнее и универсальнее для современных задач обнаружения объектов. Более того, YOLOv8 вводит безякорный подход к предсказанию ограничивающих рамок, отходя от методов, основанных на якорях, предыдущих версий.
Почему использовать GPU с YOLOv8?
YOLOv8 (You Only Look Once, версия 8) — это мощный фреймворк для обнаружения объектов. Хотя он работает на ЦП, использование GPU предоставляет несколько ключевых преимуществ, таких как:
- Скорость: GPU обрабатывают параллельные вычисления более эффективно, что сокращает время обучения и вывода.
- Масштабируемость: Большие наборы данных и модели легко управляемы с помощью GPU.
- Повышенная производительность: Обнаружение объектов в реальном времени становится возможным, что позволяет применять такие технологии, как автономные транспортные средства, наблюдение и обработка живого видео.
GPU — очевидный выбор для достижения более быстрых результатов и решения более сложных задач с помощью YOLOv8.
ЦП против GPU
При работе с YOLOv8 или любой моделью обнаружения объектов, выбор между ЦП и ГП может значительно повлиять на производительность модели как при обучении, так и при выводе. ЦП, как мы знаем, отлично подходят для общих задач и могут эффективно обрабатывать небольшие задания. Однако ЦП терпят неудачу, когда задача становится вычислительно затратной. Задачи, такие как обнаружение объектов, требуют скорости и параллельных вычислений, и ГП специально разработаны для обработки высокопроизводительных параллельных задач. Следовательно, они идеально подходят для запуска моделей глубокого обучения, таких как YOLO. Например, обучение и вывод на ГП могут быть в 10–50 раз быстрее, чем на ЦП, в зависимости от аппаратного обеспечения и размера модели.
Aspect | CPU | GPU |
---|---|---|
Время вывода (на изображение) | ~500 мс | ~15 мс |
Скорость обучения (эпох/час) | ~2 эпохи/час | ~30 эпох/час |
Возможность размера пакета | Небольшой (2-4 изображения) | Большой (16-32 изображения) |
Производительность в реальном времени | Нет | Да |
Параллельная обработка | Ограниченная | Отличная (тысячи ядер) |
Энергоэффективность | Ниже для больших задач | Выше для параллельных нагрузок |
Экономическая эффективность | Подходит для небольших задач | Идеально подходит для любых задач глубокого обучения |
Разница становится еще более заметной во время обучения, когда GPU значительно сокращают эпохи по сравнению с ЦП. Этот прирост скорости позволяет GPU обрабатывать более крупные наборы данных и выполнять обнаружение объектов в реальном времени более эффективно.
Предпосылки для использования YOLOv8 с GPU
Перед настройкой YOLOv8 для GPU убедитесь, что вы соответствуете следующим требованиям:
1. Аппаратные требования
- GPU NVIDIA: YOLOv8 зависит от CUDA для ускорения работы с GPU, поэтому вам понадобится GPU NVIDIA с CUDA Compute Capability 6.0 или выше.
- Память: Рекомендуется иметь как минимум 8 ГБ видеопамяти для умеренных наборов данных. Для более крупных наборов данных желательно иметь 16 ГБ или более.
2. Программные требования
- Python: Версия 3.8 или более поздняя.
- PyTorch: Установлен с поддержкой GPU (через CUDA). Предпочтительно NVIDIA GPU.
- CUDA Toolkit и cuDNN: Убедитесь, что они совместимы с вашей версией PyTorch.
- YOLOv8: Можно установить из репозитория Ultralytics.
3. Требования к драйверам
- Скачайте и установите последние драйверы NVIDIA с веб-сайта NVIDIA.
- Проверьте доступность вашего GPU после установки драйвера с помощью
nvidia-smi
.
Пошаговое руководство по настройке YOLOv8 для GPU
1. Установка драйверов NVIDIA
Для установки драйверов NVIDIA:
- Определите свой GPU, используя следующий код:
- Посетите страницу Скачивание драйверов NVIDIA и загрузите подходящий драйвер.
- Следуйте инструкциям по установке для вашей операционной системы.
- Перезагрузите компьютер, чтобы применить изменения.
- Проверьте установку, выполнив:
- Эта команда отображает информацию о GPU и подтверждает работоспособность драйвера.
2. Установите CUDA Toolkit и cuDNN
Чтобы использовать YOLOv8, нам нужно выбрать подходящую версию PyTorch, которая, в свою очередь, требует версию CUDA.
Шаги для установки CUDA Toolkit
- Скачайте подходящую версию CUDA Toolkit с сайта разработчиков NVIDIA.
- Установите CUDA Toolkit и настройте переменные окружения (например,
PATH
,LD_LIBRARY_PATH
). - Проверьте установку, выполнив:
Обеспечение наличия последней версии CUDA позволит PyTorch эффективно использовать GPU
Шаги для установки cuDNN
- Скачайте cuDNN с сайта NVIDIA Developer.
- Извлеките содержимое и скопируйте его в соответствующие директории CUDA (например,
bin
,include
,lib
). - Убедитесь, что версия cuDNN соответствует вашей установке CUDA.
3. Установите PyTorch с поддержкой GPU
Чтобы установить PyTorch с поддержкой GPU, посетите страницу “Начало работы с PyTorch” и выберите соответствующую команду установки. Например:
4. Установите и запустите YOLOv8
Установите YOLOv8, следуя этим шагам:
- Установите Ultralytics для работы с yolov8 и импортируйте необходимые библиотеки
- Пример для Python-скрипта:
- Пример для командной строки:
5. Проверьте конфигурацию GPU в YOLOv8
Используйте следующую команду Python, чтобы проверить, обнаружен ли ваш GPU и включен ли CUDA:
6. Обучение или инференс с использованием GPU
Укажите устройство как cuda
в ваших командах обучения или инференса:
Пример командной строки
Проверьте пользовательскую модель
Пример Python-скрипта
Почему GPU Droplets от DigitalOcean?
GPU droplets от DigitalOcean предназначены для выполнения высокопроизводительных задач в области ИИ и машинного обучения. Эти GPU Droplets работают на H100, что обеспечивает исключительную скорость и параллельные вычислительные возможности, делая их идеальными для эффективного обучения и запуска моделей YOLOv8. Более того, эти дроплеты предварительно установлены с последней версией CUDA, что позволяет вам начать использовать ускорение GPU без затрат времени на ручную настройку. Эта оптимизированная среда позволяет вам полностью сосредоточиться на оптимизации ваших моделей YOLOv8 и без усилий масштабировать ваши проекты.
Устранение распространенных проблем
1. YOLOv8 не использует GPU
- Проверьте доступность GPU с помощью
- Проверьте совместимость CUDA и PyTorch.
- Убедитесь, что вы указали
device=0
илиdevice='cuda'
в командах или скриптах. - Обновите драйверы NVIDIA и переустановите CUDA Toolkit при необходимости.
2. Ошибки CUDA
- Убедитесь, что версия CUDA Toolkit соответствует требованиям PyTorch.
- Проверьте установку cuDNN, запустив диагностические скрипты.
- Проверьте переменные окружения для CUDA (
PATH
иLD_LIBRARY_PATH
).
3. Медленная производительность
- Включите обучение с переменной точностью для оптимизации использования памяти и скорости:
- Сократите размер пакета, если использование памяти слишком велико.
- Убедитесь, что у вас оптимизированная система для выполнения параллельной обработки, и подумайте о использовании пакетной обработки в вашем скрипте обнаружения для повышения производительности.
Часто задаваемые вопросы
Как включить GPU для YOLOv8?
Укажите device='cuda'
или device=0
(если используете первый GPU) в ваших командах или скриптах при загрузке модели. Это позволит YOLOv8 использовать GPU для более быстрой обработки во время инференса и обучения. Убедитесь, что ваш GPU правильно настроен и обнаружен.
Почему YOLOv8 не использует мой GPU?
YOLOv8 может не использовать GPU, если есть проблемы с аппаратным обеспечением, драйверами или настройкой.
Для начала проверьте установку CUDA и совместимость с PyTorch. Обновите драйвера, если это необходимо. Убедитесь, что ваши CUDA и CuDNN совместимы с вашей установкой PyTorch.
Установите torchvision и проверьте, какая конфигурация устанавливается и используется.
Кроме того, если PyTorch не установлен с поддержкой GPU (например, версия только для CPU), параметр device
в ваших командах YOLOv8 может не быть явно установлен на cuda
. Запуск YOLOv8 на системе без совместимого с CUDA GPU или с недостаточным объемом видеопамяти также может привести к тому, что он по умолчанию будет использовать CPU.
Чтобы решить эту проблему, убедитесь, что ваш GPU совместим с CUDA, проверьте установку всех необходимых зависимостей, убедитесь, что torch.cuda.is_available()
возвращает True
, и явно укажите параметр device='cuda'
в ваших скриптах или командах YOLOv8.
Каковы аппаратные требования для YOLOv8 на GPU?
Для эффективной установки и запуска YOLOv8 на GPU рекомендуется использовать Python 3.7 или выше, а также необходим GPU, совместимый с CUDA, для использования аппаратного ускорения.
Рекомендуется современный NVIDIA GPU с как минимум 8 ГБ памяти. Для больших наборов данных полезно больше памяти. Для оптимальной производительности рекомендуется использовать Python 3.8 или новее, PyTorch 1.10 или выше, и NVIDIA GPU, совместимый с CUDA 11.2+. GPU должен иметь как минимум 8 ГБ видеопамяти (VRAM) для эффективной работы со средними наборами данных, хотя больше VRAM будет полезно для больших наборов данных и сложных моделей. Кроме того, ваша система должна иметь как минимум 8 ГБ оперативной памяти и 50 ГБ свободного места на диске для хранения наборов данных и облегчения обучения модели. Обеспечение этих аппаратных и программных конфигураций поможет вам достичь более быстрого обучения и вывода с YOLOv8, особенно для вычислительно интенсивных задач.
Обратите внимание: AMD GPU могут не поддерживать CUDA, поэтому выбор NVIDIA GPU для совместимости с YOLOv8 имеет решающее значение.
Может ли YOLOv8 работать на нескольких GPU?
Чтобы обучить YOLOv8 с использованием нескольких GPU, вы можете использовать DataParallel от PyTorch или указать несколько устройств напрямую (например, cuda:0,1
). Для распределенного обучения YOLOv8 по умолчанию использует Multi-GPU DistributedDataParallel (DDP) от PyTorch. Убедитесь, что в вашей системе доступно несколько GPU, и укажите GPU, которые вы хотите использовать, в скрипте обучения или командной строке. Например, задайте --device 0,1,2,3
в CLI или device=[0,1,2,3]
в Python, чтобы использовать GPU 0, 1, 2 и 3. YOLOv8 автоматически обрабатывает параллельное обучение на указанных GPU без необходимости явного аргумента data_parallel
. В то время как все GPU используются во время обучения, фаза валидации обычно выполняется на одном GPU по умолчанию, поскольку она менее ресурсоемка, чем обучение.
Как мне оптимизировать YOLOv8 для вывода на GPU?
Включите смешанную точность и настройте размеры пакетов, чтобы сбалансировать память и скорость. В зависимости от вашего набора данных, обучение YOLOv8 требует значительной вычислительной мощности для эффективной работы. Используйте меньшую или квантованную модель (например, YOLOv8n или версии с квантованием INT8), чтобы сократить использование памяти и время вывода. В вашем скрипте вывода явно установите параметр device
на cuda
для выполнения на GPU. Используйте такие техники, как пакетная обработка, чтобы обрабатывать несколько изображений одновременно и максимизировать использование GPU. Если это применимо, используйте TensorRT для дальнейшей оптимизации модели для более быстрого вывода на GPU. Регулярно контролируйте память и производительность GPU, чтобы обеспечить эффективное использование ресурсов.
Ниже приведенный фрагмент кода позволит вам обрабатывать изображения параллельно в рамках заданного размера пакета.
Если вы используете CLI, укажите размер пакета с помощью -b или –batch-size. С помощью Python убедитесь, что аргумент пакета правильно установлен при инициализации вашей модели или вызове метода предсказания.
Как решить проблемы с нехваткой памяти CUDA?
Чтобы устранить ошибки переполнения памяти CUDA, уменьшите размер пакета валидации в файле конфигурации YOLOv8, так как меньшие пакеты требуют меньше памяти GPU. Кроме того, если у вас есть доступ к нескольким GPU, рассмотрите возможность распределения нагрузки валидации между ними с использованием DistributedDataParallel
PyTorch или аналогичного функционала, хотя это требует углубленных знаний PyTorch. Вы также можете попробовать очистить кэшированную память, используя torch.cuda.empty_cache()
в вашем скрипте, и убедиться, что на вашем GPU не работают ненужные процессы. Обновление до GPU с большим количеством VRAM или оптимизация вашей модели и набора данных для эффективного использования памяти — это дальнейшие шаги для смягчения таких проблем.
Заключение
Настройка YOLOv8 для использования GPU — это простой процесс, который может значительно повысить производительность. Следуя этому подробному руководству, вы сможете ускорить обучение и вывод для ваших задач обнаружения объектов. Оптимизируйте свою конфигурацию, устраняйте распространенные проблемы и разблокируйте весь потенциал YOLOv8 с помощью ускорения на GPU.
Ссылки
Source:
https://www.digitalocean.com/community/tutorials/yolov8-for-gpu-accelerate-object-detection