Link to this sectionEntrenamiento de GPU AMD con Ultralytics YOLO y ROCm#
Ultralytics admite el entrenamiento, la validación y la inferencia en GPU AMD compatibles a través de PyTorch ROCm. PyTorch expone intencionalmente los dispositivos ROCm a través de la misma API de Python torch.cuda utilizada por CUDA, por lo que Ultralytics no necesita un tipo de dispositivo rocm separado para los modelos nativos de PyTorch. Instala una compilación de PyTorch para ROCm y luego selecciona una GPU AMD con la sintaxis estándar device=0 o device=cuda:0.
AMD también ofrece tecnologías de inferencia que están separadas de PyTorch ROCm. El soporte para un producto de AMD no implica soporte para todos los entornos de ejecución o aceleradores de AMD.
Link to this sectionResumen de soporte#
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 AMD | Soporte de Ultralytics | Uso o estado |
|---|---|---|
| AMD Instinct y GPU Radeon compatibles con ROCm | ✅ | Entrena, valida y ejecuta modelos nativos de PyTorch con device=0 o device=cuda:0. |
| ROCm con múltiples GPU | ✅ | Usa device=0,1 o device=[0, 1]; la ejecución distribuida sigue la pila de PyTorch ROCm instalada. |
| Precisión mixta automática (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 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 disponible en el paquete actual de Python; el trabajo de implementación se realiza en la PR #24137. |
| Imagen de Docker de AMD y CI de hardware de AMD | 🚧 | También se realiza un seguimiento en la PR #24137, no se proporciona únicamente mediante la selección de dispositivos ROCm. |
| Windows DirectML | ❌ Python | No hay un backend de entrenamiento o predicción de DirectML en el paquete de Python. |
| Ryzen AI NPU | ❌ | No hay una integración nativa de NPU en Ultralytics; los flujos de trabajo externos de ONNX/Vitis AI son administrados por la comunidad. |
| CPU AMD | ✅ CPU | Usa device=cpu; esto es una ejecución de CPU estándar, no un backend de aceleración específico de AMD. |
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 realizar la instalación. Ultralytics no puede agregar soporte para un dispositivo que la compilación de PyTorch ROCm instalada no expone.
Link to this sectionPor qué ROCm utiliza nombres de dispositivos CUDA#
La compilación de PyTorch para 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 las GPU AMD compatibles. Este diseño permite que la misma ruta de entrenamiento de Ultralytics sirva para NVIDIA CUDA y AMD ROCm sin necesidad de un backend duplicado.
Consulta la documentación oficial sobre semánticas HIP de PyTorch para obtener más detalles.
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.
Link to this sectionInstalar PyTorch ROCm#
-
Verifica que tu sistema operativo y tu GPU aparezcan en la matriz de compatibilidad de ROCm.
-
Usa el selector de instalación de PyTorch para elegir la compilación de ROCm que coincida con tu versión instalada de ROCm.
-
Instala Ultralytics después de PyTorch:
pip install ultralytics -
Verifica que PyTorch detecte 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() debe devolver True, el nombre del dispositivo debe identificar tu GPU AMD y torch.version.hip debe informar la versión de HIP proporcionada por la compilación de ROCm.
Link to this sectionEntrenar en una GPU AMD#
Usa los mismos argumentos de dispositivo que en el modo Train de Ultralytics estándar.
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 usan la misma selección de dispositivos:
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 sectionCompatibilidad con AMP#
Ultralytics habilita 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 deshabilita para evitar pérdidas con valores NaN o un entrenamiento 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=FalseLink to this sectionCaracterísticas aún no compatibles#
Link to this sectionMIGraphX#
MIGraphX es el motor de inferencia y optimización de grafos de AMD. La carga de modelos nativos de MIGraphX no está incluida en el paquete actual de Python de Ultralytics. La implementación activa, el contenedor de AMD, las dependencias, las pruebas y la documentación se rastrean conjuntamente en la PR #24137. Hasta que ese trabajo se fusione y reciba la validación de hardware de AMD, la exportación de un modelo ONNX no debe describirse como soporte nativo para MIGraphX en el paquete de Python.
Link to this sectionDirectML#
El paquete de Python de Ultralytics no tiene un backend de DirectML para el entrenamiento o la predicción en Windows. DirectML es distinto de ROCm, y un entorno ROCm funcional no habilita device=directml.
Link to this sectionRyzen AI NPU#
Las NPU de Ryzen AI no se exponen a través de 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 dicho motor de ejecución, conversión y compatibilidad de hardware quedan fuera de la ruta de ejecución compatible de Ultralytics.
Link to this sectionSolución de problemas#
Link to this section¿Por qué torch.cuda.is_available() devuelve False en mi sistema AMD?#
Es posible que el paquete de PyTorch instalado sea una compilación para CPU o CUDA, o que la pila de ROCm activa no admita la GPU. Instala la compilación de ROCm correspondiente desde el selector de PyTorch y verifica la GPU con la matriz de compatibilidad de AMD.
Link to this section¿Por qué Ultralytics dice CUDA cuando tengo una GPU AMD?#
Esto es normal. PyTorch ROCm utiliza intencionalmente la API de torch.cuda y cadenas de dispositivos de estilo CUDA para garantizar la compatibilidad con Python. El modelo sigue ejecutándose a través de HIP y ROCm en la GPU AMD.
Link to this section¿La exportación a ONNX habilita automáticamente MIGraphX o Ryzen AI?#
No. ONNX es un formato de modelo portátil. La ejecución acelerada sigue requiriendo un entorno de ejecución compatible, y los backends nativos para MIGraphX, DirectML y Ryzen AI NPU no están incluidos en el paquete actual de Python de Ultralytics.
Link to this sectionResumen#
Usa una compilación de PyTorch ROCm compatible con device=0 o device=cuda:0 para el entrenamiento, la validación y la inferencia en GPU AMD admitidas. Trata MIGraphX, DirectML y Ryzen AI NPU como capacidades separadas: ninguna se habilita simplemente instalando ROCm o exportando un modelo ONNX.