Ultralytics YOLO ve ROCm ile AMD GPU Eğitimi#
Ultralytics, PyTorch ROCm aracılığıyla uyumlu AMD GPU'larda eğitim, doğrulama ve çıkarımı destekler. PyTorch, ROCm cihazlarını CUDA tarafından kullanılan aynı torch.cuda Python API'si üzerinden bilerek sunar; bu nedenle Ultralytics'in yerel PyTorch modelleri için ayrı bir rocm cihaz türüne ihtiyacı yoktur. PyTorch'un ROCm derlemesini yükledikten sonra standart device=0 veya device=cuda:0 sözdizimiyle bir AMD GPU seç.
AMD ayrıca PyTorch ROCm'dan ayrı çıkarım teknolojileri de sunar. Bir AMD ürününün desteklenmesi, her AMD çalışma zamanının veya hızlandırıcısının desteklendiği anlamına gelmez.
Genel Bakışta Destek#
Bu tablo, eğitim, doğrulama, dışa aktarma ve tahmin için kullanılan Ultralytics Python paketini açıklar.
| AMD ürünü veya çalışma zamanı | Ultralytics desteği | Kullanım veya durum |
|---|---|---|
| ROCm ile AMD Instinct ve desteklenen Radeon GPU'lar | ✅ | device=0 veya device=cuda:0 ile yerel PyTorch modellerini eğit, doğrula ve çalıştır. |
| Çoklu GPU ROCm | ✅ | device=0,1 veya device=[0, 1] kullan; dağıtık yürütme, yüklenmiş PyTorch ROCm yığınını izler. |
| ROCm Otomatik Karma Hassasiyet (AMP) | ⚠️ | Yüklenmiş PyTorch ve ROCm sürümleri Ultralytics AMP kontrollerini geçtiğinde kullanılabilir; uyumsuzsa amp=False kullan. |
| ONNX dışa aktarma | ✅ | Dışa aktarma desteklenir, ancak ONNX dosyası tek başına AMD hızlandırmalı bir çalışma zamanı sağlamaz. |
| MIGraphX çıkarımı | 🚧 | Mevcut Python paketinde kullanılamaz; uygulama çalışmaları PR #24137 kapsamında izlenmektedir. |
| AMD Docker görüntüsü ve AMD donanım CI'si | 🚧 | Bu da PR #24137 kapsamında izlenmektedir; yalnızca ROCm cihaz seçimiyle sağlanmaz. |
| Windows DirectML | ❌ Python | Python paketinde DirectML eğitim veya tahmin arka ucu yoktur. |
| Ryzen AI NPU | ❌ | Yerel Ultralytics NPU entegrasyonu yoktur; harici ONNX/Vitis AI iş akışları topluluk tarafından yönetilir. |
| AMD CPU'ları | ✅ CPU | device=cpu kullan; bu, AMD'ye özgü bir hızlandırma arka ucu değil, standart CPU yürütmesidir. |
ROCm kullanılabilirliği; belirli GPU'ya, işletim sistemine, ROCm sürümüne ve PyTorch derlemesine bağlıdır. Yükleme işleminden önce donanımını AMD'nin ROCm uyumluluk matrisinde doğrula. Ultralytics, yüklenmiş PyTorch ROCm derlemesinin sunmadığı bir cihaz için destek ekleyemez.
ROCm Neden CUDA Cihaz Adlarını Kullanıyor?#
PyTorch'un ROCm derlemesi dahili olarak HIP kullanır, ancak torch.cuda arayüzlerini kasıtlı olarak yeniden kullanır. Örneğin torch.cuda.is_available(), torch.cuda.device_count() ve torch.cuda.get_device_name(), desteklenen AMD GPU'larla çalışır. Bu tasarım, aynı Ultralytics eğitim yolunun yinelenen bir arka uç olmadan NVIDIA CUDA ve AMD ROCm'ye hizmet etmesini sağlar.
Ayrıntılar için resmi PyTorch HIP semantiğine bak.
Python paketinde PyTorch ROCm için device=0 veya device=cuda:0 kullan. device=rocm:0 kullanma; rocm bir PyTorch cihaz türü değildir.
PyTorch ROCm'yi yükle#
-
İşletim sisteminin ve GPU'nun ROCm uyumluluk matrisinde göründüğünü doğrula.
-
Yüklenmiş ROCm sürümünle eşleşen ROCm derlemesini seçmek için PyTorch yükleme seçicisini kullan.
-
PyTorch'tan sonra Ultralytics'i yükle:
pip install ultralytics -
PyTorch'un AMD GPU'yu gördüğünü doğrula:
import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0)) print(torch.version.hip)
torch.cuda.is_available(), True değerini döndürmeli; cihaz adı AMD GPU'nu tanımlamalı ve torch.version.hip, ROCm derlemesi tarafından sağlanan HIP sürümünü bildirmelidir.
AMD GPU'da eğitim yap#
Standart Ultralytics Eğitim modu ile aynı cihaz bağımsız değişkenlerini kullan.
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])Doğrulama ve tahmin aynı cihaz seçimini kullanır:
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=0AMP Uyumluluğu#
Ultralytics, AMP'yi varsayılan olarak etkinleştirir ve eğitimden önce tam hassasiyetli ve karma hassasiyetli sonuçları karşılaştırır. Kontrol uyumsuz sonuçlar tespit ederse NaN kayıplarını veya sıfır-mAP eğitimini önlemek için AMP devre dışı bırakılır. ROCm AMP davranışı PyTorch ve ROCm sürümlerine göre değişebilir; bu nedenle yığın özelindeki bir hatayı araştırırken amp=False kullan:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseHenüz Desteklenmeyen Özellikler#
MIGraphX#
MIGraphX, AMD'nin grafik optimizasyonu ve çıkarım çalışma zamanıdır. Yerel MIGraphX model yükleme, mevcut Ultralytics Python paketine dahil değildir. Etkin uygulama, AMD konteyneri, bağımlılıklar, testler ve belgeler PR #24137 kapsamında birlikte izlenmektedir. Bu çalışma birleştirilip AMD donanım doğrulamasından geçene kadar bir ONNX modelinin dışa aktarılması, Python paketinde yerel MIGraphX desteği olarak tanımlanmamalıdır.
DirectML#
Ultralytics Python paketinde Windows eğitimi veya tahmini için DirectML arka ucu yoktur. DirectML, ROCm'dan farklıdır ve çalışan bir ROCm ortamı device=directml özelliğini etkinleştirmez.
Ryzen AI NPU#
Ryzen AI NPU'ları PyTorch ROCm aracılığıyla sunulmaz ve yerel Ultralytics cihazları değildir. Topluluk iş akışları YOLO modellerini ONNX'e dışa aktarabilir ve AMD'nin harici Ryzen AI veya Vitis AI araçlarıyla çalıştırabilir; ancak bu çalışma zamanı, dönüştürme ve donanım uyumluluğu desteklenen Ultralytics yürütme yolunun dışındadır.
Özet#
Desteklenen AMD GPU eğitimi, doğrulaması ve çıkarımı için device=0 veya device=cuda:0 ile uyumlu bir PyTorch ROCm derlemesi kullan. MIGraphX, DirectML ve Ryzen AI NPU'yu ayrı yetenekler olarak değerlendir: bunların hiçbiri yalnızca ROCm yükleyerek veya bir ONNX modeli dışa aktararak etkinleşmez.
SSS#
Yüklenmiş PyTorch paketi bir CPU veya CUDA derlemesi olabilir ya da GPU etkin ROCm yığını tarafından desteklenmiyor olabilir. PyTorch seçicisinden eşleşen ROCm derlemesini yükle ve GPU'yu AMD'nin uyumluluk matrisine göre doğrula.
Bu beklenen bir durumdur. PyTorch ROCm, Python uyumluluğu için kasıtlı olarak
torch.cudaAPI'sini ve CUDA tarzı cihaz dizelerini kullanır. Model yine de AMD GPU'da HIP ve ROCm üzerinden yürütülür.Hayır. ONNX, taşınabilir bir model biçimidir. Hızlandırılmış yürütme yine de uyumlu bir çalışma zamanı gerektirir ve yerel MIGraphX, DirectML ve Ryzen AI NPU arka uçları mevcut Ultralytics Python paketine dahil değildir.