Temperatura, top-p, top-k: los parámetros
El top-p (muestreo por núcleo) mantiene solo los tokens más probables cuya probabilidad acumulada alcanza p, por ejemplo 0,9. El top-k mantiene un número fijo de candidatos, por ejemplo 40. La temperatura regula el azar del muestreo: cerca de 0, el modelo elige casi siempre el token más probable. Ollama comienza a temperatura 0,8, top-k 40 y top-p 0,9.
Tres valores aparecen en todos los ajustes de un modelo local: la temperatura, top-p y top-k. Esta guía explica qué elimina o desplaza cada uno en la lista de palabras posibles, con un ejemplo numérico, los valores por defecto de Ollama y de llama.cpp, las recomendaciones publicadas por los editores de modelos y cómo aplicarlas.
#Top-p, top-k, temperatura: la definición en un cuadro
Con cada palabra generada, un modelo calcula una probabilidad para cada token de su vocabulario. Los parámetros de muestreo deciden después cuál seleccionar. Top-p y top-k reducen la lista de candidatos; la temperatura modifica la diferencia entre los más probables y los menos probables. Ninguno añade conocimiento al modelo: solo regulan la variedad y el riesgo.
| Parámetro | Sobre qué actúa | Valor bajo | Valor alto | Valor predeterminado de Ollama |
|---|---|---|---|---|
| temperature | Diferencia entre tokens probables e improbables | Respuestas más deterministas | Más variedad, más errores | 0,8 |
| top_p | Tamaño de la lista, definido por la probabilidad acumulada | Lista corta, salida conservadora | Lista amplia, más diversidad | 0,9 |
| top_k | Número máximo de candidatos | Pocos candidatos | Muchos candidatos | 40 |
| min_p | Umbral relativo a la probabilidad más alta | Filtrado ligero | Filtrado fuerte | 0,0 (desactivado) |
| repeat_penalty | Penalización de los tokens utilizados recientemente | Más repeticiones | Menos repeticiones, riesgo de resultados extraños | 1,0 (desactivado) |
Estos valores predeterminados proceden de la documentación de referencia del Modelfile de Ollama. Muchos modelos incluyen sus propios valores en su archivo de configuración, que sustituyen a esos valores predeterminados: de ahí el interés de leer la ficha del modelo, como veremos más abajo.
#¿Cómo elige un LLM la siguiente palabra?
Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
El modelo genera, para cada posición, una distribución de probabilidades sobre todo su vocabulario. Elegir siempre el token más probable, lo que se llama decodificación voraz, produce textos planos, repetitivos y a veces atrapados en un bucle. Se introduce así un muestreo aleatorio, limitado por los parámetros de muestreo. Una semilla fija (seed) hace que este muestreo sea reproducible: la documentación de Ollama especifica que una semilla dada produce el mismo texto para el mismo prompt.
El orden en que se aplican los filtros importa. En llama.cpp, el motor de inferencia GGUF utilizado, entre otros, por LM Studio, el orden predeterminado es: penalizaciones, DRY, top-n sigma, top-k, typical-p, top-p, min-p, XTC y, por último, la temperatura. Es decir, top-k y top-p operan sobre las probabilidades originales, y la temperatura solo sirve para elegir entre lo que queda. Muchos tutoriales indican lo contrario; el orden real puede variar de un motor a otro y se configura en llama.cpp mediante el parámetro --samplers.
#Un ejemplo numérico: lo que retiene cada ajuste
Tomemos siete candidatos para la siguiente palabra, con sus probabilidades: 0,45; 0,25; 0,12; 0,08; 0,05; 0,03; 0,02. Esta tabla es un cálculo ilustrativo, no una medición en un modelo real.
| Filtro | Regla | Candidatos conservados | Probabilidad cubierta |
|---|---|---|---|
| Ninguno | Todo el vocabulario | 7 | 100 % |
| top_k = 3 | Los 3 mejores | 3 | 82 % |
| top_p = 0,9 | Se detiene cuando el acumulado alcanza 0,90 | 4 (0,45 + 0,25 + 0,12 + 0,08) | 90 % |
| top_p = 0,7 | Acumulado de 0,70 | 2 | 70 % |
| min_p = 0,1 | Conservar los tokens cuya probabilidad supere el 10 % de la del mejor token, es decir, un umbral de 0,045 | 5 | 95 % |
Punto a tener en cuenta: top-k mantiene siempre el mismo número de candidatos, independientemente de la situación; top-p y min-p se adaptan. Cuando el modelo está muy seguro (un token a 0,95), top-p podría conservar solo uno o dos candidatos; cuando duda entre diez palabras, conserva más. Por eso, top-p suele preferirse a top-k.
#1. Temperatura: el botón del azar
Antes del muestreo, los logits del modelo se dividen por la temperatura. A baja temperatura, la diferencia entre los tokens aumenta: el más probable domina a los demás. A alta temperatura, la diferencia se reduce. A 0, el modelo siempre elige el token más probable y produce salidas idénticas en cada intento, lo que confirma la documentación de llama.cpp.
| Candidato | Probabilidad original | T = 0,5 | T = 1,5 |
|---|---|---|---|
| 1er | 45 % | 70 % | 34 % |
| 2e | 25 % | 22 % | 23 % |
| 3e | 12 % | 5 % | 14 % |
| 4e | 8 % | 2 % | 11 % |
| 5e à 7e | Un total del 10 % | 1,3 % | 17,8 % |
- 0 à 0,3
- Extracción, clasificación, resumen fidedigno: quieres la misma respuesta en cada intento.
- 0,4 à 0,7
- Redacción técnica, traducción, soporte: variedad sin deriva.
- 0,8
- Valor predeterminado de Ollama y de llama.cpp: conversación general.
- 1 o más
- Creatividad, brainstorming; mayor riesgo de errores y digresiones.
#2. Top-p: el filtro adaptativo
Top-p, o muestreo de núcleo, conserva los tokens más probables hasta que su probabilidad acumulada alcanza p. Con 0,9, se descarta la cola que representa el 10 % de la probabilidad; con 1,0, no se filtra nada. La documentación de Ollama recuerda que un valor más alto, por ejemplo 0,95, produce un texto más variado, y uno más bajo, por ejemplo 0,5, un texto más enfocado y conservador.
- 0,5 à 0,7
- Muy conservador: respuestas seguras, a veces monótonas.
- 0,9
- Valor predeterminado de Ollama: recorta la cola sin limitar demasiado la variedad.
- 0,95
- Valor predeterminado de llama-server, y valor recomendado por varias fichas de modelos.
- 1,0
- Filtro desactivado: la temperatura sigue actuando sola.
#3. Top-k: el límite máximo fijo
Top-k conserva solo los k tokens más probables. La documentación de Ollama describe este parámetro como una forma de reducir la probabilidad de generar contenido sin sentido: con un valor más alto (100), las respuestas son más diversas; con uno más bajo (10), más conservadoras. Su valor predeterminado es 40, como en llama.cpp, donde 0 lo desactiva.
| Filtro | Ventaja | Límite | Cuándo usarlo |
|---|---|---|---|
| top_k | Simple, limita el cálculo | Ignora la forma de la distribución: demasiados candidatos cuando el modelo está seguro, demasiado pocos cuando duda | Límite de protección amplio (20 a 100) |
| top_p | Se adapta a la confianza del modelo | Puede dejar pasar una larga cola si la distribución es plana | Ajuste principal de diversidad |
| min_p | Umbral relativo a la probabilidad más alta, estable incluso con una temperatura elevada | Menos conocido, no activado por defecto en Ollama | Alternativa a top_p, a menudo con una temperatura más alta |
Para la consulta «top p vs top k»: utiliza top-p como ajuste principal, mantén top-k como mecanismo de protección y no ajustes ambos en la misma prueba; de lo contrario, no sabrás cuál produjo la diferencia.
#Valores por defecto y recomendaciones de los proveedores
Los valores predeterminados de un motor representan un compromiso genérico. Los editores de modelos suelen publicar valores adaptados a sus modelos, que pueden diferir de los predeterminados. Estas son las recomendaciones de la ficha de Qwen3.5 para sus modelos, para compararlas con los valores predeterminados de Ollama (temperatura 0,8, top-p 0,9, top-k 40).
| Modo | Temperatura | top_p | top_k | presence_penalty |
|---|---|---|---|---|
| Razonamiento, tareas generales | 1,0 | 0,95 | 20 | 1,5 |
| Razonamiento, código preciso | 0,6 | 0,95 | 20 | 0,0 |
| Sin razonamiento, tareas generales | 0,7 | 0,8 | 20 | 1,5 |
Estos valores se aplican a esta familia de modelos, no a todos. Las fichas de otros editores indican otros valores: busca la sección sobre parámetros de muestreo recomendados en la ficha de Hugging Face o en la página del modelo en la biblioteca de Ollama. La ficha de Qwen también especifica que la compatibilidad con estos parámetros varía según el motor de inferencia.
#Penalizaciones: repetición, frecuencia, presencia
Los modelos locales, especialmente los pequeños o muy cuantizados, a veces repiten las mismas frases en bucle. Las penalizaciones son el remedio, pero sus valores predeterminados suelen ser poco conocidos. En Ollama, repeat_penalty vale 1,0 por defecto, por lo que la penalización está desactivada; la documentación da 1,5 como ejemplo de un valor que penaliza con más fuerza. El valor 1,1 que se cita a menudo es una opción que debes elegir, no un valor predeterminado.
- repeat_penalty
- Penaliza los tokens vistos recientemente; repeat_last_n (64 por defecto) fija la ventana que se analiza.
- frequency_penalty
- Penalización proporcional al número de apariciones, para generaciones largas.
- presence_penalty
- Penalización en cuanto un token ha aparecido, para fomentar un vocabulario más variado; Qwen recomienda 1,5 en varios de sus modos, con el riesgo de mezclar idiomas si el valor es demasiado alto.
#Aplicar estos ajustes en Ollama
Existen dos métodos: un Modelfile, que fija valores para un modelo con un nombre definido, o el campo options de una solicitud a la API, que acepta los mismos parámetros que el Modelfile. El Modelfile es adecuado para el uso diario; la API, para un programa.
Para profundizar en los Modelfile (prompt de sistema, contexto, plantilla), consulta la guía de personalización. Para LM Studio y Jan, los mismos parámetros se configuran en el panel de configuración del modelo.
#Modelos de razonamiento: no ajustar todo mediante la temperatura
Los modelos de razonamiento generan primero una traza de reflexión antes de responder. En Ollama, estos modelos muestran un campo de reflexión separado, y los comandos disponibles varían según el modelo: la documentación sugiere consultar la API show para conocer los valores aceptados y el valor por defecto. Por ejemplo, para gpt-oss, los niveles son low, medium y high, con medium como valor por defecto.
Para reducir los lanzamientos innecesarios en una pregunta sencilla, actúa primero en este nivel de reflexión, si existe, en lugar de en la temperatura. La temperatura, por su parte, debe seguir la ficha del modelo: un razonamiento demasiado frío puede congelarse, un razonamiento demasiado caliente puede dispersarse.
#Ajustes predefinidos de partida según el uso
| Uso | Temperatura | top_p | Otros ajustes |
|---|---|---|---|
| Extracción, clasificación, JSON | 0 à 0,2 | 0,9 | Formato estricto solicitado en el prompt |
| Resumen fiel | 0,2 à 0,3 | 0,9 | repeat_penalty ligeramente por encima de 1 |
| Conversación general | 0,7 à 0,8 | 0,9 | Valores predeterminados del motor |
| Redacción, ideas | 0,8 à 1,0 | 0,95 | presence_penalty moderada |
| Ficción, creatividad | 1,0 | 0,95 | Controlar las digresiones |
Estos ajustes predefinidos son puntos de partida, no mediciones. Cambia un parámetro a la vez, envía tres veces el mismo prompt y compara los resultados: si los tres intentos dan la misma respuesta cuando esperas variedad, la temperatura es demasiado baja o la semilla está fijada.
#Síntomas y ajustes para probar
- El modelo repite la misma frase
- Activa repeat_penalty con un valor de alrededor de 1,1 o activa presence_penalty, o acorta la generación con num_predict.
- Respuestas planas y genéricas
- Aumenta la temperatura un paso (de 0,7 a 0,9) o flexibiliza top_p.
- El modelo inventa hechos
- Baja la temperatura, pero ten en cuenta que no es suficiente: ver la guía sobre las alucinaciones.
- JSON mal formado
- Temperatura baja y formato solicitado explícitamente; utiliza el modo de salida estructurada de Ollama cuando exista.
- Mezcla de idiomas o palabras extrañas
- Baja presence_penalty o repeat_penalty, o aumenta ligeramente la cuantización del modelo.
¿Qué es el top-p en un LLM?+
¿Cuál es la diferencia entre top-p y top-k?+
¿Se deben ajustar la temperatura y el top-p al mismo tiempo?+
¿Qué temperatura para el código?+
¿Cuáles son los valores por defecto en Ollama?+
¿Qué es min-p y se debe usar?+
- Ollama Modelfile: personalizar un modelo
- Fundamentos del prompting
- Dominar los system prompts
- Comprender la ventana de contexto
- Limitar las alucinaciones de un LLM local
- Fuente: referencia del Modelfile Ollama
- Fuente: ficha Qwen3.5-9B
- Fuente: llama.cpp, opciones de llama-server
- Fuente: Ollama, modelos de razonamiento
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.