26 Pre-entrenamiento a escala
Dónde estamos. En el Cap. 11 vimos cómo aprende un transformer (predecir el siguiente token, gradiente, Adam, warmup). Ahora subimos a la escala industrial: cuántos parámetros y cuántos datos conviene usar, de dónde salen esos datos y cómo se limpian, cómo se reparte el cálculo entre miles de GPUs sin que explote, y por qué la receta “óptima” de hace tres años ya cambió. Es el capítulo que separa “entrené un modelito” de “entrené un modelo de frontera”.
26.1 La idea en una frase
Con un presupuesto de cómputo fijo, la calidad de un modelo está gobernada por leyes de potencia predecibles: el arte está en repartir ese presupuesto entre tamaño y datos —y, desde 2023, en recordar que entrenar es solo la mitad de la factura; la otra mitad es servir el modelo millones de veces—.
26.2 Conceptos clave y su papel en el transformer
Antes de entrar en detalle, definimos los términos de este capítulo y para qué sirve cada uno dentro de un transformer:
- Leyes de escala. Definición: fórmulas de potencia que predicen la pérdida en función del tamaño y de los datos. En el transformer: permiten saber cómo de bueno será un modelo antes de gastarte el dinero en entrenarlo —convierten el entrenamiento en ingeniería—.
- Cómputo (\(C\approx 6ND\)). Definición: el presupuesto real, en operaciones totales, unas 6 por parámetro y por token. En el transformer: es lo que de verdad se reparte entre tamaño (\(N\)) y datos (\(D\)); fijado \(C\), todo es decidir el reparto.
- Chinchilla (~20 tokens/parámetro). Definición: el reparto óptimo de cómputo, que hace crecer cerebro y datos a la par. En el transformer: dice cuántos tokens entrenar por parámetro para no dejar el modelo infraentrenado.
- Inference-aware (sobre-entrenar). Definición: tener en cuenta el coste de servir, no solo el de entrenar. En el transformer: justifica entrenar modelos pequeños con muchísimos más tokens (Llama-3), porque luego se sirven billones de veces.
- Curación de datos. Definición: deduplicar, filtrar y clasificar el corpus por calidad. En el transformer: la calidad del corpus marca lo que aprende el modelo tanto como la cantidad bruta.
- Paralelismo (datos / tensor / pipeline / ZeRO-FSDP). Definición: repartir el trabajo entre muchas GPUs. En el transformer: un modelo de frontera no cabe en una GPU; estas estrategias, combinadas, lo hacen entrenable.
- Precisión mixta y gradient checkpointing. Definición: entrenar en bf16 y recalcular activaciones en vez de guardarlas. En el transformer: dos ahorros casi universales de memoria y estabilidad a escala.
- Estabilidad (picos de pérdida, lote crítico, μP). Definición: técnicas para que un run de meses no se rompa. En el transformer: permiten rebobinar tras un pico, rampar el tamaño de lote y transferir hiperparámetros de un modelo pequeño al grande.
Con esos términos en la mano, vamos a los detalles.
26.3 Las leyes de escala, en serio
En el Cap. 11 adelantamos que la pérdida baja de forma predecible al crecer el modelo. Aquí la escribimos. La forma funcional que ajustó Chinchilla (Hoffmann et al. 2022) captura casi todo:
\[ L(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}} \]
Vamos término a término, porque cada uno cuenta una historia:
- \(L\) = la pérdida (entropía cruzada del Cap. 11). Menos es mejor.
- \(N\) = número de parámetros del modelo (su “tamaño de cerebro”).
- \(D\) = número de tokens de entrenamiento (cuánto “ha estudiado”).
- \(E\) = la entropía irreducible: el suelo que ningún modelo puede bajar porque el lenguaje tiene azar genuino. Aunque \(N\) y \(D\) fueran infinitos, te quedas en \(E\).
- \(A/N^{\alpha}\) = lo que pierdes por tener el cerebro pequeño. Crece el modelo (\(N\uparrow\)) y este término baja, pero despacio, porque el exponente \(\alpha\approx0{,}34\) es pequeño: hace falta mucho más tamaño para ganar poco.
- \(B/D^{\beta}\) = lo que pierdes por haber estudiado poco. Más datos (\(D\uparrow\)) y baja, también despacio (\(\beta\approx0{,}28\)).
La función dice algo liberador: puedes predecir cómo de bueno será un modelo antes de gastarte el dinero en entrenarlo, ajustando \(A,B,\alpha,\beta,E\) en modelos pequeños y extrapolando. Eso es lo que convirtió el entrenamiento de un arte en una ingeniería.
26.3.1 Kaplan vs Chinchilla: cómo repartir el presupuesto
El presupuesto real no es \(N\) ni \(D\) por separado, sino el cómputo \(C\), y hay una regla de bolsillo que los liga: \(C \approx 6ND\) (entrenar cada token cuesta unas 6 operaciones por parámetro). Fijado \(C\), ¿cuánto va a cerebro y cuánto a estudio?
- Kaplan et al. 2020 (Kaplan et al. 2020) respondieron: casi todo a cerebro. Su reparto óptimo era \(N_{\rm opt}\propto C^{0{,}73}\), \(D_{\rm opt}\propto C^{0{,}27}\) —al multiplicar el cómputo por 10, el modelo crecía ~5,4× pero los datos solo ~1,85×—. Conclusión: modelos enormes, relativamente pocos datos.
- Chinchilla 2022 (Hoffmann et al. 2022) lo corrigió: hay que crecer cerebro y estudio a la par, \(N_{\rm opt}\propto C^{0{,}5}\), \(D_{\rm opt}\propto C^{0{,}5}\) —de ahí la regla ~20 tokens por parámetro—. La prueba fue contundente: Chinchilla (70 000 M de parámetros, 1,4 billones de tokens) superó a Gopher (280 000 M) a igualdad de cómputo, siendo 4× más pequeño. Los gigantes de la época estaban infraentrenados: demasiado cerebro, poco estudio.
🧩 Analogía — el presupuesto de estudio. Tienes un presupuesto fijo para aprobar un examen y lo repartes entre tamaño de cerebro (parámetros) y horas de estudio (tokens). El consejo de Kaplan era “hazte un cerebro descomunal y ojea el temario por encima”. Chinchilla replicó: un genio que apenas estudió es un desperdicio; con un presupuesto fijo apruebas mejor creciendo cerebro y estudio en paralelo —unas 20 páginas leídas por unidad de cerebro—. El empollón mediano y bien leído le gana al genio que no abrió el libro.
En 2024, una réplica (Besiroglu et al. (Besiroglu et al. 2024)) reconstruyó los datos de Chinchilla y encontró que el ajuste concreto publicado (los coeficientes de su “Approach 3”) es inconsistente con sus otros dos métodos e implica ~70 tokens/parámetro en vez de 20, con intervalos de confianza sospechosamente estrechos. Pero su re-ajuste restaura el reparto ~50/50 y la regla ~20:1 sobrevive y sale reforzada. Moraleja honesta: lo que está en duda son unos coeficientes, no la conclusión de fondo.
26.4 El giro moderno: sobre-entrenar a propósito
Aquí está lo que el Cap. 11 no contaba, porque es reciente. La regla de Chinchilla optimiza solo el cómputo de entrenamiento —es ciega al coste de inferencia—. Y un modelo desplegado no se entrena una vez y ya: responde billones de peticiones después. La factura de por vida es entrenamiento + inferencia × volumen de uso.
Por eso la práctica de frontera se ha movido: se entrenan modelos más pequeños sobre muchísimos más tokens de lo que diría Chinchilla.
- LLaMA (Touvron et al. 2023) ya lo argumentó explícitamente: Chinchilla “ignora el presupuesto de inferencia… un modelo más pequeño entrenado más tiempo será al final más barato de servir”.
- Llama-3 8B (Grattafiori et al. 2024) se entrenó con ~15 billones de tokens —unos 1 875 tokens por parámetro, casi 90× la regla 20:1—. Su propio punto “Chinchilla-óptimo” estaría en ~200 000 M de tokens, pero el rendimiento seguía mejorando muchísimo más allá.
- “Beyond Chinchilla-Optimal” (Sardana y Frankle (Sardana et al. 2024)) lo formalizó: contando la demanda de inferencia, el modelo óptimo es más pequeño y más entrenado. En su ejemplo, para igualar la calidad de un 13B con 2 billones de tokens de inferencia esperada, conviene entrenar un 7B con más datos → ~17% menos cómputo total.
El giro de la analogía. El presupuesto de Chinchilla era solo la preparación del examen. Pero si el estudiante luego tiene que responder preguntas durante años (servir millones de consultas), un cerebro más pequeño es más barato de operar cada día. Así que compensa sobre-estudiar un cerebro pequeño (15 billones de tokens para un 8B), aunque sea “ineficiente” solo para el examen: pagas más por adelantado para ahorrar toda una vida de trabajo.
26.5 Los datos mandan: curación y calidad
Fijado el cuánto, queda el qué. Y aquí el consenso reciente es claro: la calidad de los datos rivaliza con —o supera a— la cantidad bruta. La tubería estándar es dedup → filtrado heurístico → clasificadores de calidad.
- Deduplicar importa (Lee et al. 2021): quitar repeticiones reduce ~10× la memorización literal y se entrena igual o mejor en menos pasos. (En el corpus C4 había una frase de 61 palabras repetida 60 000 veces.)
- Corpus de referencia. The Pile (~800 GB, 22 fuentes (Gao et al. 2020)); RefinedWeb (Penedo et al. 2023), que mostró que web bien filtrada y deduplicada, sola, puede batir a corpus curados; y FineWeb (15 billones de tokens (Penedo et al. 2024)), con su subconjunto FineWeb-Edu filtrado por “calidad educativa”.
- La mezcla importa (DoReMi (Xie et al. 2023)): re-pesar los dominios con un modelo pequeño de prueba mejoró ~6,5 puntos de precisión y entrenó 2,6× más rápido.
- Calidad > cantidad (Textbooks Are All You Need (Gunasekar et al. 2023)): phi-1 (1 300 M de parámetros), entrenado con ~6 000 M de tokens de “calidad de libro de texto”, igualó en código a modelos mucho mayores.
Dos matices: (1) Las proyecciones (Villalobos et al. (Villalobos et al. 2024)) estiman que el stock de texto humano público de alta calidad podría agotarse entre ~2026 y 2032 —el “muro de datos”—, lo que empuja hacia datos sintéticos y multimodales. (2) “Calidad de libro de texto” (phi) o “calidad educativa” (FineWeb-Edu) no son estándares objetivos: son etiquetas definidas por un clasificador. Funcionan, pero conviene nombrarlas como lo que son.
26.6 Cómo se reparte el trabajo: paralelismo
Un modelo de frontera no cabe en una sola GPU —ni el modelo, ni sus estados de optimizador, ni las activaciones—. Se reparte de cuatro formas que se combinan:
| Estrategia | Qué reparte | Tráfico entre GPUs | Cuándo se usa |
|---|---|---|---|
| Datos | el lote, modelo replicado | all-reduce de gradientes/paso | siempre que el modelo quepa en 1 GPU |
| Tensor (Megatron) | la matemática dentro de cada capa | alto (cada fwd/bwd) | dentro de un nodo (NVLink) |
| Pipeline (GPipe) | el stack de capas en etapas | bajo (solo activaciones de frontera) | entre nodos |
| ZeRO/FSDP | los estados (optimizador→grad→params) | medio | para quitar redundancia de memoria |
En cristiano:
- Paralelismo de datos: cada GPU tiene una copia completa del modelo y procesa una parte del lote; antes de cada paso, promedian sus gradientes (all-reduce). Lo más simple, pero por sí solo no permite modelos más grandes que una GPU.
- Paralelismo de tensor (Megatron-LM (Shoeybi et al. 2019)): parte las matrices dentro de cada capa (las del MLP, las cabezas de atención) entre GPUs. Habla muchísimo entre ellas → solo conviene dentro de un nodo con interconexión rápida.
- Paralelismo de pipeline (GPipe (Huang et al. 2018)): corta el stack de capas en etapas que viven en GPUs distintas, como una cadena de montaje. Para no dejar GPUs ociosas (la “burbuja”), trocea el lote en micro-lotes que se solapan. Habla poco → bueno entre nodos.
- ZeRO / FSDP (Rajbhandari et al. 2019): en vez de replicar los estados en cada GPU (puro desperdicio), los reparte (sharding): la etapa 1 reparte los estados del optimizador, la 2 también los gradientes, la 3 también los parámetros (que se recomponen al vuelo). El FSDP de PyTorch es esencialmente esta idea.
Los modelos de frontera combinan las tres en paralelismo 3D (p. ej. Megatron-Turing NLG de 530 000 M (Smith et al. 2022): tensor dentro del nodo, pipeline entre nodos, datos por encima). Y dos ahorros casi universales: precisión mixta bf16 (16 bits con el rango dinámico de fp32 → estable, sin trucos de escalado (Micikevicius et al. 2017)) y gradient checkpointing (Chen et al. 2016), que guarda solo algunas activaciones y recalcula el resto en la retropropagación —cambia ~30% más de cómputo por un gran ahorro de memoria—.
26.7 Estabilidad a escala: cuando el entrenamiento se rompe
Entrenar meses en miles de GPUs introduce un enemigo nuevo: la inestabilidad. Tres piezas clave que el Cap. 11 no necesitaba:
- Picos de pérdida (loss spikes). En el entrenamiento de PaLM-540B (Chowdhery et al. 2022) hubo ~20 picos de pérdida a pesar del gradient clipping. El arreglo que funcionó: rebobinar a un checkpoint ~100 pasos antes y saltarse ~200-500 lotes. Como re-alimentar esos lotes no reproducía el pico, dedujeron que no era culpa de los datos, sino de la interacción lote × estado del modelo. Mitigantes adicionales (Wortsman et al. (Wortsman et al. 2023)): qk-layernorm y z-loss frenan el crecimiento de los logits que dispara la inestabilidad.
- Tamaño de lote crítico (McCandlish et al. 2018): existe un tamaño de lote por encima del cual agrandarlo ya no acelera. Se predice con la “escala de ruido del gradiente”, que crece según baja la pérdida → por eso se rampa el lote durante el entrenamiento (GPT-3 subió de ~32k hasta el lote completo en los primeros miles de millones de tokens).
- μP / μTransfer (Yang et al. (Yang et al. 2022)): bajo esta parametrización, los hiperparámetros óptimos —sobre todo el learning rate— se mantienen estables al cambiar la anchura del modelo. Eso permite afinar en un modelo pequeño y transferir sin reajuste al grande (validado en Cerebras-GPT (Dey et al. 2023)).
Lo de μP suena a magia: con un modelo “proxy” de 13 millones de parámetros se encontraron hiperparámetros que, transferidos a ciegas, batieron a un BERT-large (350 M) afinado a mano —al coste de afinar un solo BERT-large—. Eso sí, honestidad: la transferencia es limpia a lo ancho, pero frágil en profundidad y en horizonte de tokens; ahí sigue siendo investigación abierta.
26.8 Mini-caso: entrenar desde cero
Juntando todo, la receta de un pre-entrenamiento moderno cabe en una lista:
- Curar el corpus: recoger → deduplicar (exacto + difuso) → filtrar → clasificar por calidad → fijar la mezcla de dominios.
- Dimensionar: elegir \(N\) y \(D\). Si el modelo se va a servir mucho, sobre-entrena (más tokens que la regla 20:1, estilo Llama-3).
- Afinar barato: buscar el learning rate con μP en un proxy pequeño y transferir.
- Repartir: datos + tensor + pipeline + ZeRO según quepa; bf16 + checkpointing.
- Entrenar estable: AdamW (β₂≈0,95), warmup + decaimiento coseno con el ciclo ajustado a la longitud real del run, lote rampado, clipping, checkpoints frecuentes para rebobinar tras un pico.
tafagent no entrena modelos, pero la lógica inference-aware de este capítulo es justo donde ayuda después: sobre un checkpoint ya entrenado, te calcula el presupuesto de KV (la memoria de caché que costará servir ese modelo a la longitud objetivo, vía γ; Cap. 20). Si vas a sobre-entrenar un modelo pequeño para servirlo mucho, ver de antemano su coste de inferencia es exactamente la decisión que este capítulo te pide tomar.
26.9 Resumen
- Leyes de escala: \(L(N,D)=E+A/N^{\alpha}+B/D^{\beta}\) — la pérdida baja de forma predecible con cerebro (\(N\)) y estudio (\(D\)), con un suelo irreducible \(E\).
- Kaplan vs Chinchilla: Kaplan decía “modelo enorme, pocos datos”; Chinchilla lo corrigió a ~20 tokens/parámetro (Chinchilla-70B batió a Gopher-280B). La réplica de 2024 discute los coeficientes, no la regla.
- Giro moderno (inference-aware): Chinchilla ignora el coste de servir; por eso se sobre-entrenan modelos pequeños (Llama-3 8B con 15 billones de tokens) — más barato a lo largo de la vida del modelo.
- Datos: calidad ≳ cantidad (dedup, filtrado, clasificadores, mezcla); ojo al muro de datos (~2026-2032) y a que “calidad” es una etiqueta de clasificador.
- Paralelismo: datos / tensor (Megatron) / pipeline (GPipe) / ZeRO-FSDP, combinados en 3D; bf16 + gradient checkpointing.
- Estabilidad: picos de pérdida (rebobinar + saltar lotes), lote crítico (rampar), μP (afinar pequeño → transferir al grande).
Siguiente (Capítulo 26): ya tenemos un modelo base potente. ¿Cómo lo especializamos para una tarea concreta —clasificación, embeddings, recuperación— sin reentrenarlo desde cero? Entramos en el fine-tuning.
26.10 Ejercicios
- Los términos. En \(L(N,D)=E+A/N^{\alpha}+B/D^{\beta}\), ¿qué representa \(E\) y por qué ningún modelo, por grande que sea, baja de ahí?
- El reparto. Tienes 10× más cómputo. Según Chinchilla (a≈b≈0,5), ¿cuánto creces el modelo y cuánto los datos? ¿En qué se diferenciaba de Kaplan?
- Inference-aware. Un compañero cita Chinchilla para justificar un modelo grande “óptimo”. ¿Qué coste ignora esa regla, y por qué Llama-3 entrena un 8B con 15 billones de tokens?
- Paralelismo. ¿Por qué el paralelismo de tensor se queda dentro de un nodo y el de pipeline se usa entre nodos? Piensa en cuánto “hablan” entre GPUs.
- Estabilidad. En PaLM, re-alimentar los lotes saltados no reproducía el pico de pérdida. ¿Qué dice eso sobre la causa de los picos?