Ultralytics YOLO27:

Обучение на GPU AMD с Ultralytics YOLO и ROCm#

Ultralytics поддерживает обучение, валидацию и инференс на совместимых GPU AMD через PyTorch ROCm. PyTorch намеренно предоставляет устройства ROCm через тот же torch.cuda API Python, который используется CUDA, поэтому для нативных моделей PyTorch Ultralytics не нужен отдельный тип устройства rocm. Установи сборку PyTorch с поддержкой ROCm, а затем выбери GPU AMD с помощью стандартного синтаксиса device=0 или device=cuda:0.

AMD также предлагает технологии инференса, не связанные с PyTorch ROCm. Поддержка одного продукта AMD не означает поддержку всех сред выполнения или ускорителей AMD.

Краткий обзор поддержки#

В этой таблице описан пакет Ultralytics для Python, используемый для обучения, валидации, экспорта и предсказаний.

Продукт или среда выполнения AMDПоддержка UltralyticsИспользование или статус
AMD Instinct и поддерживаемые GPU Radeon с ROCm✅Обучай и валидируй модели PyTorch, а также запускай их с помощью device=0 или device=cuda:0.
Много-GPU ROCm✅Используй device=0,1 или device=[0, 1]; распределённое выполнение зависит от установленного стека PyTorch ROCm.
Автоматическая смешанная точность (AMP) в ROCm⚠️Доступно, если установленные версии PyTorch и ROCm проходят проверки AMP в Ultralytics; при несовместимости используй amp=False.
Экспорт ONNX✅Экспорт поддерживается, но сам по себе файл ONNX не обеспечивает ускорение на оборудовании AMD.
Инференс MIGraphX🚧В текущем пакете Python недоступен; работа над реализацией отслеживается в PR #24137.
Образ AMD Docker и CI на оборудовании AMD🚧Эта работа также отслеживается в PR #24137 и не обеспечивается одним лишь выбором устройства ROCm.
Windows DirectML❌ PythonВ пакете Python нет бэкенда DirectML для обучения или предсказаний.
NPU Ryzen AI❌Нативной интеграции Ultralytics с NPU нет; внешние сценарии работы с ONNX/Vitis AI поддерживаются сообществом.
CPU AMD✅ CPUИспользуй device=cpu; это стандартное выполнение на CPU, а не бэкенд ускорения, специфичный для AMD.
Сначала проверь совместимость AMD и PyTorch

Доступность ROCm зависит от конкретной модели GPU, операционной системы, версии ROCm и сборки PyTorch. Перед установкой проверь оборудование в матрице совместимости ROCm AMD. Ultralytics не может добавить поддержку устройства, которое установленная сборка PyTorch ROCm не предоставляет.

Почему ROCm использует имена устройств CUDA#

Сборка PyTorch с поддержкой ROCm использует HIP внутри, но намеренно повторно применяет интерфейсы torch.cuda. Например, torch.cuda.is_available(), torch.cuda.device_count() и torch.cuda.get_device_name() работают с поддерживаемыми GPU AMD. Благодаря этому одна и та же процедура обучения Ultralytics работает с NVIDIA CUDA и AMD ROCm без дублирующего бэкенда.

Подробнее см. официальное описание семантики HIP в PyTorch.

Важно

В пакете Python используй device=0 или device=cuda:0 для PyTorch ROCm. Не используй device=rocm:0; rocm — это не тип устройства PyTorch.

Установка PyTorch ROCm#

  1. Убедись, что твоя операционная система и GPU указаны в матрице совместимости ROCm.

  2. В средстве выбора параметров установки PyTorch выбери сборку ROCm, соответствующую установленной версии ROCm.

  3. Установи Ultralytics после PyTorch:

    pip install ultralytics
  4. Убедись, что PyTorch видит GPU AMD:

    import torch
    
    print(torch.cuda.is_available())
    print(torch.cuda.get_device_name(0))
    print(torch.version.hip)

torch.cuda.is_available() должен вернуть True, имя устройства должно указывать на твой GPU AMD, а torch.version.hip должен сообщать версию HIP, предоставляемую сборкой ROCm.

Обучение на GPU AMD#

Используй те же аргументы устройства, что и в стандартном режиме обучения Ultralytics.

Обучение с ROCm
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Обучение на первом GPU AMD, доступном через PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Обучение на двух GPU AMD
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

Для валидации и предсказаний используется тот же выбор устройства:

yolo detect val model=path/to/best.pt data=coco8.yaml device=0
yolo predict model=path/to/best.pt source=path/to/image.jpg device=0

Совместимость AMP#

Ultralytics включает AMP по умолчанию и сравнивает результаты в полной и смешанной точности перед обучением. Если проверка обнаруживает несовместимые результаты, AMP отключается, чтобы предотвратить потери NaN или обучение с нулевым mAP. Поведение AMP в ROCm может меняться в зависимости от версий PyTorch и ROCm, поэтому при устранении проблем, специфичных для стека, используй amp=False:

yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=False

Функции, которые пока не поддерживаются#

MIGraphX#

MIGraphX — это среда выполнения AMD для оптимизации графов и инференса. В текущий пакет Python Ultralytics не входит нативная загрузка моделей MIGraphX. Текущая работа над реализацией, контейнер AMD, зависимости, тесты и документация отслеживаются вместе в PR #24137. Пока эта работа не будет включена и проверена на оборудовании AMD, экспорт модели ONNX не следует представлять как нативную поддержку MIGraphX в пакете Python.

DirectML#

В пакете Python Ultralytics нет бэкенда DirectML для обучения или предсказаний в Windows. DirectML отличается от ROCm, и работающая среда ROCm не включает device=directml.

NPU Ryzen AI#

NPU Ryzen AI не доступны через PyTorch ROCm и не являются нативными устройствами Ultralytics. В сценариях, поддерживаемых сообществом, модели YOLO можно экспортировать в ONNX и запускать с помощью внешних инструментов AMD Ryzen AI или Vitis AI, но такая среда выполнения, преобразование и совместимость оборудования находятся за пределами поддерживаемого пути выполнения Ultralytics.

Итоги#

Для обучения, валидации и инференса на поддерживаемых GPU AMD используй совместимую сборку PyTorch ROCm с device=0 или device=cuda:0. Рассматривай MIGraphX, DirectML и NPU Ryzen AI как отдельные возможности: ни одна из них не становится доступной только благодаря установке ROCm или экспорту модели ONNX.

Часто задаваемые вопросы#

  • Установленный пакет PyTorch может быть сборкой для CPU или CUDA либо GPU может не поддерживаться активным стеком ROCm. Установи соответствующую сборку ROCm с помощью средства выбора PyTorch и проверь GPU по матрице совместимости AMD.

  • Это ожидаемое поведение. PyTorch ROCm намеренно использует API torch.cuda и строки устройств в стиле CUDA для совместимости с Python. При этом модель выполняется на GPU AMD через HIP и ROCm.

  • Нет. ONNX — это переносимый формат модели. Для ускоренного выполнения по-прежнему нужна совместимая среда выполнения, а нативные бэкенды MIGraphX, DirectML и NPU Ryzen AI не входят в текущий пакет Python Ultralytics.

Участники

Комментарии