Ultralytics YOLO27:

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 LaufzeitumgebungUltralytics-UnterstützungVerwendung 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❌ PythonDas 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✅ CPUVerwende device=cpu; dies ist eine standardmäßige CPU-Ausführung und kein AMD-spezifisches Beschleunigungs-Backend.
Zuerst die Kompatibilität von AMD und PyTorch prüfen

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.

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. Prüfe, ob dein Betriebssystem und deine GPU in der ROCm-Kompatibilitätsmatrix aufgeführt sind.

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

  3. Installiere Ultralytics nach PyTorch:

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

Training mit ROCm
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=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 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=False

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

Mitwirkende

Kommentare