Ultralytics YOLO27:

Ultralytics YOLO ve ROCm ile AMD GPU'da eğitim#

Ultralytics, uyumlu AMD GPU'larda PyTorch ROCm aracılığıyla eğitim, doğrulama ve çıkarım işlemlerini destekler. PyTorch, ROCm aygıtlarını CUDA ile aynı torch.cuda Python API'si üzerinden sunar; bu nedenle Ultralytics'ın yerel PyTorch modelleri için ayrı bir rocm aygıt türüne ihtiyacı yoktur. PyTorch'un ROCm derlemesini yükle, ardından standart device=0 veya device=cuda:0 söz dizimini kullanarak bir AMD GPU seç.

AMD ayrıca PyTorch ROCm'den ayrı çıkarım teknolojileri de sunar. Bir AMD ürününün desteklenmesi, her AMD çalışma ortamının veya hızlandırıcısının desteklendiği anlamına gelmez.

Destek Özeti#

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 ortamıUltralytics desteğiKullanım veya durum
ROCm ile AMD Instinct ve desteklenen Radeon GPU'lar✅Yerel PyTorch modellerini device=0 veya device=cuda:0 ile 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üklenen PyTorch ve ROCm sürümleri Ultralytics AMP denetimlerinden geçtiğinde kullanılabilir; uyumsuzluk varsa amp=False kullan.
ONNX dışa aktarma✅Dışa aktarma desteklenir, ancak ONNX dosyası tek başına AMD hızlandırmalı bir çalışma ortamı sağlamaz.
MIGraphX çıkarımı🚧Mevcut Python paketinde kullanılamaz; uygulama çalışmaları PR #24137 üzerinden takip ediliyor.
AMD Docker imajı ve AMD donanım CI'si🚧Bu çalışmalar da PR #24137 üzerinden takip ediliyor; yalnızca ROCm aygıtı seçilerek sağlanmıyor.
Windows DirectML❌ PythonPython 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✅ CPUdevice=cpu kullan; bu, AMD'ye özgü bir hızlandırma arka ucu değil, standart CPU yürütmesidir.
Önce AMD ve PyTorch uyumluluğunu denetle

ROCm kullanılabilirliği, GPU modeline, işletim sistemine, ROCm sürümüne ve PyTorch derlemesine bağlıdır. Yükleme yapmadan önce donanımını AMD'nin ROCm uyumluluk matrisinden doğrula. Yüklenen PyTorch ROCm derlemesinin sunmadığı bir aygıt için Ultralytics destek ekleyemez.

ROCm Neden CUDA Aygıt Adlarını Kullanıyor?#

PyTorch'un ROCm derlemesi, HIP'i dahili olarak kullanır ancak torch.cuda arayüzlerini bilerek 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 uca ihtiyaç duymadan NVIDIA CUDA ve AMD ROCm'de çalışmasını sağlar.

Ayrıntılar için resmi PyTorch HIP semantiğine bak.

Önemli

Python paketinde PyTorch ROCm için device=0 veya device=cuda:0 kullan. device=rocm:0 kullanma; rocm, bir PyTorch aygıt türü değildir.

PyTorch ROCm'yi yükle#

  1. İşletim sisteminin ve GPU'nun ROCm uyumluluk matrisinde yer aldığını doğrula.

  2. Yüklediğin ROCm sürümüyle eşleşen ROCm derlemesini seçmek için PyTorch yükleme seçicisini kullan.

  3. PyTorch'tan sonra Ultralytics'ı yükle:

    pip install ultralytics
  4. 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; aygıt adı AMD GPU'nu belirtmeli ve torch.version.hip, ROCm derlemesinin sağladığı HIP sürümünü bildirmelidir.

AMD GPU'da eğitim yap#

Standart Ultralytics Eğitim modundaki aygıt bağımsız değişkenlerinin aynısını kullan.

ROCm ile Eğitim
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# PyTorch ROCm'nin gördüğü ilk AMD GPU'da eğitim yap
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# İki AMD GPU'da eğitim yap
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

Doğrulama ve tahmin için aynı aygıt seçimi kullanılı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=0

AMP 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. Denetim uyumsuz sonuçlar tespit ederse NaN kayıplarını veya sıfır mAP ile eğitimi ö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ığına özgü bir sorunu giderirken amp=False kullan.

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

Henüz Desteklenmeyen Özellikler#

MIGraphX#

MIGraphX, AMD'nin grafik optimizasyonu ve çıkarım çalışma ortamıdır. Yerel MIGraphX model yükleme özelliği mevcut Ultralytics Python paketine dahil değildir. Etkin uygulama, AMD kapsayıcısı, bağımlılıklar, testler ve belgeler birlikte PR #24137 üzerinden takip ediliyor. Bu çalışma birleştirilip AMD donanımında doğrulanana kadar ONNX modelini dışa aktarmak, Python paketinde yerel MIGraphX desteği olduğu şeklinde tanımlanmamalıdır.

DirectML#

Ultralytics Python paketinde Windows eğitim veya tahmini için DirectML arka ucu yoktur. DirectML, ROCm'den 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 aygıtları değildir. Topluluk iş akışlarında YOLO modelleri ONNX'e aktarılıp AMD'nin harici Ryzen AI veya Vitis AI araçlarıyla çalıştırılabilir; ancak bu çalışma ortamı, dönüştürme ve donanım uyumluluğu desteklenen Ultralytics yürütme yolunun dışındadır.

Özet#

Desteklenen AMD GPU'larda eğitim, doğrulama 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 modelini dışa aktararak etkinleşmez.

Sık Sorulan Sorular#

  • Yüklenen PyTorch paketi bir CPU veya CUDA derlemesi olabilir ya da GPU etkin ROCm yığını tarafından desteklenmiyor olabilir. PyTorch seçicisinden uygun ROCm derlemesini yükle ve GPU'nun AMD uyumluluk matrisinde yer aldığını doğrula.

  • Bu beklenen bir durumdur. PyTorch ROCm, Python uyumluluğu için bilerek torch.cuda API'sini ve CUDA tarzı aygıt dizelerini kullanır. Model yine de AMD GPU'da HIP ve ROCm üzerinden çalışır.

  • Hayır. ONNX, taşınabilir bir model biçimidir. Hızlandırmalı yürütme için yine de uyumlu bir çalışma ortamı gerekir ve yerel MIGraphX, DirectML ve Ryzen AI NPU arka uçları mevcut Ultralytics Python paketine dahil değildir.

Katkıda Bulunanlar

Yorumlar