Безопасность корпоративного уровня: Соответствует стандартам ISO 27001 и SOC 2 Type I.

Link to this sectionОбучение на AMD GPU с Ultralytics YOLO и ROCm#

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

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

Link to this sectionСводка поддержки#

В этой таблице описывается пакет 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; это стандартное выполнение на процессоре, а не специфичный для AMD ускоряющий бэкенд.
Сначала проверь совместимость AMD и PyTorch

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

Link to this sectionПочему в ROCm используются имена устройств CUDA#

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

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

Важно

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

Link to this sectionУстанови 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, имя устройства должно соответствовать твоему AMD GPU, а torch.version.hip должен сообщать версию HIP, предоставляемую сборкой ROCm.

Link to this sectionОбучение на 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

Link to this sectionСовместимость с 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

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

Link to this sectionMIGraphX#

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

Link to this sectionDirectML#

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

Link to this sectionRyzen AI NPU#

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

Link to this sectionУстранение неполадок#

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

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

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

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

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

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

Link to this sectionРезюме#

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

Участники

Комментарии