NVIDIA'nın Dory 4B modeli llama.cpp'de döngü ayarıyla dört farklı hesaplama bütçesinde çalıştırıldı
MarkTechPost'un rehberi, 3,7 GB'lık tek bir GGUF dosyasının döngü sayısına göre dört farklı model gibi davrandığını gösterdi. Testler, maliyet ve hız farklarını sunucu üzerinden ölçtü.
NVIDIA'nın Nemotron Labs birimi tarafından geliştirilen küçük akıl yürütme modeli Dory 1.0 4B, llama.cpp üzerinde döngü sayısına göre dört farklı hesaplama bütçesinde çalıştırıldı. MarkTechPost sitesinin yayımladığı rehbere göre 3,7 GB'lık tek bir model dosyası, hiçbir ek parametre gerektirmeden bir ila dört geçiş arasında farklı davranıyor.
Modelin orta katmanları, her token için bir, iki, üç veya dört kez uygulanabilen paylaşımlı bir blok oluşturuyor. Her ek geçiş, token başına daha fazla hesaplama harcıyor ancak modele yeni parametre eklemiyor. Bu sayede tek bir kontrol noktası, yeniden eğitim yapılmadan dört ayrı hesaplama seviyesinde kullanılabiliyor.
Dory 4B llama.cpp'de nasıl çalıştırılıyor?
Rehberde, NVIDIA'nın model kartında sabitlediği Dory dalının belirli bir commit'inden llama-server derlendi. Bunun nedeni, Dory desteğinin llama.cpp'de henüz açık bir taslak çekme isteği olması ve yayımlanmış hiçbir ikili dosyanın modeli yükleyememesi. Derleme sırasında Mac'te model kartındaki Metal bayrakları kullanıldı, Colab'de ise yalnızca takılı GPU için CUDA çekirdekleri derlendi. Böylece kartın hiç kullanmadığı flash-attention çekirdekleri atlanarak T4 üzerinde yönetilebilir bir derleme elde edildi.
Model dosyası Hugging Face'ten sabit bir depo revizyonundan indirildi ve işlem öncesinde SHA-256 özeti doğrulandı. Model kartındaki komutlar dosyayı dory-q5_k_m.gguf olarak anıyor, ancak depoda dosya NVIDIA-Nemotron-Labs-Dory1.0-4B-Q5_K_M.gguf adıyla yer alıyor. Rehbere göre karttaki komutu olduğu gibi kopyalamak bu yüzden başarısız oluyor. 3,67 GB'lık dosya, kartta yayımlanan sağlama toplamıyla birebir eşleşti.
Modelin mimarisi ve maliyet tahmini
GGUF başlığı, model yüklenmeden önce yapısını ortaya koyuyor. Dory'nin 72 katman girdisi 16 katmanlık bir giriş grubuna, 40 katmanlık paylaşımlı yinelenen gruba ve 16 katmanlık bir çıkış grubuna ayrılıyor. Dikkat ve MLP katmanları dönüşümlü ilerliyor; her üç kaydırmalı pencere katmanına bir tam dikkat katmanı düşüyor. Tensör boyutlarının gruplara göre toplanması, yinelenen bloğun modelin 3,98 milyar parametresinin 1,84 milyarından sorumlu olduğunu gösteriyor.
Başlıkta bir tuzak da bulunuyor: yerleşik döngü sayısı 4 iken model kartı 2 öneriyor. Bu nedenle ayar açıkça belirtilmeden başlatılan bir sunucu, sessizce en pahalı ayarda çalışıyor. Grup boyutlarından yola çıkılarak bir döngünün maliyeti de önceden hesaplanabiliyor. Bir token giriş bloğundan, her döngüde bir kez yinelenen bloktan, çıkış bloğundan ve LM başlığından geçiyor. Buna göre 4 döngü, 1 döngüye kıyasla 2,51 kat parametre uyguluyor ve 2,28 kat ağırlık baytı okuyor.
KV önbelleği, çatalın ayırma kuralını izliyor. per_loop modu, her yinelenen dikkat katmanının her döngüsü için ayrı önbellek tutuyor ve 4.096 token bağlamda 1 döngüde 306 MiB'den 4 döngüde 816 MiB'ye çıkıyor. last_loop modu ise 306 MiB'de sabit kalıyor.
Testlerde neler ölçüldü?
Döngü sayısı ve önbellek modu model yüklenirken okunduğu için her ayar ayrı bir sunucu süreci gerektirdi. Rehberdeki yardımcı araç, her yapılandırma için bir sunucu başlattı, sağlık kontrolünü bekledi ve sunucu günlüğündeki KV önbellek satırlarını ayrıştırdı. Ayrıştırılan katman sayıları tahminle karşılaştırılarak ayarın gerçekten etkili olduğu doğrulandı. Ayrıca hiçbir ayar verilmeden bir sunucu başlatıldı ve tek bir sohbet isteğiyle sunucunun modelin akıl yürütmesini yanıtından nasıl ayırdığı gözlendi.
Hız ölçümü, sunucunun kendi zamanlamalarından alındı. Sabit bir istemde 192 token üç kez açgözlü biçimde üretildi ve medyan değer kaydedildi. Bir döngülük hızın her satırın hızına bölünmesiyle ölçülen yavaşlama, tahmin edilen oranların yanına konularak kod çözmenin hesaplama mı yoksa bellek sınırlı mı davrandığı incelendi. Karşılaştırmaların anlamlı olması için aynı tohum ve örnekleme sıcaklığıyla yapılan iki sohbet isteğinin birebir aynı yanıtı vermesi şartı arandı.
Sonraki token dağılımları, bir döngünün model içinde neyi değiştirdiğini düşük maliyetle gösterdi. Ham istem olarak kullanılan 50 GSM8K sorusu için her ayarda en olası 20 aday token istendi ve bunlar ilk sıradaki eşleşme ile toplam varyasyon mesafesine göre karşılaştırıldı. Kod, kesin bir öngörüde bulunuyor: last_loop her döngüde yinelenen bir katmanın önbelleğinin üzerine yazdığı için per_loop'tan yalnızca istemin önceki parçalarının sadece son döngü anahtarlarını tutması durumunda farklılaşabiliyor. Tüm istem tek bir mikro yığına sığdığında bu hiç gerçekleşmiyor. Deney 16 tokenlık mikro yığınlarla tekrarlanarak tam bu durum test edildi.
GSM8K değerlendirmesi ne gösteriyor?
Eşleştirilmiş GSM8K değerlendirmesinde aynı tohumlu soru örneklemi beş ayarda soruldu. Akıl yürütme açık tutuldu, model kartındaki örnekleme ayarları ve soru başına sabit tohum kullanıldı; böylece her soru tüm döngü sayılarında aynı koşullarla karşılaştı. Her yanıt için veri kümesindeki nihai cevaba göre doğruluk, üretilen token sayısı, yanıtın 2.048 token sınırına ulaşıp ulaşmadığı ve geçen süre kaydedildi. Sonuçlar geldikçe her ayar için ayrı bir JSONL dosyasına yazıldı, böylece kesilen bir Colab oturumu kaldığı yerden devam edebildi.
Otuz eşleştirilmiş sorunun küçük doğruluk farklarını kesinleştiremeyeceği belirtilen rehberde, istatistik hücresi örneklemin neyi gösterip neyi gösteremeyeceğini ifade edecek şekilde kuruldu. Doğruluk Wilson aralıklarıyla verildi; her karşıtlıkta yalnızca bir ayarın çözdüğü sorular üzerinde kesin McNemar testi kullanıldı. Token sayıları, bir döngüye göre soru başına oranların medyanı olarak önyükleme aralığıyla karşılaştırıldı. Bu, model kartının daha fazla döngünün daha az token ürettiği iddiasını test ediyor. Çözülen soru başına süre ise hız, uzunluk ve doğruluğu kullanıcının gerçekte ödediği tek bir sayıda birleştiriyor.
Neden önemli?
Dory, test zamanındaki hesaplamayı yükleme anında belirlenen bir ayara dönüştürüyor. Tek bir 3,7 GB'lık dosya, 20 blokluk yinelenen çekirdekten tek geçişten dört geçişe kadar dört farklı model gibi çalışıyor. Rehberin vardığı iki pratik sonuç, ölçümler ne gösterirse göstersin geçerliliğini koruyor: GGUF varsayılan olarak dört döngüye ayarlandığı için döngü sayısı her zaman açıkça belirtilmeli ve Dory desteği llama.cpp'de henüz açık bir taslak olduğu için çatalın commit'i sabitlenmeli.
Rehberde, model kartındaki iddialar bu çalıştırmadaki ölçümlerle karşılaştırıldı. Önbellek boyutu iddiaları, döngü varsayılanları, token verimliliği ve last_loop önbelleklemesinin doğruluğu ilgili ölçümlerle eşleştirildi. Değerlendirme, elle yazılmak yerine kaydedilen sonuçlardan türetildi. Not defterinin ulaşamadığı kıyaslama tablosu, 256K bağlam ve NVFP4 ön eğitim gibi iddialar ise sessizce atlanmak yerine test edilmemiş olarak listelendi.
NVIDIA cephesinde ise Dory desteğinin llama.cpp ana deposuna ne zaman alınacağına dair bir takvim paylaşılmadı. MarkTechPost'un tam kodlara ve modele ilişkin bağlantıları rehberin kendi sayfasında yer alıyor.




Yorumlar 0
Henüz yorum yok. İlk yorumu siz yazın.