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 absichtlich über dieselbe
torch.cuda-Python-API bereit, die auch von CUDA verwendet wird. Daher benötigt Ultralytics für native PyTorch-
Modelle keinen separaten Gerätetyp rocm. Installiere einen ROCm-Build von PyTorch und wähle anschließend eine AMD-GPU mit der standardmäßigen Syntax device=0 oder device=cuda:0 aus.
AMD bietet außerdem Inferenztechnologien an, die von PyTorch ROCm unabhängig sind. Die Unterstützung eines AMD-Produkts bedeutet nicht automatisch, dass jede AMD-Laufzeitumgebung oder jeder Beschleuniger unterstützt wird.
Unterstützung im Überblick#
Diese Tabelle beschreibt das Ultralytics-Python-Paket für Training, Validierung, Export und Vorhersagen.
| AMD-Produkt oder -Laufzeitumgebung | Unterstützung durch Ultralytics | Verwendung oder Status |
|---|---|---|
| AMD Instinct und unterstützte Radeon-GPUs mit ROCm | ✅ | Trainiere, validiere und führe native PyTorch-Modelle mit device=0 oder device=cuda:0 aus. |
| ROCm mit mehreren GPUs | ✅ | Verwende device=0,1 oder device=[0, 1]; die verteilte Ausführung folgt dem installierten PyTorch-ROCm-Stack. |
| Automatische gemischte Genauigkeit (AMP) in ROCm | ⚠️ | Verfügbar, wenn die installierten PyTorch- und ROCm-Versionen die AMP-Prüfungen von Ultralytics bestehen; verwende bei Inkompatibilität amp=False. |
| ONNX-Export | ✅ | Der Export wird unterstützt, aber die ONNX-Datei stellt allein 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 mit 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 NPU-Integration von Ultralytics; externe ONNX-/Vitis-AI-Workflows werden von der Community verwaltet. |
| 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 genauen GPU, dem Betriebssystem, der ROCm-Version und dem PyTorch-Build ab. Überprüfe deine Hardware vor der Installation in der ROCm-Kompatibilitätsmatrix von AMD. Ultralytics kann keine Unterstützung für ein Gerät hinzufügen, das vom installierten PyTorch-ROCm-Build nicht bereitgestellt wird.
Warum ROCm CUDA-Gerätenamen verwendet#
Der PyTorch-ROCm-Build verwendet intern HIP, nutzt aber absichtlich weiterhin die torch.cuda-Schnittstellen. Beispielsweise
funktionieren torch.cuda.is_available(), torch.cuda.device_count() und torch.cuda.get_device_name() mit unterstützten AMD-GPUs.
Durch dieses Design kann derselbe Ultralytics-Trainingspfad für NVIDIA CUDA und AMD ROCm verwendet werden, ohne ein doppeltes Backend.
Weitere Informationen findest du in der offiziellen Dokumentation zur HIP-Semantik 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#
-
Überprüfe, ob dein Betriebssystem und deine GPU in der ROCm-Kompatibilitätsmatrix aufgeführt sind.
-
Wähle im PyTorch-Installationsauswahl den ROCm-Build aus, der zu deiner 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 von deinem ROCm-Build bereitgestellte HIP-Version ausgeben.
Auf einer AMD-GPU trainieren#
Verwende dieselben Geräteargumente wie im standardmäßigen Ultralytics-Trainingsmodus.
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 vor dem Training Ergebnisse mit voller und gemischter Genauigkeit. Erkennt die Prüfung
inkompatible Ergebnisse, wird AMP deaktiviert, um NaN-Verluste oder Training mit mAP gleich null zu verhindern. Das AMP-Verhalten von ROCm kann sich
je nach PyTorch- und ROCm-Version ändern. Verwende daher bei der Fehlersuche in einem stackspezifischen Fehler amp=False:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseNoch nicht unterstützte Funktionen#
MIGraphX#
MIGraphX ist AMDs Laufzeitumgebung zur Graphoptimierung und Inferenz. Das native Laden von MIGraphX-Modellen ist im aktuellen Ultralytics-Python-Paket nicht enthalten. Die aktive Implementierung, der AMD-Container, Abhängigkeiten, Tests und Dokumentation werden gemeinsam in PR #24137 nachverfolgt. Bis diese Arbeiten zusammengeführt und mit AMD-Hardware validiert wurden, sollte der Export eines ONNX-Modells im Python-Paket nicht als native MIGraphX-Unterstützung bezeichnet werden.
DirectML#
Das Ultralytics-Python-Paket verfügt über kein DirectML-Backend für Training oder Vorhersagen unter Windows. DirectML ist von
ROCm unabhängig, und eine funktionierende ROCm-Umgebung aktiviert device=directml nicht.
Ryzen-AI-NPU#
Ryzen-AI-NPUs werden nicht über PyTorch ROCm bereitgestellt und sind keine nativen Ultralytics-Geräte. Community-Workflows können YOLO-Modelle nach ONNX exportieren und mit den externen Ryzen-AI- oder Vitis-AI-Tools von AMD ausführen. Diese Laufzeitumgebung, Konvertierung und Hardwarekompatibilität liegen jedoch außerhalb des unterstützten Ultralytics-Ausführungspfads.
Zusammenfassung#
Verwende einen kompatiblen PyTorch-ROCm-Build mit device=0 oder device=cuda:0 für unterstütztes Training, Validierung und
Inferenz auf AMD-GPUs. 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.
FAQ#
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 die PyTorch-Auswahl und überprüfe die GPU anhand der Kompatibilitätsmatrix von AMD.
Das ist erwartungsgemäß. PyTorch ROCm verwendet absichtlich die
torch.cuda-API und Gerätezeichenfolgen im CUDA-Stil, um die Kompatibilität mit Python zu gewährleisten. Das Modell wird auf der AMD-GPU weiterhin über HIP und ROCm ausgeführt.Nein. ONNX ist ein portables Modellformat. Für die beschleunigte Ausführung ist weiterhin eine kompatible Laufzeitumgebung erforderlich, und native Backends für MIGraphX, DirectML und Ryzen AI NPU sind im aktuellen Ultralytics-Python-Paket nicht enthalten.