Ultralytics YOLO27:

Addestramento su GPU AMD con Ultralytics YOLO e ROCm#

Ultralytics supporta l'addestramento, la convalida e l'inferenza su GPU AMD compatibili tramite PyTorch ROCm. PyTorch espone intenzionalmente i dispositivi ROCm tramite la stessa torch.cuda API Python usata da CUDA, quindi Ultralytics non necessita di un tipo di dispositivo rocm separato per i modelli PyTorch nativi. Installa una versione di PyTorch con ROCm, quindi seleziona una GPU AMD usando la sintassi standard device=0 o device=cuda:0.

AMD offre anche tecnologie di inferenza distinte da PyTorch ROCm. Il supporto di un prodotto AMD non implica il supporto di tutti i runtime o acceleratori AMD.

Panoramica del supporto#

Questa tabella descrive il pacchetto Python Ultralytics usato per l'addestramento, la convalida, l'esportazione e la predizione.

Prodotto o runtime AMDSupporto UltralyticsUtilizzo o stato
AMD Instinct e GPU Radeon supportate con ROCm✅Addestra, convalida 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.
Precisione mista automatica ROCm (AMP)⚠️Disponibile quando le versioni installate di PyTorch e ROCm superano i controlli AMP di Ultralytics; usa amp=False in caso di incompatibilità.
Esportazione ONNX✅L'esportazione è supportata, ma il file ONNX da solo non fornisce un runtime accelerato da AMD.
Inferenza MIGraphX🚧Non disponibile nel pacchetto Python corrente; il lavoro di implementazione è tracciato in PR #24137.
Immagine Docker AMD e CI su hardware AMD🚧Tracciato anch'esso in PR #24137, non è fornito dalla sola selezione del dispositivo ROCm.
Windows DirectML❌ PythonIl pacchetto Python non include un backend DirectML per l'addestramento o la predizione.
NPU Ryzen AI❌Nessuna integrazione NPU nativa di Ultralytics; i flussi di lavoro esterni ONNX/Vitis AI sono gestiti dalla community.
CPU AMD✅ CPUUsa device=cpu; si tratta di un'esecuzione standard su CPU, non di un backend di accelerazione specifico di 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. Prima dell'installazione, verifica l'hardware nella matrice di compatibilità ROCm di AMD. 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 HIP internamente, ma riutilizza intenzionalmente 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 flusso di addestramento Ultralytics di supportare NVIDIA CUDA e AMD ROCm senza un backend duplicato.

Per i dettagli, consulta la documentazione ufficiale semantica HIP di PyTorch.

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 siano presenti nella matrice di compatibilità ROCm.

  2. Usa il selettore di installazione di PyTorch per scegliere la build ROCm corrispondente alla 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 indicare la versione HIP fornita dalla build ROCm.

Addestra su una GPU AMD#

Usa gli stessi argomenti del dispositivo della modalità Train di Ultralytics standard.

Addestramento ROCm
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Addestra sulla prima GPU AMD esposta da PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Addestra su due GPU AMD
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

La convalida 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=0

Compatibilità AMP#

Ultralytics abilita AMP per impostazione predefinita e confronta i risultati in precisione completa e mista prima dell'addestramento. Se il controllo rileva risultati incompatibili, AMP viene disabilitato per evitare perdite NaN o un addestramento con mAP pari a zero. Il comportamento di AMP su ROCm può variare in base alle versioni di PyTorch e ROCm; per risolvere i problemi specifici dello stack, usa amp=False:

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

Funzionalità non ancora supportate#

MIGraphX#

MIGraphX è il runtime AMD per l'ottimizzazione dei grafi e l'inferenza. Il caricamento nativo dei modelli MIGraphX non è incluso nel pacchetto Python Ultralytics corrente. L'implementazione attiva, il container AMD, le dipendenze, i test e la documentazione sono tracciati insieme in PR #24137. Finché il lavoro non sarà integrato e convalidato su hardware AMD, l'esportazione di un modello ONNX non dovrebbe essere descritta come supporto nativo a MIGraphX nel pacchetto Python.

DirectML#

Il pacchetto Python Ultralytics non include 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 Ultralytics. I flussi di lavoro della community possono esportare i modelli YOLO in ONNX ed eseguirli con gli strumenti esterni AMD Ryzen AI o Vitis AI, ma quel runtime, la conversione e la compatibilità hardware non rientrano nel percorso di esecuzione supportato da Ultralytics.

Per l'addestramento, la convalida e l'inferenza supportati sulle GPU AMD, usa una build compatibile di PyTorch ROCm con device=0 o device=cuda:0. Considera MIGraphX, DirectML e le NPU Ryzen AI come funzionalità separate: nessuna viene abilitata semplicemente installando ROCm o esportando un modello ONNX.

Domande frequenti#

  • 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 nella matrice di compatibilità AMD.

  • È previsto. PyTorch ROCm usa intenzionalmente l'API torch.cuda e stringhe di dispositivo in stile CUDA per garantire la compatibilità con Python. Il modello viene comunque eseguito sulla GPU AMD tramite HIP e ROCm.

  • No. ONNX è un formato di modello portabile. Per l'esecuzione accelerata è comunque necessario un runtime compatibile, e i backend nativi MIGraphX, DirectML e NPU Ryzen AI non sono inclusi nel pacchetto Python Ultralytics corrente.

Collaboratori

Commenti