AI Sözlüğü
Orta· ~2 dk okuma#n_gpu_layers#gpu-offload#inference

n_gpu_layers

GPU katman offload sayısı

Modelin kaç katmanının GPU'ya, kaçının CPU'da kalacağını belirleyen llama.cpp parametresi. VRAM yetmezse hayat kurtarır.

KAÇ KATMAN GPU'DA — KAÇ KATMAN CPU'DAGPU · -ngl 5layer 1layer 2layer 3layer 4layer 5CPU + RAMlayer 6layer 7layer 8ya hepsi GPU'da (-ngl 99) ya hibrit — bir layer CPU'da bile darboğaz olur
Tanım

llama.cpp (ve onu kullanan Ollama, LM Studio) modelin layer'larını parça parça GPU'ya yükleyebilir. -ngl N (Number of GPU Layers) parametresi: ilk N layer GPU'ya, kalanı CPU + RAM'de kalır.

Pratik: - -ngl 0: tamamı CPU'da. Çok yavaş ama hiç VRAM yemez. - -ngl 20 (örn.): 33 layer'lı 8B modelin ilk 20'si GPU'da. Hibrit. - -ngl 99 veya -ngl -1: tüm layer'lar GPU'da (en hızlı).

Hız etkisi lineer değil. Tüm layer'lar GPU'da olduğunda full hız; bir layer bile CPU'ya kayarsa her token o layer için CPU↔GPU transferi yapar — kritik darboğaz. Genel kural: ya hepsi ya hiçbiri ideal, hibrit kabul edilebilir performans için.

Hesap: layer başına VRAM ≈ model boyutu / num_layers. Llama 3.1 8B (Q4): ~5 GB / 33 layer ≈ 152 MB/layer. 4 GB VRAM'in varsa ~26 layer sığar (-ngl 26); kalan 7 layer CPU'da. Tahmini hız: full GPU'nun ~%30-50'si.

Benzetme

Bir restoran mutfağı. Tüm aşçılar mutfakta (GPU'da) → maksimum hız. Bir aşçı yan binada (CPU'da) → her tabak yan binadan onun adımı için geçmek zorunda → süreç tıkanır. n_gpu_layers "kaç aşçı mutfakta"yı ayarlar. Tam dolu ya da boş — arada kalanı yavaş ama mümkün.

Gerçek dünyadan örnek

16 GB VRAM'lik RTX 4080'in var. Llama 3.1 70B Q4 çalıştırmak istiyorsun (gerçek boyut ~40 GB, sığmıyor).

-ngl 20: ilk 20/80 layer GPU'da (~10 GB), kalan 60 CPU'da. Hız: ~3 tok/s. Yavaş ama 70B çalışıyor.

-ngl 0: tamamı CPU'da. Hız: ~0.8 tok/s. RAM'in 64 GB'sa çalışır.

Daha küçük modele geçersen: 8B Q4 (~5 GB), -ngl 99 ile tüm GPU → hız ~140 tok/s. Aynı donanım, 47× hız farkı.

Ollama çoğu zaman -ngl 99'u otomatik dener; OLLAMA_NUM_GPU ile override edebilirsin. LM Studio GUI'sında "GPU Offload" slider'ı bu.

Ne zaman kullan
  • VRAM yetmiyor ama modelden vazgeçemiyorsan — hibrit offload
  • Aynı GPU'da birkaç model çalıştırmak — her birine bütçe
  • Quantization yetmedi, hâlâ bir miktar offload gerekli
  • CPU + GPU karışık donanım optimize etmek
Ne zaman kullanma
  • Tüm model GPU'ya sığıyorsa — -ngl 99 koy, düşünme
  • Production high-throughput — hibrit her zaman düşük throughput verir
  • Çok küçük model (1-3B) — overhead'e değmez
Sık yapılan hatalar

ngl ayarlamayı unutmak

GPU varsa ama -ngl 0 ile çalışıyorsa kesinlikle CPU'da. 'Neden M2 Max'imde 5 tok/s?' sorusunun cevabı genelde bu. Default değişken — explicit set et.

Cache offload edilmez

n_gpu_layers ağırlıkları offload eder, KV cache'i değil. 32K context'te cache zaten 4 GB. Hesaba kat: GPU'ya sığması gereken: ngl × layer_size + cache.

Hibrit performans yanılgısı

'%50 GPU offload yapsam %50 hız' değil — daha kötü. CPU↔GPU transfer her token gecikme. Benchmark yap, 'kaç ngl ile şu kadar tok/s' bul.