Ultralytics YOLO27:

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 a través de la misma API de Python torch.cuda que se usa con CUDA, por lo que Ultralytics no necesita un tipo de dispositivo rocm independiente para los modelos PyTorch nativos. Instala una versión de PyTorch compilada para ROCm y, después, 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 la compatibilidad con todos los entornos de ejecución o aceleradores de AMD.

Resumen de compatibilidad#

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 entorno de ejecución de AMDCompatibilidad de UltralyticsUso o estado
AMD Instinct y GPU Radeon compatibles con ROCm✅Entrena, valida y ejecuta modelos PyTorch nativos con device=0 o device=cuda:0.
ROCm multi-GPU✅Usa device=0,1 o device=[0, 1]; la ejecución distribuida depende de la pila PyTorch ROCm instalada.
Precisión mixta automática (AMP) de ROCm⚠️Disponible cuando las versiones de PyTorch y ROCm instaladas superan las comprobaciones AMP de Ultralytics; usa amp=False si no son compatibles.
Exportación a ONNX✅La exportación es compatible, pero el archivo ONNX por sí solo no proporciona un entorno de ejecución acelerado por 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 en hardware de AMD🚧También se sigue en PR #24137; la selección de dispositivo ROCm por sí sola no lo proporciona.
DirectML en Windows❌ PythonEl paquete de Python no incluye un backend DirectML para el entrenamiento ni la predicción.
NPU Ryzen AI❌No hay integración nativa de Ultralytics con NPU; la comunidad gestiona los flujos de trabajo externos con ONNX/Vitis AI.
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 concreta, el sistema operativo, la versión de ROCm y la compilación de PyTorch. Confirma que tu hardware aparece en la matriz de compatibilidad de ROCm de AMD antes de instalarlo. Ultralytics no puede añadir compatibilidad con un dispositivo que la compilación de PyTorch ROCm instalada no exponga.

Por qué ROCm utiliza los nombres de dispositivo de CUDA#

La compilación de PyTorch para ROCm utiliza HIP internamente, pero reutiliza deliberadamente las interfaces torch.cuda. Por ejemplo, torch.cuda.is_available(), torch.cuda.device_count() y torch.cuda.get_device_name() funcionan con las GPU AMD compatibles. Este diseño permite que la misma ruta de entrenamiento de Ultralytics funcione con 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 GPU aparecen en la matriz de compatibilidad de ROCm.

  2. Usa el selector de instalación de PyTorch para elegir la compilación de ROCm que corresponda a 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 de entrenamiento de Ultralytics estándar.

Entrenamiento con ROCm
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Entrena en la primera GPU AMD expuesta por PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Entrena en dos GPU AMD
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 para diagnosticar 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 entorno de ejecución de AMD para la optimización de grafos y la inferencia. El paquete de Python actual de Ultralytics no incluye la carga nativa de modelos con MIGraphX. 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 se valide en hardware de AMD, no se debe describir la exportación de un modelo ONNX como compatibilidad nativa con MIGraphX en el paquete de Python.

DirectML#

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

NPU Ryzen AI#

Las NPU Ryzen AI no se exponen a través de PyTorch ROCm ni 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 entorno de ejecución, la conversión y la compatibilidad con el hardware quedan fuera de la ruta de ejecución compatible con Ultralytics.

Resumen#

Usa una compilación compatible de PyTorch ROCm con device=0 o device=cuda:0 para entrenar, validar y realizar inferencias en GPU AMD compatibles. Trata MIGraphX, DirectML y las NPU Ryzen AI como capacidades independientes: ninguna se habilita simplemente al instalar ROCm o exportar un modelo ONNX.

Preguntas frecuentes#

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

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

  • No. ONNX es un formato de modelo portátil. La ejecución acelerada sigue necesitando un entorno de ejecución compatible, y el paquete de Python actual de Ultralytics no incluye backends nativos para MIGraphX, DirectML ni las NPU Ryzen AI.

Colaboradores

Comentarios