18 puan yazan GN⁺ 2023-08-16 | 3 yorum | WhatsApp'ta paylaş
  • LLaMA çıkarım kodunun saf C++ ile yeniden yazılmış hali olan LLaMA.cpp sayesinde Pixel 5, M2 MacBook Pro, Raspberry Pi gibi çeşitli donanımlarda çalıştırmak mümkün
  • Büyük modeller normalde pahalı GPU'lar gerektirir; peki bu nasıl mümkün olabiliyor?
  • GPU'lar, yüksek bellek bant genişliği ve hesaplama gücü sayesinde derin öğrenme için avantajlıdır, ancak bellek bant genişliği çoğu zaman çıkarımın darboğazı olur
    • Çünkü gerçek hesaplama için verilerin HBM belleğinden (RAM) çip üstü belleğe taşınması gerekir
  • LLaMA ağırlıkları için RAM kullanımında Quantization (nicemleme) kritik önemdedir
    • Hassasiyeti düşürmek, modeli bellekte tutmak için gereken bellek miktarını dramatik biçimde azaltabilir
    • Nicemleme, modeli depolamak için gereken bellek miktarını azaltarak standart veri merkezi GPU'larının ve üst düzey tüketici GPU'larının belleğine sığmasını sağlar
  • Bellek bant genişliği, transformer örneklemesiyle ilgili neredeyse tüm işlemlerde sınırlayıcı etkendir
  • Nicemleme gibi yöntemlerle bellek gereksinimleri azaltıldığında servis etmek çok daha kolay hale gelir
  • Bu, distillation ya da "daha küçük modelleri daha uzun süre eğitme" yaklaşımının bir başka nedenidir

3 yorum

 
breezymind 2023-08-17

Yerel makinede LlamaCpp ile llama2’yi yükleyip embedding testi yaptım.

https://breezymind.com/llamacpp-embedding

 
xguru 2023-08-17

HN'deki ilk yorum faydalı görünüyor

"Merak edenler için söyleyeyim: Modeli nicemlediğinizde bir bedel ödersiniz.
https://oobabooga.github.io/blog/posts/perplexities/

Temelde doğruluk biraz düşer ve tuhaf yanıtlar alma, beklentiden sapma ya da halüsinasyon üretme olasılığı artar. Ancak parametre sayısı arttıkça kalite kaybı azalır. Bu yüzden model boyutu çok büyük olduğunda aradaki fark ihmal edilebilir düzeyde olur. Ayrıca bu yalnızca çıkarım maliyetidir. Eğitim ise tamamen farklı bir meseledir ve çok daha fazla güç gerektirir.

Buna rağmen tek bir sunucu rafında GPT3 düzeyinde performans görüyoruz. Daha sadece 1 yıl önce bu tür yapay zekalar kelimenin tam anlamıyla sihir gibiydi ve yalnızca büyük veri merkezlerinde çalıştırılabiliyordu diye düşünürseniz, bu müthiş bir başarı. Bant genişliği ve bellek kapasitesini artırmak muhtemelen, benim cahilce tahminime göre, ham hesaplama gücünü artırmaktan daha kolay olduğundan yakında gerçekten "akıllı" cihazlara sahip olabiliriz."

 
GN⁺ 2023-08-16
Hacker News görüşleri
  • Modeli kuantize etmenin maliyeti, bunun yol açtığı doğruluk kaybı ve anormal yanıt olasılıkları üzerine bir yazı; ancak modelin parametre sayısı arttıkça bu kayıp daha az önemli hale geliyor.
  • GPT3'ün etkileyici performansını vurgulayan bir yazı; artık tek bir sunucu rack'inde çalışabiliyor, bu da geçen yıl büyük veri merkezleri gerektiren yapay zekaya kıyasla büyük bir gelişme.
  • Token üretiminin seri olduğu ve bant genişliğiyle sınırlı kaldığı, ancak prompt yerleştirmenin böyle olmadığı ve 512+ batch ile çalıştırılabildiği belirtilen bir metin.
  • Llama.cpp artık karmaşıklığı büyük ölçüde etkilemeyen yaklaşık 4 bit kuantizasyona sahip. Q6_K ise FP16 ile neredeyse aynı karmaşıklığa sahipken çok daha küçük.
  • Llama.cpp'nin asıl sihri model bölme özelliği; bu sayede küçük ayrık GPU'lar prompt yerleştirmeyi ve model çıkarımının bir kısmını tamamen offload edebiliyor. Bu, üretken yapay zeka alanında benzersiz.
  • GPU backend'leri (OpenCL, Metal, CUDA, yakında ROCm ve Vulkan), Llama.cpp çalıştırmanın tercih edilen yolu. Bunlar olmadan masaüstünde 70B ya da 16GB RAM'li bir dizüstünde 33B çalıştırmak imkansız.
  • Go, Python ve diğer runtime'larla kolay genişletilebilirliği sayesinde proje övgü alıyor. Bununla Go üzerinden birden fazla modeli çekip çalıştıran ve bunları REST API'de sunan araçlar geliştirildi.
  • AVX2'li modern CPU'larda çıkarım çalıştırmak GPU'dan daha yavaş, ancak tek ve uzun bir kesintisiz RAM bölgesine sahip olma avantajı sunuyor. Buna karşın 4 bit kuantizasyon ve x86_64 CPU'da fp32 dışındaki türlerle çıkarım çalıştırma seçeneğinin olmaması büyük bir dezavantaj.
  • Yazıda, tek bir Pi4 8gig üzerinde 13B veri setinin ve üç pi4 düğümü üzerinde 65B veri setinin başarıyla çoğaltıldığından söz edilerek bu tekniğin erişilebilirliği gösteriliyor.
  • Yazı, gecikme rakamlarını tartışırken birimlerin özensiz kullanılması nedeniyle eleştiriliyor.
  • Yazı, iş yüklerinin çoğu bellekle sınırlıyken çip üreticilerinin neden çiplere bu kadar çok işlev birimi koyduğu sorusunu gündeme getiriyor.
  • Yazı, Hacker News dışında sık rastlanmayan özgün içeriği nedeniyle övülüyor.
  • Metin, transformer decoder'da bellek kısıtlı token üretiminin sınırlarını tartışıyor ve gelecekte donanım dostu modeller bekliyor.
  • Yazı, özel donanımın önemli bellek bant genişliği darboğazları göz önüne alındığında neden bu şekilde tasarlandığını ve yazılım paradigmasındaki değişimlerin bu dengeyi değiştirip değiştiremeyeceğini sorguluyor.