- 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ışı
- CUDA ve Metal gibi mevcut hedeflerin tüm MLC hattı
- Ü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.ChatModuleileLlama-2-7b-chat-hf-q4f16_1modelini yüklüyor vebenchmark_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.