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 ускоряющий бэкенд. |
Доступность 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#
-
Убедись, что твоя операционная система и GPU указаны в матрице совместимости ROCm.
-
Используй инструмент выбора установки PyTorch, чтобы выбрать сборку ROCm, соответствующую твоей установленной версии ROCm.
-
Установи Ultralytics после PyTorch:
pip install ultralytics -
Убедись, что 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.
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=0Link 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=FalseLink 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.