Skip to content

English · Español

01 — Scaling Laws

🇪🇸 Las scaling laws (scaling laws, leyes de escala) son la única herramienta cuantitativa que tenemos para decidir, antes de gastar $1M, qué forma debe tener el modelo. Chinchilla (Hoffmann 2022) reemplazó la regla anterior de Kaplan 2020 con un consejo simple: por cada parámetro, ~20 tokens de entrenamiento. Sub-entrenar es caro; sobre-entrenar es caro; el óptimo es estrecho.

Una scaling law es una curva ajustada que predice la calidad del modelo (típicamente loss de validación) a partir de cómputo, número de parámetros o tokens de entrenamiento. El campo ha convergido en un pequeño conjunto de ajustes canónicos.

La primitiva de cómputo: \(C \approx 6 N D\)

Para un transformer denso entrenado con el bucle estándar forward+backward+actualización-del-optimizador:

\[C \;\approx\; 6 \cdot N \cdot D\]

donde \(C\) es FLOPs totales de entrenamiento, \(N\) es el número de parámetros no-embedding, \(D\) son tokens de entrenamiento. (Kaplan et al. 2020, eq. 2.1; reproducido por Hoffmann 2022.)

Esbozo de la derivación: - Forward pass: \(\approx 2ND\) FLOPs (un multiply + un add por parámetro por token). - Backward pass: \(\approx 4ND\) FLOPs (dos pasadas equivalentes a forward). - Suma: \(6ND\).

Esto excluye el término \(O(L^2)\) de la atención, que importa para modelos de contexto largo. Para \(L \lesssim 2048\) y el típico \(N \gtrsim 100\text{M}\), la aproximación \(6ND\) queda dentro del ~5%. Para \(L = 32\text{k}+\) a \(N\) pequeño, puede desviarse un 30%.

Kaplan 2020: la primera scaling law

Kaplan et al. (OpenAI, 2020, "Scaling Laws for Neural Language Models") ajustaron:

\[L(N, D) = \left( \frac{N_c}{N} \right)^{\alpha_N} + \left( \frac{D_c}{D} \right)^{\alpha_D}\]

con \(\alpha_N \approx 0.076\), \(\alpha_D \approx 0.095\), y escalas críticas ajustadas \(N_c, D_c\). Su ratio compute-óptimo predicho:

\[\frac{D_\text{opt}}{N_\text{opt}} \;\approx\; 1.7 \text{ tokens/parámetro}\]

GPT-3 (175B parámetros) se entrenó sobre ~300B tokens (Brown et al. 2020) — ratio ≈ 1.7. La receta de Kaplan.

Esto estaba equivocado. O, más precisamente: los experimentos de Kaplan fijaron el step terminal del schedule de learning rate en el lugar equivocado, y el ajuste estaba sistemáticamente sesgado hacia "hacer \(N\) más grande" porque sus corridas estaban sub-entrenadas en el extremo de \(N\) alto. El error no se detectó durante 2 años.

Chinchilla (Hoffmann 2022): la corrección

Hoffmann et al. (DeepMind, 2022, "Training Compute-Optimal Large Language Models") repitieron el experimento con tres enfoques (perfiles IsoFLOP, ajuste de loss paramétrico, barridos de tamaño-de-modelo-fijo) y obtuvieron respuestas consistentes:

\[\frac{D_\text{opt}}{N_\text{opt}} \;\approx\; 20 \text{ tokens/parámetro}\]

Es decir, el modelo compute-óptimo para presupuesto \(C\) tiene:

\[N_\text{opt} \;\approx\; 0.6 \cdot \left( \frac{C}{6} \right)^{0.5} \qquad D_\text{opt} \;\approx\; 1.7 \cdot \left( \frac{C}{6} \right)^{0.5}\]

con la consecuencia \(D_\text{opt} \approx 20 \cdot N_\text{opt}\).

Lo demostraron entrenando Chinchilla (70B parámetros, 1.4T tokens) vs Gopher (280B parámetros, 300B tokens). Mismo cómputo. Chinchilla venció a Gopher en todos los ámbitos. El ratio es 1.4T / 70B = 20.

Ajuste paramétrico de Hoffmann:

\[L(N, D) \;=\; E + \frac{A}{N^\alpha} + \frac{B}{D^\beta}\]

con constantes ajustadas \(E = 1.69\), \(A = 406.4\), \(B = 410.7\), \(\alpha = 0.34\), \(\beta = 0.28\). La constante \(E\) es el loss irreducible (la entropía de los datos, módulo tokenización).

La regla 20:1 y su ruptura

El número titular es:

\[\boxed{D_\text{opt} \;\approx\; 20 \cdot N}\]

Régimen sub-entrenado (\(D < 20 N\)): - Los modelos estilo Kaplan (GPT-3 con \(D/N \approx 1.7\)) dejan rendimiento sobre la mesa. - El token marginal vale más que el parámetro marginal. - Este es el régimen en el que estuvieron casi todos los modelos de producción frontera en 2020–2022.

Régimen sobre-entrenado (\(D > 20 N\)): - Llama-2 7B entrenado sobre 2T tokens (\(D/N \approx 286\)). - Llama-3 8B entrenado sobre 15T tokens (\(D/N \approx 1875\)). - El rendimiento sigue mejorando pero con rendimientos decrecientes. - ¿Por qué hacerlo? Porque el coste de inferencia domina al coste de entrenamiento para cualquier modelo que se entregue. Más-pequeño-pero-sobre-entrenado es más barato de servir que más-grande-pero-compute-óptimo. La economía se invierte pasados los ~1B tokens de inferencia servidos.

