- Updated:
- Featured post
How LLMs generate the next token
Explicación más en detalle de cómo obtienen los LLMs las probabilidades para generar el siguiente token
Sampling
En cada posición el modelo tiene una bolsa con miles de tokens posibles. Sampling es el proceso de no coger siempre el token más probable, si no de orientarlo a coger respuestas con determinadas características.
Si el modelo escogiera siempre el token con más probabilidades, obtendríamos respuestas aburridas y repetitivas.
Logits
Para generar el siguiente token, una red neuronal calcula primero los vectores de logits, donde cada logit corresponde a un valor posible. El tamaño de estos vectores de logits es tan grande como el vocabulario completo del modelo.
(representación de vectores de logits)
flowchart LR
N1["What's your favorite color?"]:::note --> Z
Z --> A1 --> A
Z --> B1 --> B
Z --> C1 --> C
Z --> D1 --> D
Z["Neural network"]
A["a"]
A1["(-0.5)"]
B["green"]
B1["(0.7)"]
C["red"]
C1["(0.5)"]
D["the"]
D1["(-1.2)"]
classDef note fill:none,stroke:none,color:#777;
Los logits NO representan probabilidades ya que no suman 1 y pueden incluso ser negativos (la probabilidades no pueden). Para convertir logits a probabilidades se usa una Softmax layer
Temperature
La temperatura es una constante que se aplica a los logits antes de la transformación de la Softmax layer. Se usa para ajustar la creatividad del modelo y redistribuir la probabilidad de los valores. Una temperatura más alta hace que el modelo sea más creativo ya que aumenta las posibilidades de elegir tokens menos probables.
xychart-beta
title "Temperatura vs Probabilidad"
x-axis "Temperatura (T)" [0.1, 0.2, 0.5, 1, 2, 5]
y-axis "Probabilidad" 0 --> 1
line "P(token1)" [0.9999546, 0.9933071, 0.8807971, 0.7310586, 0.6224593, 0.5498340]
line "P(token2)" [0.0000454, 0.0066929, 0.1192029, 0.2689414, 0.3775407, 0.4501660]
Ejemplos de temperaturas:
- Low (0.2-0.3): El modelo es cauto y elige las palabras más probables. Output factual y predecible.
- Medium (0.5-0.7): Un mix de confiabilidad y engagement
- High (0.9-1.0): Toma riesgos y es impredecible