YOLO Vision 2026:

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 -LaufzeitumgebungUnterstützung durch UltralyticsVerwendung oder Status
AMD Instinct und unterstützte Radeon-GPUs mit ROCmTrainiere, validiere und führe native PyTorch-Modelle mit device=0 oder device=cuda:0 aus.
ROCm mit mehreren GPUsVerwende 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-ExportDer 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❌ PythonDas Python-Paket enthält kein DirectML-Backend für Training oder Vorhersagen.
Ryzen-AI-NPUKeine native NPU-Integration von Ultralytics; externe ONNX-/Vitis-AI-Workflows werden von der Community verwaltet.
AMD-CPUs✅ CPUVerwende device=cpu; dies ist eine standardmäßige CPU-Ausführung und kein AMD-spezifisches Beschleunigungs-Backend.
Prüfe zuerst die Kompatibilität von AMD und PyTorch

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.

Wichtig

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#

  1. Überprüfe, ob dein Betriebssystem und deine GPU in der ROCm-Kompatibilitätsmatrix aufgeführt sind.

  2. Wähle im PyTorch-Installationsauswahl den ROCm-Build aus, der zu deiner installierten ROCm-Version passt.

  3. Installiere Ultralytics nach PyTorch:

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

ROCm-Training
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=0

AMP-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=False

Noch 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.

Mitwirkende

Kommentare