Link to this sectionAddestramento 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 API Python torch.cuda utilizzata da CUDA, quindi Ultralytics non ha bisogno 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 normale sintassi 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.
Link to this sectionSupporto a colpo d'occhio#
Questa tabella descrive il pacchetto Python di Ultralytics utilizzato 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. |
| ROCm Automatic Mixed Precision (AMP) | ⚠️ | Disponibile quando le versioni installate di PyTorch e ROCm superano i controlli AMP di Ultralytics; usa amp=False se non compatibili. |
| Esportazione ONNX | ✅ | L'esportazione è supportata, ma il file ONNX di per sé non fornisce un runtime accelerato da AMD. |
| Inferenza MIGraphX | 🚧 | Non disponibile nell'attuale pacchetto Python; il lavoro di implementazione è tracciato nella PR #24137. |
| Immagine Docker AMD e CI hardware AMD | 🚧 | Tracciato anche nella PR #24137, non fornito dalla sola selezione del dispositivo ROCm. |
| Windows DirectML | ❌ Python | Nessun backend di addestramento o predizione DirectML nel pacchetto Python. |
| Ryzen AI NPU | ❌ | Nessuna integrazione NPU Ultralytics nativa; i flussi di lavoro ONNX/Vitis AI esterni sono gestiti dalla community. |
| CPU AMD | ✅ CPU | Usa device=cpu; questa è la normale esecuzione su CPU, non 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 PyTorch ROCm installata non espone.
Link to this sectionPerché ROCm utilizza i nomi dei dispositivi CUDA#
La build ROCm di PyTorch utilizza 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 di Ultralytics di servire NVIDIA CUDA e AMD ROCm senza un backend duplicato.
Vedi la semantica HIP di PyTorch ufficiale per i 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.
Link to this sectionInstalla PyTorch ROCm#
-
Verifica che il tuo sistema operativo e la tua GPU compaiano nella matrice di compatibilità ROCm.
-
Usa il selettore di installazione PyTorch per scegliere la build ROCm corrispondente alla tua 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.
Link to this sectionAddestra su una GPU AMD#
Usa gli stessi argomenti di 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 utilizzano 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=0Link to this sectionCompatibilità AMP#
Ultralytics abilita AMP per impostazione predefinita e confronta i risultati in precisione mista e singola prima dell'addestramento. Se il controllo rileva risultati incompatibili, AMP viene disabilitato per evitare perdite NaN o un addestramento con mAP a zero. Il comportamento di ROCm AMP può variare a seconda delle versioni di PyTorch e ROCm, quindi usa amp=False quando risolvi un problema specifico dello stack:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseLink to this sectionFunzionalità non ancora supportate#
Link to this sectionMIGraphX#
MIGraphX è il runtime di ottimizzazione dei grafi e inferenza di AMD. 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 nella PR #24137. Fino a quando tale lavoro non verrà unito e riceverà la validazione dell'hardware AMD, l'esportazione di un modello ONNX non deve essere descritta come supporto MIGraphX nativo nel pacchetto Python.
Link to this sectionDirectML#
Il pacchetto Python di Ultralytics non ha un backend DirectML per l'addestramento o la predizione su Windows. DirectML è distinto da ROCm e un ambiente ROCm funzionante non abilita device=directml.
Link to this sectionRyzen AI NPU#
Le NPU Ryzen AI non sono esposte tramite PyTorch ROCm e non sono dispositivi Ultralytics nativi. I flussi di lavoro 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, conversione e compatibilità hardware esulano dal percorso di esecuzione supportato da Ultralytics.
Link to this sectionRisoluzione dei problemi#
Link to this sectionPerché torch.cuda.is_available() restituisce False sul mio sistema AMD?#
Il pacchetto PyTorch installato potrebbe essere una build per 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.
Link to this sectionPerché Ultralytics dice CUDA quando ho una GPU AMD?#
Questo è previsto. PyTorch ROCm utilizza intenzionalmente l'API torch.cuda e stringhe di dispositivi in stile CUDA per la compatibilità con Python. Il modello viene comunque eseguito tramite HIP e ROCm sulla GPU AMD.
Link to this sectionL'esportazione ONNX abilita automaticamente MIGraphX o Ryzen AI?#
No. ONNX è un formato di modello portabile. L'esecuzione accelerata richiede comunque un runtime compatibile e i backend nativi MIGraphX, DirectML e Ryzen AI NPU non sono inclusi nell'attuale pacchetto Python di Ultralytics.
Link to this sectionRiepilogo#
Usa una build PyTorch ROCm compatibile con device=0 o device=cuda:0 per l'addestramento, la validazione e l'inferenza su GPU AMD supportate. Tratta MIGraphX, DirectML e Ryzen AI NPU come funzionalità separate: nessuna viene abilitata semplicemente installando ROCm o esportando un modello ONNX.