Nucleus Sampling
El muestreo top-p (de núcleo) selecciona cada token del conjunto más pequeño cuya probabilidad acumulada alcanza p, de modo que el conjunto se adapta a la confianza del modelo, a diferencia del muestreo top-k.
El muestreo de núcleo, también llamado muestreo top-p, es un método de decodificación que elige cada siguiente token del conjunto más pequeño de candidatos cuya probabilidad combinada alcanza un umbral p y, después, muestrea a partir de ese conjunto. Ari Holtzman y sus colegas de la Universidad de Washington y el Allen Institute for AI lo presentaron en 2019 en The Curious Case of Neural Text Degeneration. Al trabajar con GPT-2 Large, demostraron que la decodificación voraz y la búsqueda por haces hacen que los modelos de lenguaje caigan en bucles insulsos y repetitivos, mientras que el muestreo de la distribución completa deriva hacia textos incoherentes; también mostraron que truncar la cola poco fiable de la distribución producía textos cuya perplejidad y variedad eran las más parecidas a las de la escritura humana. Top-p es ahora un ajuste estándar en las API de generación de texto de casi todos los modelos de lenguaje grandes.
Cómo se elige el núcleo#
En cada paso, el modelo de lenguaje puntúa todos los tokens de su vocabulario, y softmax convierte esas puntuaciones en probabilidades. A continuación, el muestreo de núcleo ordena los tokens de más a menos probable, suma sus probabilidades en ese orden hasta que el total acumulado alcanza p, descarta todo lo que queda fuera de ese conjunto, renormaliza los elementos restantes para que sumen uno y muestrea un único token.
Tomemos cuatro candidatos con probabilidades de 0,50, 0,25, 0,15 y 0,10, y fijemos p en 0,8. Los dos primeros suman 0,75, por debajo del umbral, así que se añade el tercero y el núcleo abarca 0,90. El cuarto token se descarta, y los tres restantes se muestrean con probabilidades aproximadas de 0,56, 0,28 y 0,17 tras la renormalización.
La característica que define este método es que el núcleo cambia de tamaño en cada paso. Después de «La capital de Francia es», un token concentra casi toda la probabilidad y el núcleo se reduce a una sola palabra. Al comienzo de una historia, la probabilidad se reparte entre cientos de palabras plausibles y el núcleo se amplía para incluirlas. Un número fijo de candidatos no puede adaptarse de esta manera.
El mismo procedimiento en PyTorch, para un paso de decodificación sobre un vocabulario de seis tokens:
import torch
# Probabilidades del siguiente token para un vocabulario de 6 tokens
probs = torch.tensor([0.10, 0.40, 0.04, 0.25, 0.06, 0.15])
top_p = 0.75
# Ordena los tokens y conserva los que hagan falta hasta que el total acumulado alcance top_p
sorted_probs, order = probs.sort(descending=True)
cumulative = sorted_probs.cumsum(dim=0)
keep = cumulative - sorted_probs < top_p # se conserva el token que supera top_p
# Renormaliza el núcleo y muestrea el siguiente identificador de token
nucleus = sorted_probs * keep
next_token = order[torch.multinomial(nucleus / nucleus.sum(), num_samples=1)]
print(order[keep].tolist(), next_token.item())La salida muestra el núcleo —los identificadores de token 1, 3 y 5, que en conjunto reúnen el 0,80 de la probabilidad—, seguido del identificador muestreado. Los tokens 0, 2 y 4 nunca pueden elegirse en este paso; si vuelves a ejecutar el script, se elegirá uno de los tres restantes en proporción a sus probabilidades.
Top-p frente a decodificación codiciosa, top-k y temperatura#
- Decodificación codiciosa: Siempre elige el token más probable. Es determinista y funciona para respuestas factuales breves, pero las salidas largas tienden a repetirse en bucle.
- Muestreo top-k: Conserva un número fijo de candidatos. Si k se fija en 50, incluso un paso con alta confianza muestrea entre 50 tokens, incluidos los absurdos, mientras que un paso incierto puede descartar opciones razonables. Top-p sustituye el número fijo por una proporción fija de probabilidad.
- Temperatura: Divide las puntuaciones del modelo antes de aplicar softmax. Los valores inferiores a 1 concentran la distribución en las opciones principales, mientras que los superiores a 1 la aplanan. Como top-p se aplica después de la temperatura, aumentarla también amplía el núcleo.
- El muestreo min-p conserva todos los tokens cuya probabilidad alcanza al menos una fracción determinada de la probabilidad del token más probable, por lo que su umbral también refleja la confianza del modelo. Hugging Face Transformers, vLLM y llama.cpp lo ofrecen junto con top-p.
Como tanto la temperatura como top-p controlan la aleatoriedad, el consejo habitual es ajustar uno u otro, no ambos a la vez. Muchos motores de inferencia también permiten combinar top-k y top-p, con top-k como límite máximo del número de candidatos.
Elegir un valor de top-p#
Un valor de top-p de 1,0 desactiva el filtro, y los valores predeterminados habituales están entre 0,9 y 1,0. Top-p solo modifica las probabilidades propias del modelo, así que la precisión factual depende de fundamentar el prompt, por ejemplo con generación aumentada por recuperación, que reduce las alucinaciones al proporcionar al modelo los datos que necesita. Los valores más altos aportan variedad para las lluvias de ideas, los diálogos de chatbots y la escritura creativa. Los valores más bajos, como 0,5, generan resultados más predecibles y repetitivos, adecuados para extraer datos, crear prompts de clasificación y escribir código; la decodificación restringida va más allá al enmascarar todos los tokens que incumplirían un formato obligatorio.
El mismo ajuste controla la generación de texto en los flujos de visión. Cuando una detección de Ultralytics YOLO26 activa una descripción de la escena generada por un modelo de visión y lenguaje, la interfaz de LLM de Ultralytics pasa argumentos de la solicitud, como top_p, directamente a la API del proveedor, por lo que un valor bajo, como 0,5, hace que las descripciones de fotogramas similares tengan una redacción parecida.










