AI Sözlüğü
Orta· ~2 dk okuma#top-k#sampling#inference

Top-k

Top-k Sampling

Modelin sıradaki token'ı seçerken sadece en olası K adayı dikkate aldığı sampling yöntemi.

EN OLASI K ADAYtop_k = 5→ ilk 5 token aday havuzunda0.62Ankara0.14İstanbul0.07İzmir0.04Bursa0.03Adana0.03Konya0.02Antalya0.01Trabzon0.01Mersinkesimk=40 default — uzun kuyruktaki saçma kelimeleri eler
Tanım

Bir LLM her token üretirken vocabulary'deki tüm token'lara (genelde 32K-256K) olasılık atar. Çoğu token'ın olasılığı sıfıra yakındır ama yine de küçük şanslarla seçilebilir — uzun kuyrukta saçma kelimeler çıkmasının sebebi bu. Top-k, bu kuyruğu keser: sadece en olası K aday içinden örnekleme yapılır.

Pratik değerler: - k = 1: greedy decoding — her zaman en olası token. Tam deterministik. - k = 5-10: çok dar — dilbilgisi sağlam, ama tekrarcı ve klişe. - k = 40 ★: yaygın default. Anlamlı çeşitlilik + kalite dengesi. - k = 100+: uzun kuyruğu açar — yaratıcı ama daha çok hata riski.

Top-p (nucleus) ile farkı: top-k sabit sayıda aday alır; top-p ise olasılık eşiğine göre değişken sayıda aday alır. Top-p genelde daha iyi adapte olur — düşük entropi yerlerde daraltır, yüksek entropide açar. Production'da çoğunlukla top-p (0.9) tercih edilir, ama bazı motorlar (llama.cpp, Ollama) ikisini birden default açık tutar.

Benzetme

Bir restoranda menüden seçim yapma. Tüm menü açık (k=∞) — garip dünden kalma yemekler de gelebilir. Top 5 yemek (k=5) — güvenli ama her zaman aynı 3-4 seçenek. Top 40 (k=40) — yeterli çeşitlilik, garip sürprizler elenmiş. Top-k modelin "dikkate aldığı menü uzunluğu"nu sınırlar.

Gerçek dünyadan örnek

Sorgu: "Türkiye'nin başkenti …"

k = 1 (greedy): "Ankara." (her zaman, tek olasılık)

k = 40, T = 0.7: çoğunlukla "Ankara'dır.", bazen "Ankara olarak bilinir." veya "Ankara şehridir." — anlamı koruyan farklı ifadeler.

k = 1000, T = 1.2: "Ankara'dır ama tarihte İstanbul da..." — uzun kuyruktan seçilen alakasız tokenlerle yön değiştirebilir.

Llama.cpp'de varsayılan --top-k 40 --top-p 0.9 --temp 0.8. Bu üçlü çoğu sohbet için iyi başlangıç.

Ne zaman kullan
  • Düşük seviyeli sampling kontrolü gereken durumlar (llama.cpp, Ollama)
  • Top-p ile birlikte — biri uzun kuyruğu kapar, diğeri olasılık dağılımına adapte olur
  • Greedy (k=1) gerektiren deterministik testler
  • Çok düşük temperature kullanırken k düşük tutmak ek garanti
Ne zaman kullanma
  • Reasoning modellerinde (o1, Claude reasoning) — genelde manuel ayar yok
  • OpenAI/Anthropic API'lerinde top-k yoktur — sadece top-p kullanılır
  • Top-p zaten ayarlıysa ve sonuç iyiyse — k'yı çıkar, basit kalsın
Sık yapılan hatalar

Çok düşük k = tekrar

k=5 modeli aynı 5 token havuzuna sıkıştırır; üzeri uzun metinlerde 'aynı şeyi tekrar etme' patolojisine yol açar. Repetition penalty ile birlikte ayarla.

Top-k + top-p ikisini agresif değiştirmek

k=10 + p=0.5 + T=1.5 = kaos. Birini düşür, diğerini default tut. Çoğu rehber 'birini ayarla, diğerini bırak' der.

Provider API farklılıkları

OpenAI, Anthropic top-k expose etmez. llama.cpp, Ollama, vLLM eder. Multi-provider katmanın varsa bu parametre normalize edilemez — soyutlamada dikkat.