PASO 8 / 10

Stacking de bloques

Hasta acá armamos UN bloque del Transformer (atención + FFN + residual + norm). Ahora vamos a apilar muchos bloques iguales para formar el modelo completo. Acá es donde emerge el "poder" de los LLMs.

🎯 De un vistazo

Apilar bloques es lo que convierte un bloque simple en un modelo capaz de razonar. Es sorprendentemente directo: repetir el mismo bloque, una y otra vez.

PROPÓSITO

¿Para qué sirve?

Repetir el bloque Transformer (atención + FFN + residual + norm) muchas veces, conectando la salida de uno a la entrada del siguiente, para formar el modelo completo.

APORTE

¿Qué aporta al modelo?

Profundidad. Cada bloque construye sobre el anterior, extrayendo patrones progresivamente más abstractos: de sintaxis simple a significado y razonamiento.

NECESIDAD

¿Por qué es indispensable?

Un solo bloque es demasiado "superficial" para capturar la complejidad del lenguaje. La capacidad de razonamiento de un LLM emerge de la profundidad (decenas de bloques apilados).

↓ A continuación, el detalle con ejemplos y visualizaciones ↓

1. ¿Qué significa "apilar" bloques?

Apilar es la idea más simple de todo el Transformer: poner bloques uno después del otro, donde la salida de un bloque es la entrada del siguiente.

La regla de oro: el output de un bloque tiene exactamente la misma forma que su input (recordá del paso 7: residual + norm preservan las dimensiones). Por eso podés conectar bloques en cadena sin problemas — son intercambiables como piezas de Lego.

El flujo en pseudocódigo

// Empezamos con los vectores del paso 3 (embedding + positional encoding)
x = embeddings_con_posicion   // 3 vectores de dim 4 (en nuestro ejemplo)

// Pasamos x por cada bloque, uno tras otro
x = bloque_1(x)   // el output reemplaza a x
x = bloque_2(x)   // el nuevo x entra al bloque 2
x = bloque_3(x)
// ... y así para los N bloques ...
x = bloque_N(x)

// El x final es la representación "totalmente procesada"

Fijate que es literalmente un bucle: for cada bloque: x = bloque(x). Nada más. La complejidad está dentro de cada bloque (que ya entendés), no en cómo se conectan.

2. Mismo esqueleto, pesos distintos

Un punto clave que confunde al principio: todos los bloques tienen la misma estructura, pero cada uno tiene sus propios pesos aprendidos.

✓ Lo que es IGUAL entre bloques

  • La arquitectura: atención → residual → norm → FFN → residual → norm.
  • Las dimensiones (d_model, número de cabezas, d_ff).
  • Las operaciones (producto punto, softmax, ReLU, etc.).

✗ Lo que es DISTINTO entre bloques

  • Las matrices W_Q, W_K, W_V de cada cabeza.
  • La matriz W_O de multi-head.
  • Las matrices W₁, W₂ del FFN.
  • Los parámetros γ, β de cada LayerNorm.
Analogía: es como una fábrica con 96 estaciones de trabajo idénticas en diseño, pero cada estación tiene operarios entrenados para una tarea distinta. La estación 1 hace ajustes gruesos; la estación 50 detalles finos; la estación 96 el pulido final. Mismo tipo de estación, distinta especialización.
Ojo, un error común: NO es que "el mismo bloque se ejecuta 96 veces" (eso sería un bucle con los mismos pesos). Son 96 bloques distintos, cada uno con su propio set de millones de parámetros aprendidos. GPT-3 tiene 96 bloques × millones de pesos cada uno.

3. ¿Por qué más capas = más capacidad?

La idea profunda: cada bloque puede usar lo que computó el bloque anterior. Esto crea una "jerarquía" de procesamiento donde cada nivel trabaja con conceptos más abstractos.

Analogía: entender un texto en pasadas sucesivas

Pensá en cómo entendés un párrafo complejo:

  • Primera pasada: reconocés las palabras individuales y su tipo (sustantivo, verbo...).
  • Segunda pasada: conectás palabras en frases (¿quién hace qué?).
  • Tercera pasada: entendés el significado global y las implicaciones.

