YOLO Vision 2026:

Entrenamiento en GPU AMD con Ultralytics YOLO y ROCm#

Ultralytics admite el entrenamiento, la validación y la inferencia en GPU AMD compatibles mediante PyTorch ROCm. PyTorch expone intencionadamente los dispositivos ROCm mediante la misma API de Python torch.cuda que utiliza CUDA, por lo que Ultralytics no necesita un tipo de dispositivo rocm independiente para los modelos nativos de PyTorch. Instala una compilación de PyTorch con ROCm y, a continuación, selecciona una GPU AMD con la sintaxis estándar device=0 o device=cuda:0.

AMD también ofrece tecnologías de inferencia independientes de PyTorch ROCm. La compatibilidad con un producto de AMD no implica compatibilidad con todos los tiempos de ejecución o aceleradores de AMD.

Compatibilidad de un vistazo#

Esta tabla describe el paquete de Python de Ultralytics utilizado para el entrenamiento, la validación, la exportación y la predicción.

Producto o tiempo de ejecución de AMDCompatibilidad de UltralyticsUso o estado
AMD Instinct y GPU Radeon compatibles con ROCmEntrena, valida y ejecuta modelos nativos de PyTorch con device=0 o device=cuda:0.
ROCm con varias GPUUsa device=0,1 o device=[0, 1]; la ejecución distribuida sigue la pila de PyTorch ROCm instalada.
Automatic Mixed Precision (AMP) de ROCm⚠️Disponible cuando las versiones instaladas de PyTorch y ROCm superan las comprobaciones de AMP de Ultralytics; usa amp=False si son incompatibles.
Exportación a ONNXLa exportación es compatible, pero el archivo ONNX no proporciona por sí mismo un tiempo de ejecución acelerado para AMD.
Inferencia con MIGraphX🚧No está disponible en el paquete de Python actual; el trabajo de implementación se sigue en PR #24137.
Imagen Docker de AMD y CI con hardware de AMD🚧También se sigue en PR #24137 y no lo proporciona por sí sola la selección del dispositivo ROCm.
Windows DirectML❌ PythonEl paquete de Python no incluye ningún backend de DirectML para entrenamiento o predicción.
NPU Ryzen AINo hay integración nativa de NPU en Ultralytics; los flujos de trabajo externos con ONNX/Vitis AI están gestionados por la comunidad.
CPU AMD✅ CPUUsa device=cpu; se trata de una ejecución estándar en CPU, no de un backend de aceleración específico de AMD.
Comprueba primero la compatibilidad de AMD y PyTorch

La disponibilidad de ROCm depende de la GPU exacta, el sistema operativo, la versión de ROCm y la compilación de PyTorch. Confirma tu hardware en la matriz de compatibilidad de ROCm de AMD antes de instalarlo. Ultralytics no puede añadir compatibilidad para un dispositivo que la compilación de PyTorch ROCm instalada no exponga.

Por qué ROCm utiliza nombres de dispositivo de CUDA#

La compilación de PyTorch con ROCm utiliza HIP internamente, pero reutiliza deliberadamente las interfaces de torch.cuda. Por ejemplo, torch.cuda.is_available(), torch.cuda.device_count() y torch.cuda.get_device_name() funcionan con GPU AMD compatibles. Este diseño permite que la misma ruta de entrenamiento de Ultralytics sirva para NVIDIA CUDA y AMD ROCm sin duplicar el backend.

Consulta la semántica de HIP de PyTorch oficial para obtener más información.

Importante

En el paquete de Python, usa device=0 o device=cuda:0 para PyTorch ROCm. No uses device=rocm:0; rocm no es un tipo de dispositivo de PyTorch.

Instala PyTorch ROCm#

  1. Comprueba que tu sistema operativo y tu GPU aparecen en la matriz de compatibilidad de ROCm.

  2. Utiliza el selector de instalación de PyTorch para elegir la compilación de ROCm que coincida con tu versión de ROCm instalada.

  3. Instala Ultralytics después de PyTorch:

    pip install ultralytics
  4. Comprueba que PyTorch detecta la GPU AMD:

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

torch.cuda.is_available() debería devolver True, el nombre del dispositivo debería identificar tu GPU AMD y torch.version.hip debería indicar la versión de HIP proporcionada por la compilación de ROCm.

Entrena en una GPU AMD#

Usa los mismos argumentos de dispositivo que en el modo Train de Ultralytics estándar.

Entrenamiento con 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])

La validación y la predicción utilizan la misma selección de dispositivo:

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

Compatibilidad con AMP#

Ultralytics activa AMP de forma predeterminada y compara los resultados de precisión completa y precisión mixta antes del entrenamiento. Si la comprobación detecta resultados incompatibles, AMP se desactiva para evitar pérdidas NaN o entrenamientos con mAP cero. El comportamiento de AMP en ROCm puede cambiar según las versiones de PyTorch y ROCm, así que usa amp=False al solucionar un fallo específico de la pila:

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

Funciones aún no compatibles#

MIGraphX#

MIGraphX es el tiempo de ejecución de AMD para la optimización de grafos y la inferencia. La carga nativa de modelos MIGraphX no está incluida en el paquete de Python actual de Ultralytics. La implementación activa, el contenedor de AMD, las dependencias, las pruebas y la documentación se siguen conjuntamente en PR #24137. Hasta que ese trabajo se integre y reciba validación con hardware de AMD, la exportación de un modelo ONNX no debe describirse como compatibilidad nativa con MIGraphX en el paquete de Python.

DirectML#

El paquete de Python de Ultralytics no tiene ningún backend de DirectML para el entrenamiento o la predicción en Windows. DirectML es distinto de ROCm, y un entorno ROCm operativo no habilita device=directml.

NPU Ryzen AI#

Las NPU Ryzen AI no se exponen mediante PyTorch ROCm y no son dispositivos nativos de Ultralytics. Los flujos de trabajo de la comunidad pueden exportar modelos YOLO a ONNX y ejecutarlos con las herramientas externas Ryzen AI o Vitis AI de AMD, pero ese tiempo de ejecución, la conversión y la compatibilidad del hardware quedan fuera de la ruta de ejecución compatible de Ultralytics.

Resumen#

Usa una compilación de PyTorch ROCm compatible con device=0 o device=cuda:0 para el entrenamiento, la validación y la inferencia compatibles en GPU AMD. Trata MIGraphX, DirectML y NPU Ryzen AI como capacidades independientes: ninguna se habilita simplemente instalando ROCm o exportando un modelo ONNX.

Preguntas frecuentes#

  • El paquete de PyTorch instalado puede ser una compilación para CPU o CUDA, o puede que la GPU no sea compatible con la pila de ROCm activa. Instala la compilación de ROCm correspondiente desde el selector de PyTorch y comprueba la GPU en la matriz de compatibilidad de AMD.

  • Es lo esperado. PyTorch ROCm utiliza intencionadamente la API torch.cuda y cadenas de dispositivo con el estilo de CUDA para mantener la compatibilidad con Python. El modelo sigue ejecutándose mediante HIP y ROCm en la GPU AMD.

  • No. ONNX es un formato de modelo portable. La ejecución acelerada sigue requiriendo un tiempo de ejecución compatible, y los backends nativos de MIGraphX, DirectML y NPU Ryzen AI no están incluidos en el paquete de Python actual de Ultralytics.

Colaboradores

Comentarios