AMD GPU Training with Ultralytics YOLO and ROCm#
Ultralytics unterstützt Training, Validierung und Inferenz auf kompatiblen AMD-GPUs über
PyTorch ROCm. PyTorch stellt ROCm-Geräte absichtlich über dieselbe
torch.cuda-Python-API zur Verfügung, die auch von CUDA verwendet wird, sodass Ultralytics keinen separaten rocm-Gerätetyp für native PyTorch-
Modelle benötigt. Installiere einen ROCm-Build von PyTorch und wähle dann eine AMD-GPU mit der Standard-Syntax device=0 oder device=cuda:0 aus.
AMD bietet auch Inferenztechnologien an, die von PyTorch ROCm unabhängig sind. Die Unterstützung für ein AMD-Produkt bedeutet nicht automatisch die Unterstützung für jede AMD-Laufzeitumgebung oder jeden Beschleuniger.
Unterstützung auf einen Blick#
Diese Tabelle beschreibt das Ultralytics Python-Paket, das für Training, Validierung, Export und Vorhersage verwendet wird.
| AMD-Produkt oder Laufzeitumgebung | Ultralytics-Unterstützung | Nutzung oder Status |
|---|---|---|
| AMD Instinct und unterstützte Radeon GPUs mit ROCm | ✅ | Trainiere, validiere und starte native PyTorch-Modelle mit device=0 oder device=cuda:0. |
| Multi-GPU ROCm | ✅ | Verwende device=0,1 oder device=[0, 1]; die verteilte Ausführung folgt dem installierten PyTorch-ROCm-Stack. |
| ROCm Automatic Mixed Precision (AMP) | ⚠️ | Verfügbar, wenn die installierten PyTorch- und ROCm-Versionen die Ultralytics-AMP-Prüfungen bestehen; verwende amp=False, falls sie inkompatibel sind. |
| ONNX-Export | ✅ | Der Export wird unterstützt, aber die ONNX-Datei bietet von sich aus keine AMD-beschleunigte Laufzeitumgebung. |
| MIGraphX-Inferenz | 🚧 | Im aktuellen Python-Paket nicht verfügbar; die Implementierungsarbeit wird in PR #24137 verfolgt. |
| AMD Docker-Image und AMD-Hardware-CI | 🚧 | Ebenfalls in PR #24137 verfolgt, wird nicht allein durch die ROCm-Geräteauswahl bereitgestellt. |
| Windows DirectML | ❌ Python | Kein DirectML-Trainings- oder Vorhersage-Backend im Python-Paket. |
| Ryzen AI NPU | ❌ | Keine native Ultralytics NPU-Integration; externe ONNX/Vitis AI Workflows werden von der Community verwaltet. |
| AMD CPUs | ✅ CPU | Verwende device=cpu; dies ist eine Standard-CPU-Ausführung, kein AMD-spezifisches Beschleunigungs-Backend. |
Die ROCm-Verfügbarkeit hängt von der genauen GPU, dem Betriebssystem, der ROCm-Version und dem PyTorch-Build ab. Bestätige deine Hardware in der ROCm-Kompatibilitätsmatrix von AMD, bevor du sie installierst. Ultralytics kann keine Unterstützung für ein Gerät hinzufügen, das der installierte PyTorch-ROCm-Build nicht bereitstellt.
Warum ROCm CUDA-Gerätenamen verwendet#
Der ROCm-Build von PyTorch verwendet intern HIP, wiederverwendet jedoch bewusst die torch.cuda-Schnittstellen. Zum Beispiel
funktionieren torch.cuda.is_available(), torch.cuda.device_count() und torch.cuda.get_device_name() mit unterstützten AMD-GPUs.
Dieses Design ermöglicht es demselben Ultralytics-Trainingspfad, NVIDIA CUDA und AMD ROCm ohne doppeltes Backend zu bedienen.
Siehe die offiziellen PyTorch-HIP-Semantiken für Details.
Verwende im Python-Paket device=0 oder device=cuda:0 für PyTorch ROCm. Verwende nicht device=rocm:0; rocm ist kein
PyTorch-Gerätetyp.
PyTorch ROCm installieren#
-
Überprüfe, ob dein Betriebssystem und deine GPU in der ROCm-Kompatibilitätsmatrix aufgeführt sind.
-
Verwende den PyTorch-Installationsauswahl, um den ROCm-Build auszuwählen, der zur installierten ROCm-Version passt.
-
Installiere Ultralytics nach PyTorch:
pip install ultralytics -
Überprüfe, ob PyTorch die AMD GPU erkennt:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available() sollte True zurückgeben, der Gerätename sollte deine AMD-GPU identifizieren und torch.version.hip
sollte die vom ROCm-Build bereitgestellte HIP-Version melden.
Auf einer AMD GPU trainieren#
Verwende dieselben Geräteargumente wie im Standard-Ultralytics-Train-Modus.
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])Validierung und Vorhersage verwenden dieselbe Geräteauswahl:
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=0AMP-Kompatibilität#
Ultralytics aktiviert AMP standardmäßig und vergleicht Ergebnisse mit einfacher und gemischter Präzision vor dem Training. Wenn die Prüfung
inkompatible Ergebnisse erkennt, wird AMP deaktiviert, um NaN-Verluste oder ein Training mit null mAP zu verhindern. Das ROCm-AMP-Verhalten kann sich
mit den PyTorch- und ROCm-Versionen ändern. Verwende daher amp=False bei der Fehlerbehebung eines stack-spezifischen Fehlers:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseNoch nicht unterstützte Funktionen#
MIGraphX#
MIGraphX ist die Graphenoptimierungs- und Inferenz-Laufzeitumgebung von AMD. Das Laden nativer MIGraphX-Modelle ist im aktuellen Ultralytics-Python-Paket nicht enthalten. Die aktive Implementierung, der AMD-Container, Abhängigkeiten, Tests und die Dokumentation werden zusammen in PR #24137 verfolgt. Bis diese Arbeit zusammengeführt und von AMD-Hardware validiert wurde, sollte der Export eines ONNX-Modells im Python-Paket nicht als native MIGraphX-Unterstützung beschrieben werden.
DirectML#
Das Ultralytics-Python-Paket hat kein DirectML-Backend für das Training oder die Vorhersage unter Windows. DirectML unterscheidet sich von
ROCm, und eine funktionierende ROCm-Umgebung aktiviert nicht device=directml.
Ryzen AI NPU#
Ryzen AI NPUs werden nicht über PyTorch ROCm bereitgestellt und sind keine nativen Ultralytics-Geräte. Community-Workflows exportieren YOLO-Modelle möglicherweise nach ONNX und führen sie mit den externen Ryzen AI- oder Vitis AI-Werkzeugen von AMD aus, aber diese Laufzeitumgebung, Konvertierung und Hardwarekompatibilität liegen außerhalb des unterstützten Ultralytics-Ausführungspfads.
Fehlerbehebung#
Warum gibt torch.cuda.is_available() auf meinem AMD-System False zurück?#
Das installierte PyTorch-Paket ist möglicherweise ein CPU- oder CUDA-Build, oder die GPU wird vom aktiven ROCm-Stack nicht unterstützt. Installiere den passenden ROCm-Build über den PyTorch-Selector und überprüfe die GPU anhand der Kompatibilitätsmatrix von AMD.
Warum meldet Ultralytics CUDA, obwohl ich eine AMD GPU habe?#
Dies ist so erwartet. PyTorch ROCm verwendet absichtlich die torch.cuda-API und gerätebezogene CUDA-Zeichenfolgen für die Python-
Kompatibilität. Das Modell wird weiterhin über HIP und ROCm auf der AMD-GPU ausgeführt.
Aktiviert der ONNX-Export MIGraphX oder Ryzen AI automatisch?#
Nein. ONNX ist ein portables Modellformat. Eine beschleunigte Ausführung erfordert dennoch eine kompatible Laufzeitumgebung, und native MIGraphX-, DirectML- und Ryzen AI NPU-Backends sind im aktuellen Ultralytics Python-Paket nicht enthalten.
Zusammenfassung#
Verwende einen kompatiblen PyTorch-ROCm-Build mit device=0 oder device=cuda:0 für unterstütztes AMD-GPU-Training, Validierung und
Inferenz. Betrachte MIGraphX, DirectML und Ryzen AI NPU als separate Funktionen: keine davon wird allein durch die Installation
von ROCm oder den Export eines ONNX-Modells aktiviert.