Este es el óptimo "consciente de la inferencia": entrena un modelo más pequeño sobre más datos si esperas tráfico de inferencia intenso. Sardana & Frankle 2023 ("Beyond Chinchilla-Optimal") lo formalizan.

La calidad de los datos domina pasado Chinchilla

Pasado el ratio 20:1, el término dominante en la siguiente reducción de loss no son más tokens — son mejores tokens.

Evidencia: FineWeb-Edu (Penedo et al. 2024, HuggingFace) filtra CommonCrawl con un clasificador LLM que puntúa el "valor educativo". Un modelo de 1.8B parámetros entrenado sobre 350B tokens de FineWeb-Edu vence al mismo modelo entrenado sobre 1T tokens de CommonCrawl crudo en benchmarks de conocimiento (MMLU, ARC) por ~5 puntos porcentuales.

La scaling law de calidad de datos (informal): doblar la calidad de los datos vale ~3-5× más datos crudos, hasta cierto punto. Pasado ese punto, el clasificador LLM se convierte en fuente de sesgo.

Implicación para X1: el lab usa shards de FineWeb-Edu (o Pile-CC como fallback), no CommonCrawl crudo. El modelo de 50M parámetros sobre 5B tokens de FineWeb-Edu llega a val-loss más baja que 50M sobre 5B tokens de CommonCrawl crudo; el gap es medible y reproducible.

Citas: los números detrás del titular

Modelo Parámetros (N) Tokens (D) D/N Fuente
GPT-3 175B 300B 1.7 Brown 2020, Tabla 2.1
Gopher 280B 300B 1.1 Rae 2021, §2
Chinchilla 70B 1.4T 20 Hoffmann 2022, Tabla 4
LLaMA-1 7B 6.7B 1.0T 149 Touvron 2023a, Tabla 1
Llama-2 7B 6.7B 2.0T 298 Touvron 2023b, Tabla 1
Llama-3 8B 8.0B 15.0T 1875 Meta 2024 (model card)
Falcon-180B 180B 3.5T 19 Almazrouei 2023, Tabla 1
OLMo-7B 7B 2.5T 357 Groeneveld 2024, Tabla 1
Pythia-12B 12B 300B 25 Biderman 2023, Tabla 1
Mistral-7B 7.3B ~8T (est.) ~1100 Jiang 2023 (D no confirmado)

La tendencia: los modelos de la era 2020 estaban sub-entrenados (D/N < 5). Chinchilla en 2022 mostró el óptimo (D/N ≈ 20). Los modelos frontera post-2023 están deliberadamente sobre-entrenados (D/N de 150 a 1900) porque la economía de inferencia importa más que la economía de entrenamiento para productos en producción.

Qué hacer con la ley

Dado un presupuesto \(C\) (FLOPs que te puedes permitir):

  1. Calcula \(N_\text{opt} \approx 0.6 \cdot (C/6)^{0.5}\), \(D_\text{opt} \approx 1.7 \cdot (C/6)^{0.5}\).
  2. Si planeas servir >\(N_\text{opt} \cdot 10^9\) tokens de inferencia, reduce \(N\) por 2-4× y escala \(D\) para preservar \(C\) — ahorrarás coste de inferencia.
  3. Si tienes un tamaño de dataset fijo \(D\) (p. ej. todo el Pile de alta calidad = ~825GB ≈ 200B tokens), elige el mayor \(N\) con \(D \geq 20 N\): \(N_\text{max} = D / 20\).
  4. Reserva siempre ~10% de \(C\) para una re-corrida de ablación si el primer lanzamiento tiene un bug recuperable.

Ejemplo desarrollado: los números del lab de X1

El lab 00 entrena 50M parámetros durante 24h en 1× A100 80GB a ~150 TFLOP/s sostenidos (bf16, MFU ~0.40 del pico de 312 TFLOP/s bf16 del A100).

  • Throughput sostenido: \(1.5 \times 10^{14}\) FLOP/s × \(8.64 \times 10^4\) s ≈ \(1.3 \times 10^{19}\) FLOP por 24 h.
  • Con \(C = 6 N D\), dado \(N = 5 \times 10^7\): \(D = C / (6 N) = 1.3 \times 10^{19} / (6 \times 5 \times 10^7) \approx 4.3 \times 10^{10}\) tokens ≈ 43B tokens.
  • Eso es \(D/N \approx 860\)deliberadamente sobre-entrenado, coincidiendo con la receta moderna de modelos pequeños.
  • El óptimo Chinchilla para \(C = 1.3 \times 10^{19}\) sería \(N \approx 230M\), \(D \approx 4.6B\). En su lugar entrenamos un 50M durante 24h, alcanzando un régimen sobre-entrenado de 4-5× que refleja el ratio de Llama-3-8B a escala de juguete.

El lab luego verifica el val-loss predicho contra el ajuste de Hoffmann con \(E=1.69\), \(A=406.4\), \(\alpha=0.34\), \(B=410.7\), \(\beta=0.28\):

\[L(5 \times 10^7, 4.3 \times 10^{10}) \approx 1.69 + \frac{406.4}{(5 \times 10^7)^{0.34}} + \frac{410.7}{(4.3 \times 10^{10})^{0.28}}\]

\(1.69 + 1.15 + 0.51 \approx 3.35\) nats/token.

Esta es la predicción contra la que el lab compara. Una corrida que aterriza dentro de ±0.15 de 3.35 es un ajuste exitoso. Una desviación >0.4 es un bug.


Siguiente: theory/02-cluster-economics.md.