Top-p
Nucleus Sampling
Bir sonraki token seçilirken sadece kümülatif olasılığı belirli bir eşiği (p) aşan token kümesinden örnekleme yapılması.
LLM her token üretirken bütün vocabulary üzerinde bir olasılık dağılımı çıkarır (örn: 50K token, her birine olasılık). Top-p (ya da nucleus sampling), bu dağılımdan örnekleme yaparken sadece en olası token'larla ilgilenir.
Çalışma şekli: token'ları olasılığa göre sırala. Yukarıdan toplaya
toplaya, kümülatif olasılık p'yi geçtiğinde dur. Geriye kalan,
"nucleus" denilen küçük bir alt kümedir. Sadece bu kümeden örnek al.
Tipik değerler: - top_p = 1.0: tüm token'lar dahil (sınırsız çeşitlilik, riskli) - top_p = 0.9: standart "biraz çeşitli" (çoğu kullanım için iyi) - top_p = 0.5: dar, daha tutucu - top_p = 0.1: çok dar, neredeyse deterministik
Temperature ile birlikte kullanılır — top_p hangi token'ların seçilebilir olduğunu, temperature seçim olasılıklarını şekillendirir.
Bir restoranda menüyü sınırlamak gibi. Tüm menüyü açık bırakırsan (top_p=1) garson sana eski tarihli az satılan bir şey de getirebilir (riskli). En çok tutulan %90'ı aç (top_p=0.9), garip seçimleri ele — yine de bir miktar çeşitlilik var. Sadece top 5'i aç (top_p=0.1) — her zaman aynı 3-4 yemek arasından seçilir.
GPT-4 ile yaratıcı bir hikaye giriş cümlesi yazdırıyorsun.
top_p = 1.0: "Once upon a time" / "It was a dark and stormy night" / "Wherein the silver moths of dawn..." → bazen klişe, bazen aşırı garip karışım.
top_p = 0.9: "Once upon a time" / "Long ago in a forgotten kingdom" / "She had always known..." → çeşitli ama anlamlı.
top_p = 0.3: "Once upon a time" / "There was once" / "Long ago" → güvenli, klişe, tahmin edilebilir.
Genelde temperature=0.7, top_p=0.9 üretim için iyi başlangıç.
OpenAI dokümantasyonu da ikisinden birini ayarla diyor — ikisini
birden değil.
- Yaratıcı/çeşitli çıktı isterken — top_p=0.9-0.95
- Garip kelimelerin aniden çıkmasını önlemek (top_p=1 yerine 0.95)
- Sınıflandırma/structured output — top_p=0.1 deterministik
- Uzun metin üretimi — top_p büyüklük tutarlılığı sağlar
- Temperature ile birlikte agresif kullanmak (ikisi de 1.5+ → kaos)
- Tek başına 'kalite ayarı' sanmak — prompt + örnekler daha önemli
- JSON/structured output — düşük temperature + low top_p kullan
top_p ile temperature arasında karışma
Çoğu rehber 'birini ayarla, diğerini default bırak' der. İkisini birden agresif değiştirmek beklenmedik sonuçlar üretir. OpenAI bile dokümantasyonda uyarıyor.
top_p = 0 ile temperature = 0 farkı
top_p=0 modelin sadece en olası token'ı seçeceği anlamına gelmez (matematik öyle çalışmaz). Tam deterministik için temperature=0 daha doğru.
Reasoning model'lerde manuel ayar
o1, Claude reasoning gibi modellerde temperature/top_p elle ayarlanmıyor — model kendi optimize ediyor. Manuel müdahale çoğu zaman geri tepiyor.