No podés saltar a la tercera pasada sin hacer las primeras dos. Cada nivel se apoya en el anterior. Los bloques del Transformer hacen exactamente esto: cada bloque "refina" el entendimiento que dejó el bloque previo.

Conexión con pasos anteriores: esto SOLO funciona gracias a lo que vimos en los pasos 6 y 7. El FFN (paso 6) aporta la no-linealidad que hace que cada capa agregue algo nuevo (si no, las 96 capas colapsarían a una). El residual + LayerNorm (paso 7) mantienen la información y la escala estables a través de tantas capas. Sin esas piezas, apilar sería inútil o imposible.

4. ¿Qué aprende cada nivel de capas?

Los investigadores estudiaron modelos entrenados (mirando qué activa cada capa) y encontraron una progresión clara de abstracción:

🔤 Capas tempranas (1 – 4)

Características superficiales y sintácticas:

  • Identificar tipo de palabra (sustantivo, verbo, artículo).
  • Concordancias de género y número.
  • Relaciones con palabras vecinas inmediatas.

🔗 Capas intermedias (5 – 8)

Relaciones sintácticas y semánticas:

  • Sujeto-verbo-objeto (¿quién hace qué a quién?).
  • Correferencia (a qué se refiere "él", "esto").
  • Estructura de cláusulas y dependencias.

🧠 Capas tardías (9 – 12+)

Conceptos abstractos y de tarea:

  • Significado global de la frase.
  • Sentimiento, tono, intención.
  • Información relevante para predecir la siguiente palabra.
Lo fascinante: nadie programó esta jerarquía. Emerge sola durante el entrenamiento porque es la forma más eficiente de organizar el procesamiento. Las capas se "auto-especializan" de lo concreto a lo abstracto.

🎮 Demo interactivo: pasá los vectores por la pila de bloques

Acá visualizamos cómo el vector de "perro" va pasando por bloques sucesivos. En cada bloque se transforma un poco, refinando su representación. Apretá "Pasar al siguiente bloque".

Bloque 0: input inicial
Este es el vector de "perro" justo después del positional encoding (paso 3), antes de entrar a cualquier bloque.
Vector de "perro" en este punto:

Nota: los números son ilustrativos (no de un modelo real), pero la idea es exacta — cada bloque transforma el vector, y la "interpretación" de lo que captura se vuelve más abstracta a medida que subimos.

6. Números reales: ¿cuántos bloques tienen los modelos?

Modelo Bloques (capas) d_model Parámetros totales
BERT base12768110 M
GPT-2 small12768124 M
GPT-2 XL4816001.5 B
GPT-39612288175 B
LLaMA-2 70B80819270 B
La tendencia histórica: más capas (más profundidad) + más dimensiones (más ancho) = más capacidad. El salto de GPT-2 (48 capas) a GPT-3 (96 capas) fue clave para la aparición de habilidades "emergentes" como razonamiento de varios pasos y aprendizaje en contexto.
Pero no es infinito: agregar capas tiene rendimientos decrecientes y costos crecientes (entrenar GPT-3 costó millones de dólares). Hay un balance entre profundidad, ancho, cantidad de datos y presupuesto de cómputo — esto se estudia con las "leyes de escala" (scaling laws).

✅ Resumen: el cuerpo del Transformer está completo

Con el paso 8, ya tenés el "cuerpo" entero del modelo armado:

  1. Pasos 1-3: preparar la entrada (tokens → embeddings → + posición).
  2. Pasos 4-7: UN bloque Transformer (atención + multi-head + FFN + residual + norm).
  3. Paso 8: apilar N bloques iguales en estructura pero con pesos distintos, encadenando la salida de uno a la entrada del siguiente.

Después de pasar por los N bloques, tenemos vectores "totalmente procesados" — cada token contiene una representación riquísima de su significado en contexto. Pero todavía falta lo último: convertir esos vectores en una predicción de la siguiente palabra.

En el Paso 9: Output / Softmax vamos a ver cómo el vector final se convierte en una probabilidad sobre todo el vocabulario, y cómo el modelo "elige" qué palabra generar.