YOLO Vision 2026:

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

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

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

Сводка поддержки#

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

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

    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.

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

Используй те же аргументы устройств, что и в стандартном режиме обучения 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. Поведение ROCm AMP может изменяться в зависимости от версий PyTorch и ROCm, поэтому используй amp=False при устранении неполадок, специфичных для стека:

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

Пока не поддерживаемые функции#

MIGraphX#

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

DirectML#

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

Ryzen AI NPU#

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

Устранение неполадок#

Почему torch.cuda.is_available() возвращает False на моей системе AMD?#

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

Почему Ultralytics пишет CUDA, когда у меня AMD GPU?#

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

Включает ли экспорт ONNX поддержку MIGraphX или Ryzen AI автоматически?#

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

Резюме#

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

Участники

Комментарии