Entraînement de GPU AMD avec Ultralytics YOLO et ROCm#
Ultralytics prend en charge l'entraînement, la validation et l'inférence sur les GPU AMD compatibles via
PyTorch ROCm. PyTorch expose intentionnellement les périphériques ROCm via la même
API Python torch.cuda utilisée par CUDA, de sorte qu'Ultralytics n'a pas besoin d'un type de périphérique rocm distinct pour les modèles PyTorch natifs.
Installe une version ROCm de PyTorch, puis sélectionne un GPU AMD avec la syntaxe standard device=0 ou device=cuda:0.
AMD propose également des technologies d'inférence distinctes de PyTorch ROCm. La prise en charge d'un produit AMD ne garantit pas la prise en charge de tous les environnements d'exécution ou accélérateurs AMD.
Aperçu de la prise en charge#
Ce tableau décrit le paquet Python Ultralytics utilisé pour l'entraînement, la validation, l'exportation et la prédiction.
| Produit ou environnement d'exécution AMD | Prise en charge par Ultralytics | Utilisation ou statut |
|---|---|---|
| AMD Instinct et GPU Radeon pris en charge avec ROCm | ✅ | Entraîne, valide et exécute des modèles PyTorch natifs avec device=0 ou device=cuda:0. |
| ROCm multi-GPU | ✅ | Utilise device=0,1 ou device=[0, 1] ; l'exécution distribuée suit la pile PyTorch ROCm installée. |
| Précision mixte automatique (AMP) ROCm | ⚠️ | Disponible lorsque les versions installées de PyTorch et ROCm réussissent les vérifications AMP d'Ultralytics ; utilise amp=False en cas d'incompatibilité. |
| Exportation ONNX | ✅ | L'exportation est prise en charge, mais le fichier ONNX ne fournit pas en soi un environnement d'exécution accéléré par AMD. |
| Inférence MIGraphX | 🚧 | Non disponible dans le paquet Python actuel ; le travail d'implémentation est suivi dans la PR #24137. |
| Image Docker AMD et CI matérielle AMD | 🚧 | Également suivi dans la PR #24137, non fourni par la seule sélection du périphérique ROCm. |
| Windows DirectML | ❌ Python | Aucun backend d'entraînement ou de prédiction DirectML dans le paquet Python. |
| Ryzen AI NPU | ❌ | Aucune intégration NPU native d'Ultralytics ; les flux de travail ONNX/Vitis AI externes sont gérés par la communauté. |
| Processeurs AMD | ✅ CPU | Utilise device=cpu ; il s'agit d'une exécution CPU standard, et non d'un backend d'accélération spécifique à AMD. |
La disponibilité de ROCm dépend du GPU exact, du système d'exploitation, de la version de ROCm et de la compilation PyTorch. Confirme ton matériel dans la matrice de compatibilité ROCm d'AMD avant l'installation. Ultralytics ne peut pas ajouter la prise en charge d'un appareil que la compilation PyTorch ROCm installée n'expose pas.
Pourquoi ROCm utilise des noms d'appareils CUDA#
La version ROCm de PyTorch utilise HIP en interne mais réutilise délibérément les interfaces torch.cuda. Par exemple,
torch.cuda.is_available(), torch.cuda.device_count() et torch.cuda.get_device_name() fonctionnent avec les GPU AMD pris en charge.
Cette conception permet au même chemin d'entraînement d'Ultralytics de desservir NVIDIA CUDA et AMD ROCm sans backend en double.
Consulte la documentation officielle sur la sémantique HIP de PyTorch pour plus de détails.
Dans le paquet Python, utilise device=0 ou device=cuda:0 pour PyTorch ROCm. N'utilise pas device=rocm:0 ; rocm n'est pas
un type de périphérique PyTorch.
Installe PyTorch ROCm#
-
Vérifie que ton système d'exploitation et ton GPU apparaissent dans la matrice de compatibilité ROCm.
-
Utilise le sélecteur d'installation de PyTorch pour choisir la version ROCm correspondant à ta version installée de ROCm.
-
Installe Ultralytics après PyTorch :
pip install ultralytics -
Vérifie que PyTorch détecte le GPU AMD :
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available() doit renvoyer True, le nom du périphérique doit identifier ton GPU AMD, et torch.version.hip
doit indiquer la version HIP fournie par la version ROCm.
Entraîne sur un GPU AMD#
Utilise les mêmes arguments de périphérique que pour le mode d'entraînement standard d'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])La validation et la prédiction utilisent la même sélection de périphérique :
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=0Compatibilité AMP#
Ultralytics active AMP par défaut et compare les résultats en précision standard et en précision mixte avant l'entraînement. Si la vérification
détecte des résultats incompatibles, AMP est désactivé pour éviter des pertes NaN ou un entraînement avec un mAP nul. Le comportement AMP de ROCm peut changer
avec les versions de PyTorch et de ROCm, utilise donc amp=False lors du dépannage d'une panne spécifique à la pile :
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseFonctionnalités non prises en charge pour le moment#
MIGraphX#
MIGraphX est le runtime d'optimisation de graphes et d'inférence d'AMD. Le chargement natif de modèles MIGraphX n'est pas inclus dans le paquet Python actuel d'Ultralytics. L'implémentation active, le conteneur AMD, les dépendances, les tests et la documentation sont suivis ensemble dans la PR #24137. Tant que ce travail n'est pas fusionné et validé sur le matériel AMD, l'exportation d'un modèle ONNX ne doit pas être décrite comme une prise en charge native de MIGraphX dans le paquet Python.
DirectML#
Le paquet Python d'Ultralytics ne possède aucun backend DirectML pour l'entraînement ou la prédiction sous Windows. DirectML est distinct de
ROCm, et un environnement ROCm fonctionnel n'active pas device=directml.
Ryzen AI NPU#
Les NPU Ryzen AI ne sont pas exposés via PyTorch ROCm et ne constituent pas des appareils natifs d'Ultralytics. Les flux de travail communautaires peuvent exporter des modèles YOLO vers ONNX et les exécuter avec les outils externes Ryzen AI ou Vitis AI d'AMD, mais cet environnement d'exécution, la conversion et la compatibilité matérielle se situent en dehors du parcours d'exécution pris en charge par Ultralytics.
Dépannage#
Pourquoi torch.cuda.is_available() renvoie-t-il False sur mon système AMD ?#
Le paquet PyTorch installé peut être une version CPU ou CUDA, ou le GPU peut ne pas être pris en charge par la pile ROCm active. Installe la version ROCm correspondante à partir du sélecteur PyTorch et vérifie le GPU par rapport à la matrice de compatibilité d'AMD.
Pourquoi Ultralytics mentionne-t-il CUDA alors que j'ai un GPU AMD ?#
C'est normal. PyTorch ROCm utilise intentionnellement l'API torch.cuda et les chaînes de périphériques de style CUDA pour la compatibilité
avec Python. Le modèle s'exécute toujours via HIP et ROCm sur le GPU AMD.
L'exportation ONNX active-t-elle automatiquement MIGraphX ou Ryzen AI ?#
Non. ONNX est un format de modèle portable. L'exécution accélérée nécessite toujours un environnement d'exécution compatible, et les backends natifs MIGraphX, DirectML et NPU Ryzen AI ne sont pas inclus dans le paquet Python actuel d'Ultralytics.
Résumé#
Utilise une version PyTorch ROCm compatible avec device=0 ou device=cuda:0 pour l'entraînement, la validation et
l'inférence pris en charge sur les GPU AMD. Traite MIGraphX, DirectML et Ryzen AI NPU comme des fonctionnalités distinctes : aucune d'entre elles n'est activée simplement en installant
ROCm ou en exportant un modèle ONNX.