En todos los pasos anteriores dijimos "esta matriz es aprendida" sin explicar cómo. Ahora cerramos el círculo: cómo el modelo ajusta sus millones de parámetros, partiendo de números aleatorios, hasta volverse capaz de generar lenguaje.
El entrenamiento es el proceso que convierte un modelo "vacío" (con pesos al azar) en uno capaz de generar texto coherente.
Ajustar TODOS los pesos del modelo (embeddings, atención, FFN...) partiendo de valores aleatorios, para que aprenda a predecir bien la siguiente palabra.
El conocimiento. Todo lo que el modelo "sabe" (gramática, hechos, razonamiento) vive en los valores de sus pesos, y esos valores son producto del entrenamiento.
Sin entrenamiento, toda la arquitectura de los pasos 1-9 es un cascarón vacío con pesos al azar que produce texto sin sentido. El entrenamiento es lo que la "llena" de capacidad.
↓ A continuación, el detalle con ejemplos y visualizaciones ↓
A lo largo de la guía vimos muchas matrices "aprendidas": la matriz de embeddings (paso 2), las W_Q/W_K/W_V de atención (paso 4-5), las W₁/W₂ del FFN (paso 6), los γ/β de LayerNorm (paso 7)... En GPT-3 son 175 mil millones de números.
La pregunta es: ¿cómo ajustás 175 mil millones de números en la dirección correcta? La respuesta tiene 4 ingredientes que vamos a ver: una tarea, una medida de error, una forma de mejorar, y mucha repetición.
La genialidad de los LLMs es que se entrenan con una tarea increíblemente simple: dado un fragmento de texto, predecir la siguiente palabra. Y ya está.
De texto que ya existe (internet, libros, código...). No hace falta que nadie etiquete nada a mano. Tomamos cualquier texto y lo cortamos en ejemplos:
Texto original: "el perro come carne fresca" Se convierte automáticamente en ejemplos de entrenamiento: Input: "el" → objetivo: "perro" Input: "el perro" → objetivo: "come" Input: "el perro come" → objetivo: "carne" Input: "el perro come carne" → objetivo: "fresca"
El texto mismo provee las respuestas correctas (la siguiente palabra ya está ahí). Esto se llama aprendizaje auto-supervisado: no necesitamos etiquetas humanas, el texto se etiqueta solo.
Para mejorar, primero necesitamos medir qué tan mal lo está haciendo el modelo. Esa medida es el loss (pérdida o error). Un loss alto = muy equivocado; loss bajo = muy acertado.
Recordá del paso 9: el modelo no predice UNA palabra, sino una probabilidad para cada palabra del vocabulario. El loss mira qué probabilidad le asignó a la palabra correcta.
La fórmula se llama cross-entropy. La intuición es simple:
Si el modelo le dio a la palabra correcta... 90% de probabilidad → loss = -log(0.90) = 0.105 (muy bajo, ¡bien!) 50% de probabilidad → loss = -log(0.50) = 0.693 (medio) 10% de probabilidad → loss = -log(0.10) = 2.303 (alto, mal) 1% de probabilidad → loss = -log(0.01) = 4.605 (muy alto, ¡terrible!)
Cuanta menos probabilidad le dio el modelo a la palabra que en realidad venía, más alto el loss. El objetivo del entrenamiento es minimizar el loss en promedio sobre todos los ejemplos.
Ya tenemos un número (el loss) que mide qué tan mal está el modelo. Ahora la pregunta clave: ¿cómo ajustamos los pesos para que el loss baje? La respuesta es gradient descent (descenso por gradiente).
Imaginá que el loss es la altura de un terreno, y los pesos del modelo son tu posición en ese terreno. Querés llegar al punto más bajo (loss mínimo).
Estás parado en la niebla y no ves el valle. Pero sí podés sentir la pendiente bajo tus pies (hacia dónde baja). Entonces das un pasito en la dirección que baja. Volvés a sentir la pendiente, das otro pasito. Repetís miles de veces hasta llegar al fondo.
La curva es el "paisaje del loss". La pelota es el estado actual del modelo. Apretá "Dar un paso" y mirá cómo baja hacia el mínimo:
En el demo de la colina movimos UN solo peso (una dimensión). Pero el modelo tiene millones de pesos. ¿Cómo sabemos en qué dirección mover CADA uno? Ahí entra backpropagation (retropropagación).
Backprop calcula, para cada peso del modelo, cuánto contribuyó al error final. Lo hace propagando el error "hacia atrás", desde la salida hasta la entrada, capa por capa.
Matemáticamente usa la "regla de la cadena" del cálculo (derivadas encadenadas), pero la intuición es: repartir la culpa del error entre todos los pesos, para saber cómo ajustar cada uno.
Juntando todo, el entrenamiento es repetir este ciclo billones de veces:
Simulamos el entrenamiento para el ejemplo "el perro come ___" (la respuesta correcta es "carne"). Al principio el modelo predice al azar. Apretá "Entrenar 1 paso" y mirá cómo la probabilidad de "carne" sube y el loss baja:
El bucle es simple, pero la escala es lo que lo hace difícil (y caro):
| Datos | GPT-3 se entrenó con ~300 mil millones de tokens (cientos de miles de libros equivalentes). Modelos recientes usan billones. |
| Cómputo | Miles de GPUs trabajando en paralelo durante semanas o meses. |
| Costo | Entrenar GPT-3 costó estimado varios millones de dólares solo en cómputo. Modelos frontera de hoy: decenas o cientos de millones. |
| Resultado | Un conjunto de pesos congelados que, al hacer inference (lo que vimos en pasos 1-9), generan texto coherente. |
Esta guía cubrió el pre-entrenamiento (la base). El fine-tuning y RLHF usan las mismas mecánicas (forward, loss, backprop, update) pero con datos y objetivos distintos.
Ahora entendés cada pieza de cómo funciona un LLM:
📝 1. Tokenización — texto → números
🔢 2. Embeddings — números → vectores con significado
📍 3. Positional Encoding — inyectar el orden
👀 4-5. Self-Attention + Multi-Head — cada token mira a los demás
🧠 6. Feed-Forward — procesar con no-linealidad
🔗 7. Residual + LayerNorm — estabilizar para apilar
📚 8. Stacking — apilar bloques → profundidad → capacidad
🎲 9. Output / Softmax — vector → predicción de palabra
📉 10. Entrenamiento — cómo se aprendieron todos los pesos