1 puan yazan GN⁺ 2024-12-25 | Henüz yorum yok. | WhatsApp'ta paylaş
  • MLC-LLM, ROCm ile AMD GPU’larda LLM’lerin derlenip dağıtılmasını sağlıyor; Radeon RX 7900 XTX, Llama 2 7B/13B çıkarımında RTX 4090 hızının %80’ine, RTX 3090 Ti hızının %94’üne ulaşıyor
  • Karşılaştırılan üç GPU’nun da 24 GB belleği ve benzer bant genişliği var; gecikmeye duyarlı LLM çıkarımında FP16 işlem performansından çok bellek darboğazı daha belirleyici oluyor
  • AMD’nin farkı donanımın kendisinden ziyade yazılım desteği ve optimizasyon eksikliğinden kaynaklanıyordu; ROCm yatırımı ve makine öğrenimi derleme, birden çok arka ucu destekleme maliyetini azaltan eksenler olarak işliyor
  • ROCm Radeon 7900 XTX’e, Vulkan ise SteamDeck AMD APU’suna uygulanarak 4 bit nicemlenmiş Llama-7B’nin tüketici sınıfı AMD cihazlarda da çalıştırılabileceğini gösteriyor
  • Sonuçlar tekil batch benchmark’ına dayanıyor; attention optimizasyonları hem AMD hem NVIDIA tarafındaki sayıları değiştirebileceğinden %10 hata payı ile yorumlanmalı

ROCm tabanlı AMD GPU LLM çıkarımı

  • MLC-LLM, ROCm kullanarak AMD GPU’larda LLM’lerin derlenmesini ve dağıtılmasını sağlıyor
  • Radeon RX 7900 XTX’in Llama 2 7B/13B performansı şu seviyede
    • NVIDIA GeForce RTX 4090 hızının %80’i
    • NVIDIA GeForce RTX 3090 Ti hızının %94’ü
  • ROCm’nin yanı sıra Vulkan’ı da destekleyerek, AMD APU içeren SteamDeck gibi cihazlarla LLM dağıtım kapsamını genişletiyor

Donanım karşılaştırması ve gerçek darboğaz

  • AMD RX 7900 XTX, teknik özellikler açısından RTX 4090 ve RTX 3090 Ti ile karşılaştırılabilir bir konumda
    • Üç GPU’nun da 24 GB belleği olduğu için aynı boyuttaki modeller yüklenebiliyor
    • Bellek bant genişlikleri de birbirine benzer
    • RTX 4090’ın FP16 performansı RX 7900 XTX’ten 2 kat, RTX 3090 Ti’ın ise 1,3 kat daha yüksek
  • Gecikmeye duyarlı LLM çıkarımı çoğunlukla bellek darboğazına takıldığından, burada FP16 performans farkı temel darboğaz değil
  • RX 7900 XTX, RTX 4090’dan %40 daha ucuz
  • RTX 3090 Ti önceki nesil bir ürün olduğundan fiyat karşılaştırması daha zor ve referans noktası olarak kullanılıyor

AMD farkının nedeni ve MLC’nin yaklaşımı

  • AMD’nin geride kalmasının nedeni donanımdan çok ilgili modeller için yazılım desteği ve optimizasyon eksikliğine daha yakın
  • İki değişim bu farkı azaltan etkenler olarak işliyor
    • AMD, ROCm yığınına yatırım yaparak arayı kapatmaya çalışıyor
    • Makine öğrenimi derleme, birden çok arka uç için genel yazılım desteği maliyetini düşürüyor
  • Makine öğrenimi derleme, ROCm veya CUDA için tek tek çekirdekleri doğrudan yazmak yerine makine öğrenimi işlerini derliyor ve optimizasyonu otomatikleştiriyor
  • MLC-LLM, Apache TVM Unity üzerine inşa edilmiş makine öğrenimi derleme tabanlı bir LLM dağıtım çözümü
    • Python odaklı bir geliştirme akışı sunuyor
    • Hesaplama grafiği dönüşümleri, GPU çekirdek yerleşimi ve zamanlama optimizasyonu, yerel dağıtım API’leri içeriyor
    • CUDA, Metal, ROCm, Vulkan, OpenCL’i destekliyor
    • Sunucu sınıfı GPU’lardan iPhone ve Android gibi mobil cihazlara kadar kapsamı genişletiyor

AMD GPU ve APU destek yöntemi

  • AMD GPU destek yolları arasında ROCm, OpenCL, Vulkan, WebGPU bulunuyor
    • ROCm, AMD’nin son dönemde öne çıkardığı yığın ve CUDA’ya benzer bileşenlere sahip
    • Vulkan, modern bir grafik standardı ve GPU cihazları genelinde geniş destek görüyor
    • WebGPU, hesaplamaların web tarayıcısında çalıştırılmasını sağlayan modern bir web standardı
  • CUDA dışı çözümler geliştiren makine öğrenimi yazılımları az; her yeni donanım veya GPU programlama modeli için yığını kopyalamanın mühendislik maliyeti yüksek
  • MLC, her arka uç için GPU çekirdeklerini yeniden yazmadan otomatik kod üretimi ile birden çok yolu destekliyor
  • Gerçek performans, düşük seviyeli GPU çalışma zamanının kalitesine ve her platformdaki kullanılabilirliğe bağlı

