Link to this sectionEntraî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 appareils ROCm via la même API Python torch.cuda utilisée par CUDA, de sorte qu'Ultralytics n'a pas besoin d'un type d'appareil rocm distinct pour les modèles PyTorch natifs. Installez une version ROCm de PyTorch, puis sélectionnez 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.
Link to this sectionAperç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 de PyTorch et ROCm installées 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 suivie dans la PR #24137, non fournie par la seule sélection d'appareils 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 version de PyTorch. Confirme ton matériel dans la matrice de compatibilité ROCm d'AMD avant de l'installer. Ultralytics ne peut pas ajouter la prise en charge d'un appareil que la version installée de PyTorch ROCm n'expose pas.
Link to this sectionPourquoi 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 parcours d'entraînement d'Ultralytics de servir NVIDIA CUDA et AMD ROCm sans backend dupliqué.
Consulte la page 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 d'appareil PyTorch.
Link to this sectionInstalle 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 ROCm installée.
-
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 de l'appareil doit identifier ton GPU AMD et torch.version.hip doit indiquer la version HIP fournie par la version ROCm.
Link to this sectionEntraîne sur un GPU AMD#
Utilise les mêmes arguments d'appareil que pour le mode Train d'Ultralytics standard.
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 d'appareils :
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 sectionCompatibilité AMP#
Ultralytics active l'AMP par défaut et compare les résultats en précision pleine et en précision mixte avant l'entraînement. Si la vérification détecte des résultats incompatibles, l'AMP est désactivée pour éviter les pertes NaN ou un entraînement avec un mAP nul. Le comportement de l'AMP avec ROCm peut changer selon les versions de PyTorch et de ROCm, utilise donc amp=False lors du dépannage d'un problème spécifique à ta pile :
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseLink to this sectionFonctionnalités non prises en charge pour le moment#
Link to this sectionMIGraphX#
MIGraphX est l'environnement d'exécution d'inférence et d'optimisation de graphes 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.
Link to this sectionDirectML#
Le paquet Python d'Ultralytics ne dispose pas de 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.
Link to this sectionRyzen 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.
Link to this sectionDépannage#
Link to this sectionPourquoi 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.
Link to this sectionPourquoi Ultralytics mentionne-t-il CUDA alors que j'ai un GPU AMD ?#
C'est normal. PyTorch ROCm utilise intentionnellement l'API torch.cuda et des chaînes de caractères de périphériques de style CUDA pour des raisons de compatibilité Python. Le modèle s'exécute toujours via HIP et ROCm sur le GPU AMD.
Link to this sectionL'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.
Link to this sectionRésumé#
Utilise une version compatible de PyTorch ROCm 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 le NPU Ryzen AI comme des fonctionnalités distinctes : aucune d'entre elles n'est activée simplement en installant ROCm ou en exportant un modèle ONNX.