Hangi model hangi bilgisayara sığar? RAM ve boyut hesabı
Bir dil modelini kendi bilgisayarınızda çalıştırmadan önce sorulacak ilk soru, modelin belleğe sığıp sığmayacağıdır. Bu yazıda tek satırlık bir formülle ağırlık belleğini hesaplıyor, bağlam ve çalışma payını ekliyor, ardından 3 ile 70 milyar parametre arasındaki modellerin hangi cihaza yaklaşık olarak sığdığını bir tabloda gösteriyoruz.
Temel formül: parametre × bayt
Bir dil modeli, büyük ölçüde sayılardan oluşan ağırlık matrislerinden ibarettir. Her ağırlık belli bir sayı biçiminde saklanır ve her biçimin bayt maliyeti bellidir. Dolayısıyla modelin belleğe yüklenmesi için gereken alan kabaca şöyle hesaplanır:
Ağırlık belleği (GB) ≈ parametre sayısı (milyar) × parametre başına bayt 16-bit (FP16 / BF16) : 2 bayt 8-bit : ~1 bayt 4-bit : ~0,5 bayt
Hugging Face'in Transformers belgeleri de aynı pratik kuralı verir: X milyar parametreli bir modelin ağırlıklarını bfloat16 ya da float16 biçiminde yüklemek kabaca 2 × X GB bellek ister. Aynı belgede 70 milyar parametreli bir model için bu değer 140 GB olarak örneklenir. Bugün modellerin çoğu zaten bfloat16 ile eğitildiğinden, 32-bit ile çalıştırmanın sonuç kalitesine bir katkısı yoktur.
Örneğin 8 milyar parametreli bir model 16-bit biçimde 8 × 2 = 16 GB, 8-bit biçimde yaklaşık 8 GB, 4-bit biçimde ise yaklaşık 4 GB ağırlık belleği tutar.
Nicemleme: ağırlıkları küçültmek
Nicemleme (quantization), ağırlıkları daha az bitle saklama işlemidir. Transformers belgelerine göre ağırlıklar çoğu durumda 8 ya da 4 bite indirildiğinde başarımda belirgin bir kayıp görülmez; yine de 4-bit sonuçlar zaman zaman tam hassasiyetten farklı çıkabilir ve denemek kullanıcıya kalır. Aynı belge, nicemlemenin hızı her zaman artırmadığını, bazen biraz yavaşlatabildiğini de not eder. Yani nicemleme önce bir bellek kazancıdır.
GGUF ve Q4_K_M, Q8_0 gibi adlar
Ev bilgisayarında model çalıştıranların en sık karşılaştığı dosya biçimi GGUF'tur. Hugging Face belgelerine göre GGUF, llama.cpp ve benzeri çalıştırıcılar için hızlı yükleme ve kaydetme amacıyla tasarlanmış bir ikili biçimdir; ağırlıkların yanında modelle ilgili standart üst verileri de taşır. Dosya adlarındaki ekler nicemleme türünü gösterir:
- Q8_0: 32 ağırlıklık bloklar hâlinde 8-bit nicemleme. Blok ölçeği de saklandığı için ağırlık başına 8 bitten biraz fazla yer tutar.
- Q4_K: süper bloklara dayalı 4-bit "K" nicemleme; belgede ağırlık başına 4,5 bit olarak verilir.
- Q4_K_M: "M" (orta) karışımı; bazı katmanlar daha yüksek hassasiyette tutulduğu için ortalama biraz daha yüksektir.
llama.cpp'nin nicemleme belgesindeki ölçüm bunu somutlaştırır: 8 milyar parametreli bir modelde Q4_K_M ağırlık başına yaklaşık 4,89 bit ve 4,58 GiB, Q8_0 yaklaşık 8,50 bit ve 7,95 GiB, F16 ise 16 bit ve 14,96 GiB tutmuştur. Aynı tabloda üretim hızı da Q4_K_M'de en yüksektir. Bu yüzden aşağıdaki hesaplarda "4-bit" için gerçekçi olsun diye 0,5 yerine yaklaşık 0,6 bayt kullanıyoruz.
Bağlam (KV önbelleği) ve çalışma payı
Ağırlıklar işin yalnızca bir kısmıdır. Model metin üretirken önceki her token için dikkat katmanlarındaki anahtar ve değer vektörlerini bir önbellekte tutar; buna KV önbelleği denir. Transformers belgelerine göre bu önbellek bağlam uzunluğuyla doğrusal büyür ve uzun girdilerde ya da uzun sohbetlerde ciddi bellek tutabilir. Kabaca hesabı şöyledir:
KV önbelleği ≈ 2 × katman sayısı × KV başı sayısı × baş boyutu
× token sayısı × bayt
Varsayımsal bir örnek: 32 katmanlı, 8 KV başlı, baş boyutu 128 olan bir model 16-bit önbellekle token başına 2 × 32 × 8 × 128 × 2 = 131.072 bayt, yani 128 KiB harcar. 8.192 tokenlık bağlam yaklaşık 1 GiB, 32.768 tokenlık bağlam yaklaşık 4 GiB eder. Gruplanmış sorgu dikkati (GQA) gibi mimari tercihler bu sayıyı düşürür; o yüzden gerçek değer modelden modele değişir.
Bunlara ek olarak çalıştırıcının ara hesap tamponları ve işletim sistemiyle diğer uygulamaların payı vardır. Pratik bir kural olarak ağırlık belleğine yüzde 20 civarında pay ekleyip, ayrıca sisteme birkaç GB bırakmak makul bir başlangıçtır. Bu bir ölçüm değil, güvenli tarafta kalmak için bir tahmindir.
Örnek tablo: hangi model nereye sığar?
Aşağıdaki değerler formülle hesaplanmış yaklaşık ağırlık boyutlarıdır (16-bit için 2 bayt, 8-bit için ~1,06 bayt, 4-bit Q4_K_M için ~0,61 bayt). "En az bellek" sütunu, yaklaşık yüzde 20 pay ve kısa-orta bir bağlam varsayımıyla rahat çalışma için önerilen en küçük RAM ya da ekran kartı belleğidir.
| Model | 16-bit | 8-bit | 4-bit (Q4_K_M) | En az bellek (16 / 8 / 4-bit) |
|---|---|---|---|---|
| 3B | ~6 GB | ~3,2 GB | ~1,8 GB | 16 GB / 8 GB / 8 GB |
| 8B | ~16 GB | ~8,5 GB | ~4,9 GB | 32 GB / 16 GB / 8 GB (sınırda) |
| 14B | ~28 GB | ~15 GB | ~8,6 GB | 64 GB / 32 GB / 16 GB |
| 32B | ~64 GB | ~34 GB | ~20 GB | 64 GB'a sığmaz / 64 GB / 32 GB |
| 70B | ~140 GB | ~74 GB | ~43 GB | sığmaz / sığmaz / 64 GB |
Tablodan çıkan özet: 8 GB'lık bir makine 3B ile 8B arası 4-bit modeller için uygundur; 16 GB 14B'ye kadar 4-bit modelleri rahatça taşır; 32 GB 32B'lik 4-bit modellere kapı açar; 64 GB ise 70B sınıfını 4-bit ile mümkün kılar. Uzun bağlam kullanacaksanız bir üst basamağa çıkmayı düşünün.
MoE modelleri: bellek ayrı, hız ayrı
Uzmanlar karışımı (Mixture of Experts, MoE) modellerinde hesap ikiye ayrılır. Hugging Face'in MoE yazısına göre bu modellerde tüm parametrelerin belleğe yüklenmesi gerekir; buna karşılık her token için yalnızca bazı uzmanlar devreye girdiğinden hız, toplam değil aktif parametre sayısına bağlıdır. Yazıdaki örnekte Mixtral 8x7B yaklaşık 47 milyar toplam parametreye sahiptir ama hesap yükü yaklaşık 12 milyarlık bir modelinki gibidir.
Kendi formülümüze uygularsak: 47 × 0,61 ≈ 29 GB, yani 4-bit hâliyle bile 32 GB'lık bir makinede zorlanır, 64 GB'ta rahat eder. Sığdığında ise 47B'lik yoğun bir modelden belirgin biçimde daha hızlı yanıt verir. Kısacası MoE için belleği toplam, hızı aktif parametreye göre düşünün.
Apple Silicon'da birleşik bellek
Klasik bir bilgisayarda modelin ekran kartında hızlı çalışması için ekran kartının kendi belleğine (VRAM) sığması gerekir; sistem RAM'i ayrı bir havuzdur. Apple'ın M serisi çiplerinde ise birleşik bellek mimarisi kullanılır. Apple'a göre bu yapı, çip üzerindeki tüm birimlerin aynı veriye birden çok bellek havuzu arasında kopyalamadan erişmesini sağlar. Pratikte bu, 32 GB'lık bir Mac'te işlemci ile grafik biriminin aynı 32 GB'ı paylaştığı anlamına gelir. Bu yüzden tabloda "RAM ya da ekran kartı belleği" diye geçen değer, Mac'te doğrudan toplam bellek miktarına karşılık gelir. Yalnız unutmayın: işletim sistemi ve açık uygulamalar da aynı havuzdan pay alır.
Sonuç
Bir modelin sığıp sığmayacağını kestirmek için karmaşık araçlara gerek yok: parametre sayısını parametre başına baytla çarpın, yüzde 20 civarında pay ekleyin, uzun bağlam kullanacaksanız KV önbelleğini de hesaba katın. 4-bit nicemleme (çoğunlukla Q4_K_M) ev donanımında en sık tercih edilen dengedir. MoE modellerde belleği toplam, hızı aktif parametre belirler. Donanımınız yetmiyorsa bulutta ücretsiz çalışan seçeneklere de göz atabilirsiniz: ücretsiz yapay zekâ modelleri.