Muestreo top-p (nucleus)
El parámetro top_p de Ollama descarta los tokens improbables antes de elegir. Implementa ese filtro.
Escribe topP(probs, p). probs es un objeto { token: probabilidad } que suma 1. Devuelve un array de { token, prob }:
1. ordena los tokens de más a menos probable;
2. quédate con el conjunto más pequeño cuyo acumulado sea >= p;
3. renormaliza esas probabilidades para que sumen 1.
No modifiques probs. PROBS contiene la distribución de ejemplo para el siguiente token.
Retos 0/5
- Con p = 0,8 se queda con los tres tokens más probables
- Renormaliza: suman 1 y ' the' vale 0,42 / 0,82
- Con p bajo queda un solo token con probabilidad 1
- Ordena una entrada desordenada y no la modifica
- Con p = 1 conserva todos los tokens
function topP(probs, p) {
const sorted = Object.entries(probs).sort((a, b) => b[1] - a[1]);
// conserva tokens hasta que la probabilidad acumulada llegue a p
// después divide cada probabilidad conservada entre su suma
return sorted.map(([token, prob]) => ({ token, prob }));
}
console.log(topP(PROBS, 0.8));La consola aparece aquí (console.log).
Para profundizar: la referencia de Hugging Face (en inglés) →
¿Esto en producción, con tus datos? Hablemos 15 minutos →