YOLO Vision 2026:

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

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

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

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

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

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

Подробнее см. в официальном описании семантики 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")

# Train on the first AMD GPU exposed by PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Train across two AMD GPUs
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 — runtime AMD для оптимизации графов и инференса. Загрузка моделей MIGraphX не включена в текущий Python-пакет Ultralytics. Реализация, контейнер AMD, зависимости, тесты и документация совместно отслеживаются в PR #24137. Пока эта работа не будет объединена и не пройдёт валидацию на оборудовании AMD, экспорт модели ONNX не следует описывать как нативную поддержку MIGraphX в Python-пакете.

DirectML#

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

NPU Ryzen AI#

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

Итоги#

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

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

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

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

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

Участники

Комментарии