AI Sözlüğü
Orta· ~2 dk okuma#num_ctx#context-length#inference

num_ctx

Context length runtime parametresi

Local inference motorlarında (Ollama, llama.cpp) modelin hafızasında tutacağı maksimum bağlam token sayısını ayarlayan parametre.

AYIRDIĞIN BAĞLAM = AYIRDIĞIN VRAMLlama 3.1 8B · KV cache büyüklüğünum_ctx=2K0.27 GBnum_ctx=8K1.05 GBnum_ctx=32K4.20 GBnum_ctx=128K16.80 GBOllama default 2048 — uzun belge için açıkça artır
Tanım

context-window modelin teorik kapasitesi (örn. Llama 3.1 8B = 128K). num_ctx ise runtime'da gerçekten ayırdığın bellek miktarı. Çoğu motor düşük varsayılanla başlar (Ollama: 2048, llama.cpp: 512!) çünkü context büyüdükçe VRAM doğrusal artar.

Hesap: KV cache ≈ 2 × num_layers × num_heads × head_dim × 2 (K+V) × num_ctx × bytes. Llama 3.1 8B'de num_ctx başına ~131 KB. 8K context → ~1 GB VRAM. 32K → ~4 GB. 128K → ~16 GB sırf KV cache için — ağırlıklara ek.

Provider farkları: - Ollama: OLLAMA_CONTEXT_LENGTH=8192 env veya Modelfile'da PARAMETER num_ctx 8192. Default 2048. - llama.cpp: -c 8192 flag. Default 512 (sürpriz: çok düşük). - vLLM: --max-model-len 8192. Düşmesi nadir; tipik 4K-32K. - OpenAI/Anthropic: yok — API kendisi yönetir.

Benzetme

Bir defterin sayfa sayısını ayarlamak. Modelin "hatırlama kapasitesi" sınırlı — kaç sayfa açacaksan ona göre yer ayırırsın. 2 sayfa açarsan (num_ctx=2048) hızlı ama unutkan. 100 sayfa (128K) açarsan masada çok yer kaplar (VRAM) ama uzun konuşmalarda hatırlar.

Gerçek dünyadan örnek

Ollama'da Llama 3.1 8B'i sohbet için kullanıyorsun:

`` ollama run llama3.1:8b > Sana 50K token belge yapıştırıyorum... > [model belgenin sadece son 2048 token'ını "görüyor"] ``

Sebep: num_ctx default 2048. Belge tamamen göz ardı edildi.

Çözüm: OLLAMA_CONTEXT_LENGTH=32768 ollama serve ile başlat. Veya Modelfile: `` FROM llama3.1:8b PARAMETER num_ctx 32768 `` Şimdi 50K belge → ilk 32K alınır, son 18K kesilir.

VRAM tüketimi: num_ctx=2048 → ~5 GB toplam (8B Q4 + cache). num_ctx=32768 → ~9 GB. 16 GB Mac'te rahat çalışır.

Ne zaman kullan
  • RAG ya da uzun belge analizi — default 2K kesinlikle yetmez
  • Çok turlu sohbet — geçmişi tutmak için 8K+ şart
  • Kod düzenleme görevleri — fonksiyon + bağlam için 16K+
  • VRAM bütçen müsaitse — 'olur ya' diye 32K-128K aç
Ne zaman kullanma
  • Tek seferlik kısa sorular — 2K-4K yeter, VRAM tasarruf
  • VRAM kıt (8 GB Mac) ve büyük model (13B+) — düşük num_ctx + büyük model dengesi
  • Modelin desteklemediği değer — Llama 3.1 max 128K, üstüne çıkmak hata verir
Sık yapılan hatalar

Default 2048 sürprizi

Llama 3.1 'destek 128K' der ama Ollama default 2048! Uzun bağlam istiyorsan açıkça ayarla. 'Neden uzun belgeyi anlamadı?' sorusunun %80'inin sebebi bu.

VRAM hesabını yapmamak

num_ctx=128K, 8B Q4 model, 16 GB Mac → patlar. Önce VRAM hesabı: model + (num_layers × heads × head_dim × 4 × num_ctx). Quantization (Q4) cache'i değil sadece weights'i etkiler.

Modelin gerçek tavanını aşmak

'128K destekli' demek 128K token verince anlam kaybetmeden ürettiği anlamına gelmez. Lost-in-the-middle real. 32K'da kal, RAG ile pencere yöneterek daha iyi sonuç al.