YOLO Vision 2026:

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 LaufzeitumgebungUltralytics-UnterstützungNutzung oder Status
AMD Instinct und unterstützte Radeon GPUs mit ROCmTrainiere, validiere und starte native PyTorch-Modelle mit device=0 oder device=cuda:0.
Multi-GPU ROCmVerwende 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-ExportDer 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❌ PythonKein DirectML-Trainings- oder Vorhersage-Backend im Python-Paket.
Ryzen AI NPUKeine native Ultralytics NPU-Integration; externe ONNX/Vitis AI Workflows werden von der Community verwaltet.
AMD CPUs✅ CPUVerwende device=cpu; dies ist eine Standard-CPU-Ausführung, kein AMD-spezifisches Beschleunigungs-Backend.
Prüfe zuerst die AMD- und PyTorch-Kompatibilität

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.

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. Verwende den PyTorch-Installationsauswahl, um den ROCm-Build auszuwählen, der zur 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 vom ROCm-Build bereitgestellte HIP-Version melden.

Auf einer AMD GPU trainieren#

Verwende dieselben Geräteargumente wie im Standard-Ultralytics-Train-Modus.

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

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

Mitwirkende

Kommentare