YOLO Vision 2026 :

Entraînement sur 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. Ultralytics n'a donc pas besoin d'un type d'appareil 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 n'implique pas la prise en charge de tous les environnements d'exécution ou accélérateurs AMD.

Vue d'ensemble de la prise en charge#

Ce tableau décrit le package Python Ultralytics utilisé pour l'entraînement, la validation, l'exportation et la prédiction.

Produit ou environnement d'exécution AMDPrise en charge par UltralyticsUtilisation ou état
AMD Instinct et GPU Radeon pris en charge avec ROCmEntraîne, valide et exécute des modèles PyTorch natifs avec device=0 ou device=cuda:0.
ROCm multi-GPUUtilise device=0,1 ou device=[0, 1] ; l'exécution distribuée suit la pile PyTorch ROCm installée.
Précision mixte automatique ROCm (AMP)⚠️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 ONNXL'exportation est prise en charge, mais le fichier ONNX ne fournit pas à lui seul un environnement d'exécution accéléré par AMD.
Inférence MIGraphX🚧Non disponible dans le package Python actuel ; le travail d'implémentation est suivi dans PR #24137.
Image Docker AMD et CI sur matériel AMD🚧Également suivi dans PR #24137, ce qui n'est pas fourni par la seule sélection d'un appareil ROCm.
DirectML sous Windows❌ PythonAucun backend DirectML pour l'entraînement ou la prédiction dans le package Python.
NPU Ryzen AIAucune intégration NPU native d'Ultralytics ; les workflows ONNX/Vitis AI externes sont gérés par la communauté.
CPU AMD✅ CPUUtilise device=cpu ; il s'agit d'une exécution CPU standard, et non d'un backend d'accélération spécifique à AMD.
Vérifie d'abord la compatibilité entre AMD et PyTorch

La disponibilité de ROCm dépend précisément du GPU, du système d'exploitation, de la version de ROCm et de la version de PyTorch. Vérifie 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 version ROCm de PyTorch installée n'expose pas.

Pourquoi ROCm utilise les 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 workflow d'entraînement Ultralytics de prendre en charge NVIDIA CUDA et AMD ROCm sans backend en double.

Consulte les sémantiques HIP de PyTorch officielles pour plus de détails.

Important

Dans le package 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.

Installer PyTorch ROCm#

  1. Vérifie que ton système d'exploitation et ton GPU apparaissent dans la matrice de compatibilité ROCm.

  2. Utilise le sélecteur d'installation de PyTorch pour choisir la version ROCm correspondant à ta version de ROCm installée.

  3. Installe Ultralytics après PyTorch :

    pip install ultralytics
  4. 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.

Entraîner sur un GPU AMD#

Utilise les mêmes arguments d'appareil que pour le mode Train d'Ultralytics standard.

Entraînement 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 validation et la prédiction utilisent la même sélection d'appareil :

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

Compatibilité AMP#

Ultralytics active AMP par défaut et compare les résultats en pleine précision et en précision mixte avant l'entraînement. Si la vérification détecte des résultats incompatibles, AMP est désactivé afin d'éviter des pertes NaN ou un entraînement avec une mAP nulle. Le comportement d'AMP avec ROCm peut varier selon les versions de PyTorch et de ROCm ; utilise donc amp=False lors du diagnostic d'un échec spécifique à la pile :

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

Fonctionnalités pas encore prises en charge#

MIGraphX#

MIGraphX est l'environnement d'exécution d'AMD pour l'optimisation des graphes et l'inférence. Le chargement natif de modèles MIGraphX n'est pas inclus dans le package Python Ultralytics actuel. L'implémentation active, le conteneur AMD, les dépendances, les tests et la documentation sont suivis ensemble dans PR #24137. Tant que ce travail n'est pas fusionné et validé sur du matériel AMD, l'exportation d'un modèle ONNX ne doit pas être présentée comme une prise en charge native de MIGraphX dans le package Python.

DirectML#

Le package Python Ultralytics ne dispose d'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.

NPU Ryzen AI#

Les NPU Ryzen AI ne sont pas exposés par PyTorch ROCm et ne sont pas des appareils Ultralytics natifs. Les workflows 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 chemin d'exécution pris en charge par Ultralytics.

Ré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 prises en charge sur les GPU AMD. Considère MIGraphX, DirectML et le NPU Ryzen AI comme des fonctionnalités distinctes : aucune n'est activée par la simple installation de ROCm ou l'exportation d'un modèle ONNX.

FAQ#

  • Le package PyTorch installé est peut-être une version CPU ou CUDA, ou bien le GPU n'est peut-être pas pris en charge par la pile ROCm active. Installe la version ROCm correspondante depuis le sélecteur PyTorch et vérifie le GPU dans la matrice de compatibilité d'AMD.

  • C'est le comportement attendu. PyTorch ROCm utilise intentionnellement l'API torch.cuda et des chaînes d'appareils de style CUDA pour assurer la compatibilité avec Python. Le modèle s'exécute toujours via HIP et ROCm sur le GPU AMD.

  • 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 package Python Ultralytics actuel.

Contributeurs

Commentaires