ROCm optimizasyon uygulaması

  • Radeon 7900 XTX için ROCm, SteamDeck APU için Vulkan seçiliyor
  • ROCm yığını doğrudan çalıştı ve TVM Unity’nin Python tabanlı geliştirme hattı sayesinde birkaç saat içinde optimize edilmiş bir sürüm eklenebildi
  • ROCm desteğinde mevcut bileşenler yeniden kullanılıyor
    • CUDA ve Metal gibi mevcut hedeflerin tüm MLC hattı
      • Bellek planlama
      • Operatör füzyonu
    • TVM TensorIR ile yazılmış genel GPU çekirdek optimizasyon alanı
    • LLVM üzerinden düşük seviyeli ROCm çekirdekleri üreten TVM’nin ROCm kod üretim akışı
  • Üretilen kod paylaşımlı kütüphane veya statik kütüphane olarak dışa aktarılıyor ve CLI, Python, REST API üzerinden çağrılabiliyor

Llama 2 benchmark koşulları ve yorum

  • Benchmark, Llama 2 7B ve 13B modellerini 4 bit nicemleme ile ölçüyor
  • Decode performansı, tek bir prompt token’ı verip 512 token üretme yöntemiyle ölçülüyor
  • Tüm sonuçlar tekil batch çıkarımı temelinde
  • ROCm 5.6 sürümü itibarıyla tekil batch çıkarım performansı NVIDIA 4090 hızının %80’ine ulaşıyor
  • CUDA taban çizgisi, bu iş yükünde o dönemin en üst seviyesi olarak kabul ediliyor
  • Daha iyi attention optimizasyonları gibi iyileştirme alanları var; bu optimizasyonlar MLC’ye girdiğinde hem AMD hem NVIDIA sayıları iyileşebilir
  • Optimizasyon yalnızca NVIDIA tarafında uygulanırsa fark %20’den %30’a çıkabileceği için, sayıların yorumlanmasında %10 hata payı bırakılması öneriliyor

Doğrudan çalıştırma koşulları ve örnek

  • Benchmark’ı yeniden üretmek için önceden derlenmiş wheel paketleri ve çalıştırma yönergeleri sağlanıyor
  • Çalıştırma koşulu, Linux üzerinde ROCm 5.6 veya üzerini çalıştıran bir AMD GPU
  • ROCm etkinleştirilmiş önceden derlenmiş MLC paketinin kurulumu için MLC-LLM deneme belgesi izleniyor
  • Python örneği, mlc_chat.ChatModule ile Llama-2-7b-chat-hf-q4f16_1 modelini yüklüyor ve benchmark_generate("Hi", generate_length=512) ile performansı ölçüyor
  • MLC-LLM etkileşimli CLI de sağlıyor; ancak ROCm’de CLI’nin kaynak koddan derlenmesi gerekiyor ve CLI derleme belgesi izleniyor

SteamDeck’te Vulkan ve birleşik bellek kullanımı

  • SteamDeck, AMD APU taşıyan daha geniş AMD cihaz ailesinin bir örneği olarak kullanılıyor
  • ROCm’de kullanılabilen GPU VRAM’i BIOS’ta 4 GB ile sınırlı
  • Mesa Vulkan sürücüsü, birleşik bellek üzerinden tamponların bu sınırı aşarak 16 GB’a kadar kullanabilmesini sağlıyor
  • Bu bellek kapasitesi 4 bit nicemlenmiş Llama-7B çalıştırmak için yeterli
  • Sonuç olarak, çeşitli tüketici sınıfı AMD cihazlarda da LLM desteği olasılığı doğrulanıyor

Gelecek çalışmalar ve proje bağlantıları

  • Üretken yapay zeka çağında donanım erişilebilirliği önemli bir sorun haline geliyor
  • Makine öğrenimi derleme, birden çok donanım arka ucunda yüksek performanslı genel dağıtımı mümkün kılarak bu sorunu hafifletebilir
  • Mevcut araştırma tüketici sınıfı GPU’lara odaklanıyor
  • Önceki deneyimlere göre, tüketici GPU’ları için MLC optimizasyonları kimi zaman RTX 4090’dan A100 ve A10g’ye uzanacak şekilde bulut GPU’larına da genellenebiliyor
  • Gelecek çalışma alanları şunlar
    • Batching ve çoklu GPU desteği
    • PyTorch ekosistemi entegrasyonu
    • Daha fazla nicemleme yöntemi ve model mimarisi desteği
    • Daha fazla donanım arka ucunda otomatik optimizasyonun genişletilmesi
  • NVIDIA, sürekli inovasyonla hâlâ lider konumda; H100 gibi yeni donanımlar ve yazılım evrimiyle ortam değişebilir
  • MLC-LLM rehberi proje sayfasında sunuluyor; kaynak kod ise GitHub deposunda yer alıyor

Henüz yorum yok.

Henüz yorum yok.