AI Atlas
Orta · ~2 dk okuma #min_p #sampling #inference

min_p

Min-p sampling

Sıradaki token adaylarını, en olası token'ın olasılığına oranla kesen sampling yöntemi: olasılığı p_max × min_p'nin altında kalan her aday elenir.

EŞİK = MIN_P × P_MAX (MIN_P = 0.1)MODEL EMİN0.620.180.090.050.030.02eşik 0.0623/6 aday kalırMODEL KARARSIZ0.20.180.160.140.120.10.060.015eşik 0.027/8 aday kalırHer panel kendi p_max değerine göre ölçeklendi; olasılıklar temsilî
Tanım

Top-k sabit sayıda aday tutar, top-p kümülatif olasılığa bakar. min_p ise eşiği modelin o anki güvenine göre kaydırır:

eşik = min_p × p_max

p_max en olası token'ın olasılığı. Olasılığı bu eşiğin altında kalan tüm adaylar silinir, kalanlar arasından örnekleme yapılır.

  • Model eminse (p_max = 0.9, min_p = 0.1) eşik 0.09 olur → birkaç aday kalır, saçmalık kuyruğu kesilir.
  • Model kararsızsa (p_max = 0.2) eşik 0.02'ye iner → çok sayıda makul aday hayatta kalır, çeşitlilik korunur.

Yöntem 2024'te "Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs" makalesiyle (Nguyen ve ark., arXiv 2407.01082) tanımlandı. Makale, top-p'nin zorlandığı yüksek temperature'da bile hem kaliteyi hem çeşitliliği artırdığını raporluyor (GPQA, GSM8K, AlpacaEval Creative Writing; Mistral ve Llama 3, 1B-123B).

Default değerler (Ekim 2026 itibarıyla):

MotorParametreDefault
Ollamamin_p0.0 (kapalı)
llama.cpp--min-p / min_p0.05
vLLMmin_p0.0 (kapalı)
OpenAI APIyok—

llama.cpp'nin varsayılan sampler sırası: penalties → DRY → top-n-sigma → top-k → typical-p → top-p → min-p → XTC → temperature. Yani min_p eşiği, temperature uygulanmadan önceki dağılım üzerinden hesaplanır.

Benzetme

Bir yarışmada "birinciye göre baraj" koymak. Birinci 90 puan aldıysa ve baraj %10 ise, 9 puanın altındaki herkes elenir. Birinci sadece 20 puan aldıysa (herkes birbirine yakın) baraj 2 puana iner ve çok kişi finale kalır. Sabit "ilk 40 kişi" kuralı (top-k) bu farkı görmez.

Gerçek dünyadan örnek

Model "Kahvaltıda ___ yedim" cümlesini tamamlıyor, min_p = 0.1:

AdayOlasılıkEşik (0.1 × 0.55)Sonuç
yumurta0.550.055kalır
peynir0.250.055kalır
simit0.120.055kalır
menemen0.060.055kalır
vida0.010.055elenir

"vida" gibi kuyruktaki saçma adaylar, temperature yükselse bile artık seçilemez; çünkü temperature'dan önce silinmişlerdir.

Ollama'da açmak için: istekte "min_p": 0.05 gönder ya da Modelfile'a PARAMETER min_p 0.05 yaz. llama.cpp'de zaten 0.05 açık gelir.

Kod örnekleri
Ollama API · min_p ile yaratıcı ama tutarlı çıktı bash
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Bir deniz feneri hakkında kısa bir şiir yaz.",
  "options": {
    "min_p": 0.1,
    "top_p": 1.0,
    "temperature": 1.2
  }
}'
llama.cpp · sadece min-p ile örnekleme bash
# Yeni kurulum (llama.app): llama serve
# Eski binary adıyla: llama-server
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF \
  --min-p 0.1 \
  --top-p 1.0 \
  --top-k 0 \
  --temp 1.2
# top-p 1.0 ve top-k 0 = kapalı; kuyruğu sadece min-p keser
Ne zaman kullan
  • Yaratıcı yazım, beyin fırtınası — yüksek temperature'ı saçmalamadan kullanmak için
  • Top-p'nin bazen çok dar, bazen çok geniş kaldığını gördüğünde
  • Ollama kullanıyorsan ve kuyruk sorunları yaşıyorsan — default 0.0, yani kapalı
  • Tek parametreyle basit bir sampling düzeni istiyorsan (top-p 1.0, top-k 0, min_p 0.05-0.1)
Ne zaman kullanma
  • Deterministik çıktı (temperature 0) — zaten en olası token seçilir, min_p etkisizdir
  • OpenAI API — böyle bir parametre yok
  • Kod, JSON, sınıflandırma gibi tek doğru cevaplı işler — düşük temperature daha net çözüm
Sık yapılan hatalar

Motorlar arası farklı default

Aynı model llama.cpp'de min_p 0.05 ile, Ollama'da 0.0 ile çalışır. 'llama.cpp'de güzel, Ollama'da saçmalıyor' farkının bir kısmı buradan gelebilir. Karşılaştırma yapıyorsan sampling ayarlarını açıkça eşitle.

min_p'yi çok yüksek tutmak

0.3-0.5 gibi değerler çoğu adımda tek aday bırakır; çıktı greedy decoding'e yaklaşır ve tekrar döngülerine girebilir. Çeşitlilik istiyorsan düşük değerlerle başla.

Top-p ve top-k ile üst üste bindirmek

llama.cpp'de top-k (40) ve top-p (0.95) da default açıktır ve min-p'den önce çalışır. Etkisini gerçekten görmek istiyorsan diğerlerini kapat: --top-k 0 --top-p 1.0.