YOLO Vision 2026:

Addestramento 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 tramite 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.

Supporto 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 AMDSupporto UltralyticsUtilizzo o stato
AMD Instinct e GPU Radeon supportate con ROCmAddestra, valida ed esegui modelli PyTorch nativi con device=0 o device=cuda:0.
ROCm multi-GPUUsa 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 in caso di incompatibilità.
Esportazione ONNXL'esportazione è supportata, ma il file ONNX di per sé non fornisce un runtime accelerato da AMD.
Inferenza MIGraphX🚧Non disponibile nel pacchetto Python corrente; 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❌ PythonNessun backend di addestramento o predizione DirectML nel pacchetto Python.
Ryzen AI NPUNessuna integrazione NPU Ultralytics nativa; i flussi di lavoro ONNX/Vitis AI esterni sono gestiti dalla community.
CPU AMD✅ CPUUsa device=cpu; questa è la normale esecuzione su CPU, non un backend di accelerazione specifico per AMD.
Verifica prima la compatibilità tra AMD e PyTorch

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.

Perché 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 pagina ufficiale Semantica HIP di PyTorch per i dettagli.

Importante

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#

  1. Verifica che il tuo sistema operativo e la tua GPU compaiano nella matrice di compatibilità ROCm.

  2. Usa il selettore di installazione di PyTorch per scegliere la build ROCm corrispondente alla tua versione di ROCm installata.

  3. Installa Ultralytics dopo PyTorch:

    pip install ultralytics
  4. 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 di dispositivo della modalità di addestramento di Ultralytics standard.

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

Compatibilità AMP#

Ultralytics abilita AMP per impostazione predefinita e confronta i risultati in precisione mista e precisione piena 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 ROCm AMP può variare con le versioni di PyTorch e ROCm, quindi usa amp=False durante la risoluzione di un problema specifico dello stack:

yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=False

Funzionalità non ancora supportate#

MIGraphX#

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. Finché tale lavoro non verrà unito e riceverà la validazione dell'hardware AMD, l'esportazione di un modello ONNX non dovrebbe essere descritta come supporto nativo per MIGraphX nel pacchetto Python.

DirectML#

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.

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

Risoluzione dei problemi#

Perché 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.

Perché 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.

L'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.

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 di esse viene abilitata semplicemente installando ROCm o esportando un modello ONNX.

Collaboratori

Commenti