Vai al contenuto

min_p Sampling

Tecnica di sampling per LLM che impedisce al modello di scegliere token con score inferiore a una soglia percentuale rispetto al token più probabile. Salvatore Sanfilippo (antirez) l'ha riscoperta per conto suo e ne ha scritto sul blog (lui l'aveva chiamata "cutling"), poi ha scoperto che l'aveva già inventata un'altra persona su Reddit e che era già implementata in llama.cpp. Dwarf Star la usava già per DeepSeek V4 Flash. 1

Come funziona

Con min_p a 0,05 il modello non sceglie mai token con score inferiore al 5% del token più forte. Questo fornisce un minimo di appiglio di qualità. 1

Risoluzione delle allucinazioni

  • Laguna a volte allucinava riferimenti inesistenti nella domanda dell'utente, di più con i quanti Q2/Q3, di meno con Q4 1
  • Gli stessi problemi comparivano con l'implementazione di llama.cpp e con l'API ufficiale di Laguna, anche se lì un po' ridotti 1
  • Appena implementato min_p a 0,05 in Dwarf Star, le allucinazioni scompaiono completamente anche con Q2/Q3. Con quei quanti Sanfilippo ipotizza anche di abbassare la temperatura, per esempio a 0,7 1

Interpretazione dei logit

Per Sanfilippo i logit non vanno letti come "probabilità" ma come quanto il modello ritiene corretto proseguire il discorso con un dato token. Il sampling non-greedy non serve solo per la variabilità, ma per esplorare spazi di soluzione che il modello, ripetendo lo stesso approccio, non raggiungerebbe: come quando un umano cambia approccio dopo aver sbattuto la testa contro un problema troppe volte. Il rovescio è che a volte il sampler pesca token a bassa probabilità che distruggono la qualità dell'output, ed è questo che min_p evita. 1


Fonti e Riferimenti