Addestramento su GPU AMD con Ultralytics YOLO e ROCm#
Ultralytics supporta l'addestramento, la validazione e l'inferenza su GPU AMD compatibili tramite
PyTorch ROCm. PyTorch espone intenzionalmente i dispositivi ROCm attraverso la stessa
torch.cuda Python API usata da CUDA, quindi Ultralytics non necessita di un tipo di dispositivo rocm separato per i modelli
PyTorch nativi. Installa una build ROCm di PyTorch, quindi seleziona una GPU AMD con la sintassi standard device=0 o device=cuda:0.
AMD offre anche tecnologie di inferenza separate da PyTorch ROCm. Il supporto per un prodotto AMD non implica il supporto per ogni runtime o acceleratore AMD.
Panoramica del supporto#
Questa tabella descrive il pacchetto Python di Ultralytics usato per l'addestramento, la validazione, l'esportazione e la predizione.
| Prodotto o runtime AMD | Supporto Ultralytics | Utilizzo o stato |
|---|---|---|
| AMD Instinct e GPU Radeon supportate con ROCm | ✅ | Addestra, valida ed esegui modelli PyTorch nativi con device=0 o device=cuda:0. |
| ROCm multi-GPU | ✅ | Usa device=0,1 o device=[0, 1]; l'esecuzione distribuita segue lo stack PyTorch ROCm installato. |
| Mixed Precision automatica (AMP) di ROCm | ⚠️ | Disponibile quando le versioni installate di PyTorch e ROCm superano i controlli AMP di Ultralytics; usa amp=False se non sono compatibili. |
| Esportazione ONNX | ✅ | L'esportazione è supportata, ma il file ONNX di per sé non fornisce un runtime accelerato per AMD. |
| Inferenza MIGraphX | 🚧 | Non disponibile nel pacchetto Python attuale; il lavoro di implementazione è tracciato in PR #24137. |
| Immagine Docker AMD e CI su hardware AMD | 🚧 | Tracciati anch'essi in PR #24137, non forniti dalla sola selezione del dispositivo ROCm. |
| Windows DirectML | ❌ Python | Nel pacchetto Python non è presente alcun backend DirectML per l'addestramento o la predizione. |
| NPU Ryzen AI | ❌ | Nessuna integrazione NPU nativa di Ultralytics; i workflow ONNX/Vitis AI esterni sono gestiti dalla community. |
| CPU AMD | ✅ CPU | Usa device=cpu; si tratta di un'esecuzione CPU standard, non di un backend di accelerazione specifico per AMD. |
La disponibilità di ROCm dipende dalla GPU esatta, dal sistema operativo, dalla versione di ROCm e dalla build di PyTorch. Conferma il tuo hardware nella matrice di compatibilità ROCm di AMD prima dell'installazione. Ultralytics non può aggiungere il supporto per un dispositivo che la build ROCm di PyTorch installata non espone.
Perché ROCm usa i nomi dei dispositivi CUDA#
La build ROCm di PyTorch usa internamente HIP, ma riutilizza deliberatamente le interfacce torch.cuda. Ad esempio,
torch.cuda.is_available(), torch.cuda.device_count() e torch.cuda.get_device_name() funzionano con le GPU AMD supportate.
Questo design consente allo stesso percorso di addestramento Ultralytics di servire CUDA NVIDIA e ROCm AMD senza un backend duplicato.
Consulta la semantica HIP di PyTorch ufficiale per maggiori dettagli.
Nel pacchetto Python, usa device=0 o device=cuda:0 per PyTorch ROCm. Non usare device=rocm:0; rocm non è
un tipo di dispositivo PyTorch.
Installa PyTorch ROCm#
-
Verifica che il tuo sistema operativo e la tua GPU siano presenti nella matrice di compatibilità ROCm.
-
Usa il selettore di installazione di PyTorch per scegliere la build ROCm corrispondente alla versione ROCm installata.
-
Installa Ultralytics dopo PyTorch:
pip install ultralytics -
Verifica che PyTorch rilevi la GPU AMD:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available() dovrebbe restituire True, il nome del dispositivo dovrebbe identificare la tua GPU AMD e torch.version.hip
dovrebbe riportare la versione HIP fornita dalla build ROCm.
Addestra su una GPU AMD#
Usa gli stessi argomenti del dispositivo della modalità Train di Ultralytics standard.
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])La validazione e la predizione usano la stessa selezione del dispositivo:
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=0Compatibilità AMP#
Ultralytics abilita AMP per impostazione predefinita e confronta i risultati a precisione completa e a precisione mista prima dell'addestramento. Se il controllo
rileva risultati incompatibili, AMP viene disabilitato per prevenire perdite NaN o un addestramento con mAP pari a zero. Il comportamento di AMP su ROCm può cambiare
in base alle versioni di PyTorch e ROCm, quindi usa amp=False durante la risoluzione dei problemi relativi a un errore specifico dello stack:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseFunzionalità non ancora supportate#
MIGraphX#
MIGraphX è il runtime AMD per l'ottimizzazione dei grafi e l'inferenza. Il caricamento nativo dei modelli MIGraphX non è incluso nell'attuale pacchetto Python di Ultralytics. L'implementazione attiva, il container AMD, le dipendenze, i test e la documentazione sono tracciati insieme in PR #24137. Fino a quando questo lavoro non sarà integrato e non riceverà la validazione su hardware AMD, l'esportazione di un modello ONNX non deve essere descritta come supporto nativo a MIGraphX nel pacchetto Python.
DirectML#
Il pacchetto Python di Ultralytics non dispone di un backend DirectML per l'addestramento o la predizione su Windows. DirectML è distinto da
ROCm e un ambiente ROCm funzionante non abilita device=directml.
NPU Ryzen AI#
Le NPU Ryzen AI non sono esposte tramite PyTorch ROCm e non sono dispositivi nativi di Ultralytics. I workflow della community possono esportare i modelli YOLO in ONNX ed eseguirli con gli strumenti esterni Ryzen AI o Vitis AI di AMD, ma tale runtime, la conversione e la compatibilità hardware sono al di fuori del percorso di esecuzione supportato da Ultralytics.
Riepilogo#
Usa una build PyTorch ROCm compatibile con device=0 o device=cuda:0 per l'addestramento, la validazione e
l'inferenza supportati su GPU AMD. Considera MIGraphX, DirectML e NPU Ryzen AI come funzionalità separate: nessuna è abilitata semplicemente installando
ROCm o esportando un modello ONNX.
FAQ#
Il pacchetto PyTorch installato potrebbe essere una build CPU o CUDA, oppure la GPU potrebbe non essere supportata dallo stack ROCm attivo. Installa la build ROCm corrispondente dal selettore PyTorch e verifica la GPU rispetto alla matrice di compatibilità di AMD.
È previsto. PyTorch ROCm usa intenzionalmente l'API
torch.cudae le stringhe dei dispositivi nello stile CUDA per la compatibilità con Python. Il modello viene comunque eseguito tramite HIP e ROCm sulla GPU AMD.No. ONNX è un formato portabile per i modelli. L'esecuzione accelerata richiede comunque un runtime compatibile e i backend nativi MIGraphX, DirectML e NPU Ryzen AI non sono inclusi nell'attuale pacchetto Python di Ultralytics.