AMD-GPU-Training mit Ultralytics YOLO und ROCm#
Ultralytics unterstützt Training, Validierung und Inferenz auf kompatiblen AMD-GPUs über PyTorch ROCm. PyTorch stellt ROCm-Geräte bewusst über dieselbe torch.cuda-Python-API bereit, die auch für CUDA verwendet wird. Daher benötigt Ultralytics keinen separaten Gerätetyp rocm für native PyTorch-Modelle. Installiere einen ROCm-Build von PyTorch und wähle dann eine AMD-GPU mit der standardmäßigen Syntax device=0 oder device=cuda:0 aus.
AMD bietet außerdem Inferenztechnologien an, die unabhängig von PyTorch ROCm sind. Die Unterstützung für ein AMD-Produkt bedeutet nicht, dass auch alle AMD-Laufzeitumgebungen oder Beschleuniger unterstützt werden.
Unterstützung auf einen Blick#
Diese Tabelle beschreibt das Ultralytics-Python-Paket für Training, Validierung, Export und Vorhersagen.
| AMD-Produkt oder Laufzeitumgebung | Ultralytics-Unterstützung | Verwendung oder Status |
|---|---|---|
| AMD Instinct und unterstützte Radeon-GPUs mit ROCm | ✅ | Trainiere und validiere native PyTorch-Modelle und führe sie mit device=0 oder device=cuda:0 aus. |
| ROCm mit mehreren GPUs | ✅ | Verwende device=0,1 oder device=[0, 1]; die verteilte Ausführung richtet sich nach dem installierten PyTorch-ROCm-Stack. |
| Automatische gemischte Genauigkeit (AMP) mit ROCm | ⚠️ | Verfügbar, wenn die installierten PyTorch- und ROCm-Versionen die AMP-Prüfungen von Ultralytics bestehen. Verwende amp=False, falls sie nicht kompatibel sind. |
| ONNX-Export | ✅ | Der Export wird unterstützt, aber die ONNX-Datei allein stellt keine AMD-beschleunigte Laufzeitumgebung bereit. |
| MIGraphX-Inferenz | 🚧 | Im aktuellen Python-Paket nicht verfügbar; die Implementierung wird in PR #24137 nachverfolgt. |
| AMD-Docker-Image und CI auf AMD-Hardware | 🚧 | Wird ebenfalls in PR #24137 nachverfolgt und nicht allein durch die Auswahl eines ROCm-Geräts bereitgestellt. |
| Windows DirectML | ❌ Python | Das Python-Paket enthält kein DirectML-Backend für Training oder Vorhersagen. |
| Ryzen-AI-NPU | ❌ | Keine native Ultralytics-Integration für NPUs; externe ONNX-/Vitis-AI-Workflows werden von der Community betreut. |
| AMD-CPUs | ✅ CPU | Verwende device=cpu; dies ist eine standardmäßige CPU-Ausführung und kein AMD-spezifisches Beschleunigungs-Backend. |
Die Verfügbarkeit von ROCm hängt von der konkreten GPU, dem Betriebssystem, der ROCm-Version und dem PyTorch-Build ab. Prüfe vor der Installation, ob deine Hardware in der ROCm-Kompatibilitätsmatrix von AMD aufgeführt ist. Ultralytics kann keine Unterstützung für ein Gerät hinzufügen, das vom installierten PyTorch-ROCm-Build nicht erkannt wird.
Warum ROCm CUDA-Gerätenamen verwendet#
Der ROCm-Build von PyTorch verwendet intern HIP, greift aber bewusst auf die Schnittstellen torch.cuda zurück. So funktionieren beispielsweise torch.cuda.is_available(), torch.cuda.device_count() und torch.cuda.get_device_name() mit unterstützten AMD-GPUs. Dank dieses Designs kann derselbe Ultralytics-Trainingsablauf sowohl NVIDIA CUDA als auch AMD ROCm nutzen, ohne ein doppeltes Backend zu benötigen.
Weitere Informationen findest du in der offiziellen Dokumentation zu den HIP-Semantiken von PyTorch.
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#
-
Prüfe, ob dein Betriebssystem und deine GPU in der ROCm-Kompatibilitätsmatrix aufgeführt sind.
-
Wähle mit der PyTorch-Installationsauswahl den ROCm-Build aus, der zu deiner installierten ROCm-Version passt.
-
Installiere Ultralytics nach PyTorch:
pip install ultralytics -
Prü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 angeben und torch.version.hip sollte die vom ROCm-Build bereitgestellte HIP-Version melden.
Auf einer AMD-GPU trainieren#
Verwende dieselben Geräteargumente wie im standardmäßigen Trainingsmodus von Ultralytics.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Auf der ersten AMD-GPU trainieren, die PyTorch ROCm erkennt
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)
# Auf zwei AMD-GPUs trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])Validierung und Vorhersagen 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 vor dem Training Ergebnisse mit voller und gemischter Genauigkeit. Erkennt die Prüfung inkompatible Ergebnisse, wird AMP deaktiviert, um NaN-Verluste oder ein Training mit mAP von null zu verhindern. Das Verhalten von ROCm AMP kann sich je nach PyTorch- und ROCm-Version ändern. Verwende daher amp=False, wenn du ein Problem mit einem bestimmten Stack untersuchst:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseNoch nicht unterstützte Funktionen#
MIGraphX#
MIGraphX ist AMDs Laufzeitumgebung für Graphoptimierung und Inferenz. Das Laden von MIGraphX-Modellen ist im aktuellen Ultralytics-Python-Paket nicht enthalten. Die laufende Implementierung samt AMD-Container, Abhängigkeiten, Tests und Dokumentation wird gemeinsam in PR #24137 nachverfolgt. Bis diese Arbeit zusammengeführt und auf AMD-Hardware validiert wurde, sollte der Export eines ONNX-Modells nicht als native MIGraphX-Unterstützung im Python-Paket dargestellt werden.
DirectML#
Das Ultralytics-Python-Paket enthält kein DirectML-Backend für Training oder Vorhersagen unter Windows. DirectML unterscheidet sich von ROCm, und eine funktionierende ROCm-Umgebung aktiviert device=directml nicht.
Ryzen-AI-NPU#
Ryzen-AI-NPUs werden nicht über PyTorch ROCm erkannt und sind keine nativen Ultralytics-Geräte. In Community-Workflows können YOLO-Modelle nach ONNX exportiert und mit externen Ryzen-AI- oder Vitis-AI-Tools von AMD ausgeführt werden. Diese Laufzeitumgebung, die Konvertierung und die Hardwarekompatibilität gehören jedoch nicht zum unterstützten Ausführungspfad von Ultralytics.
Zusammenfassung#
Verwende für unterstütztes Training, Validierung und Inferenz auf AMD-GPUs einen kompatiblen PyTorch-ROCm-Build mit device=0 oder device=cuda:0. Betrachte MIGraphX, DirectML und Ryzen-AI-NPUs als separate Funktionen: Keine davon wird allein durch die Installation von ROCm oder den Export eines ONNX-Modells aktiviert.
Häufig gestellte Fragen#
Möglicherweise handelt es sich beim installierten PyTorch-Paket um einen CPU- oder CUDA-Build, oder die GPU wird vom aktiven ROCm-Stack nicht unterstützt. Installiere über die PyTorch-Auswahl den passenden ROCm-Build und prüfe die GPU anhand der Kompatibilitätsmatrix von AMD.
Das ist zu erwarten. PyTorch ROCm verwendet bewusst die
torch.cuda-API und Gerätenamen im CUDA-Stil, um die Kompatibilität mit Python zu gewährleisten. Das Modell wird weiterhin über HIP und ROCm auf der AMD-GPU ausgeführt.Nein. ONNX ist ein portables Modellformat. Für die beschleunigte Ausführung ist weiterhin eine kompatible Laufzeitumgebung erforderlich. Native Backends für MIGraphX, DirectML und Ryzen-AI-NPUs sind im aktuellen Ultralytics-Python-Paket nicht enthalten.