Saltar al contenido
10/30Capítulo 10 de 30

Preentrenar un LLM: datos, compute, scaling laws y coste

20 modelos entrenados en la GPU de un portátil para medir una scaling law y contrastar 6ND con un contador real de FLOPs.

En esta página

El capítulo 9 terminó con un bloque transformer que entrena. Apila unos cuantos, dirige la pérdida de next-token del capítulo 8 a la salida, y no queda nada por inventar. Todo lo que queda es una compra.

Es un cambio mayor de lo que parece. Hasta ahora, cada capítulo preguntaba ¿aprende? — una pregunta de sí o no que un portátil resuelve en diez minutos. Este plantea una pregunta con dinero dentro: dada una cantidad fija de aritmética, ¿cuál es el mejor modelo que puedo comprar? La respuesta es una fórmula, y en 2018 no era obvia para nadie.

Aquí está esa pregunta respondida mediante medición, en la GPU de un portátil. Veinte modelos, de 98.624 a 15 millones de parámetros, se entrenaron desde cero con 174 millones de tokens de Wikipedia: un vocabulario BPE de 2.048 tokens entrenado como se entrena uno en el capítulo 7, el transformer del capítulo 9. Cada ejecución recibió exactamente uno de tres presupuestos de compute y ni una operación más, así que un modelo más grande necesariamente lee menos texto. La mejor pérdida en datos reservados alcanzada con cada presupuesto:

TEXT
budget C (FLOPs)   best loss   reached by a model of
       1.00e13       5.3531           98,624 params
       3.16e13       4.8638           98,624 params
       1.00e14       4.3383          295,808 params

fitted:  L = (Cc / C)^0.0913     over one decade of compute

Diez veces más aritmética reduce la pérdida un 19 %, y los tres puntos caen sobre una recta en log-log. Nada en los nueve primeros capítulos predice eso. No hay un teorema detrás: es una regularidad empírica, que se mantiene con un exponente distinto a lo largo de los diez órdenes de magnitud entre este portátil y un centro de datos, y es la observación única que convenció a una industria de gastarse el PIB de un país pequeño en GPUs.

El objetivo no cambia. El modelo sigue prediciendo el siguiente token, la pérdida sigue siendo la entropía cruzada del capítulo 4 aplicada a la factorización del capítulo 8, el optimizador sigue siendo el AdamW del capítulo 6. El pretraining no es un algoritmo nuevo; es el mismo algoritmo ejecutado sobre un corpus lo bastante grande como para que haya que presupuestar la ejecución. Dos cosas lo hacen posible: las etiquetas son gratis, porque el objetivo de la posición tt es el token en t+1t+1 y ya está en el texto; y la última sección del capítulo 6 eliminó la objeción, porque un modelo con muchos más parámetros de los que permiten las reglas clásicas no se desmorona, mejora. Lo que sale es un modelo base: algo que continúa texto en lugar de responder.

Antes de poder presupuestar nada de esto hay que contarlo, y el campo lo cuenta con una fórmula:

C6NDC \approx 6ND

donde NN es el número de parámetros, DD los training tokens y CC el total de operaciones en coma flotante. Kaplan et al. la derivan en dos pasos.1 Forward: 2 FLOPs por parámetro y token, porque cada parámetro de una multiplicación de matrices se usa una vez por token, en una multiplicación y una suma. Backward: el doble del forward, porque el backward pass del capítulo 5 calcula dos gradientes en cada capa: respecto a las entradas de la capa, para que la señal siga viajando, y respecto a sus pesos; cada uno es una multiplicación de matrices del tamaño de la del forward, así que 4N4N.

Esa es toda la derivación, y merece la pena comprobarla en lugar de creerla. PyTorch incluye un contador real de FLOPs, torch.utils.flop_counter.FlopCounterMode, que intercepta cada operación que despacha un modelo y suma el trabajo real. Ejecútalo a lo largo de cuatro órdenes de magnitud, el mayor en el dispositivo meta, que asigna formas y no memoria:

flops.pyPYTHON
from torch.utils.flop_counter import FlopCounterMode

counter = FlopCounterMode(display=False)
with counter:                       
    loss = model(x, targets)[1]     
    loss.backward()                 
measured = counter.get_total_flops()
print(measured / (6 * n_params * n_tokens))
configuraciónNN sin embeddingsNN totalmedido, fwd+bwd÷ 6ND6ND (NN total)÷ 6ND6ND (sin emb.)fwd+bwd ÷ fwd
dd 128, 4 capas, TT 256788.7367.254.4004.60e101,0319,4853,000
dd 512, 8 capas, TT 25625.183.23251.045.8883.26e111,0382,1043,000
dd 768, 12 capas, TT 102484.973.056124.356.8641.75e121,1451,6763,000
dd 1600, 48 capas, TT 10241.474.870.4001.556.920.0002.10e131,1001,1613,000
dd 4096, 32 capas, TT 20486.442.983.4246.582.444.0328.74e131,0801,1043,000
dd 8192, 80 capas, TT 819264.427.147.26465.544.929.2803.75e151,1631,1833,000

La relación forward+backward sobre forward es 3,000, exacta, a todas las escalas: no una aproximación que casualmente sea buena, sino la identidad aritmética anterior devuelta como número redondo por un contador que no sabe nada de la derivación.

El total medido queda entonces entre un 3 % y un 17 % por encima de 6ND6ND, una vez que NN cuenta las matrices de embedding — y esa cláusula importa, porque los dos artículos fundacionales cuentan NN de forma distinta. Kaplan excluye "all vocabulary and positional embeddings" porque hacerlo "produces significantly cleaner scaling laws" (§1.3); el Apéndice F de Chinchilla dice "we also count embeddings matrices in the total parameter count".2 Para un vocabulario amplio y una dimensión oculta estrecha, las dos convenciones difieren por un factor de nueve, como muestra la primera fila.

La brecha residual es lo que 6ND6ND omite deliberadamente: las puntuaciones de attention. La Ec. (2.2) de Kaplan escribe el coste del forward como 2N+2nlayernctxdmodel2N + 2\,n_{\text{layer}} n_{\text{ctx}} d_{\text{model}} y descarta el segundo término porque dmodelnctx/12d_{\text{model}} \gg n_{\text{ctx}}/12 — seguro en 2020, menos seguro ahora, y la razón por la que la relación se desplaza hacia arriba al crecer T/dT/d —, por eso dos filas aquí comparten un TT de 1.024 y la relación baja, de 1,145 a 1,100, cuando dd pasa de 768 a 1.600. Es el coste O(T2)O(T^2) que introdujo el capítulo 9 y que el capítulo 16 convierte en precio.

El compute decide cuánto dura una ejecución; la memoria decide si puede empezar. Entrena con AdamW fp32 sin más y cada parámetro lleva cuatro números: el peso, su gradiente, y la media móvil mm y la varianza vv de Adam, las dos medias construidas a mano en el capítulo 6. Cuatro números a cuatro bytes cada uno son 16 bytes por parámetro, antes de una sola activación. Medido en una GPU de portátil de 8 GB, tomando la asignación residente en el punto del paso donde no queda ningún grafo vivo:

modelovocabulariobatchNN16N16N predichoresidente medidopico en un pasola diferencia
dd 512, 8 capas50.257851.045.888779 MB801 MB2.500 MB1.699 MB
dd 512, 8 capas4.096827.411.456418 MB426 MB1.043 MB617 MB
dd 256, 6 capas4.09685.839.36089 MB89 MB382 MB293 MB
dd 256, 6 capas4.096325.839.36089 MB89 MB1.259 MB1.170 MB
dd 256, 6 capas4.0961285.839.36089 MB89 MB4.771 MB4.681 MB

Predicción y medición coinciden con un margen inferior al 3 %. La sorpresa es la última columna: las activaciones empequeñecen al modelo. El mismo modelo de 5,8 millones de parámetros que necesita 89 MB de estado persistente necesita 4.681 MB de activaciones con un batch de 128 — cincuenta y dos veces el modelo —, y buena parte de eso ni siquiera es el transformer. Son los logits, un vector de tamaño vocabulario por token a cuatro bytes por entrada: 512 MB en la última fila, 393 MB en la primera. El tamaño del vocabulario se eligió en el capítulo 7, y sigue decidiendo qué cabe en la tarjeta.

Qué término domina depende de la forma de la ejecución, por eso Micikevicius et al. dicen que la memoria "is dominated by activations"3 mientras ZeRO dice que un modelo de 1.500 millones de parámetros necesita "at least 24 GB" solo de estados del modelo.4 ZeRO llega a los mismos 16 bytes por otra ruta: 2Ψ2\Psi para pesos fp16, 2Ψ2\Psi para gradientes fp16, 4Ψ4\Psi cada uno para los pesos maestros fp32 y los dos momentos de Adam; para 70.000 millones de parámetros eso son 1,12 terabytes, el equivalente a catorce GPUs de 80 GB antes de una sola activación.

Nada de eso cabe en un solo dispositivo a escala de frontera, así que la ejecución se divide de cuatro formas a la vez. Paralelismo de datos pone una copia del modelo en cada GPU y promedia los gradientes: es el valor por defecto, y el que ZeRO mejora al negarse a mantener copias redundantes del estado del optimizador. Paralelismo tensorial divide matrices individuales entre dispositivos. Paralelismo de pipeline da a cada dispositivo un grupo contiguo de capas. Paralelismo de context divide la propia secuencia, necesario solo cuando TT es lo bastante largo como para que domine el término de attention. La Tabla 4 de Llama 3 lista los cuatro a la vez: tensor 8, context hasta 16, pipeline 16, datos hasta 128, en 16.384 GPUs H100.5 Eso es todo lo que este curso dirá al respecto; la ingeniería de entrenamiento distribuido es un semestre en sí misma, y CS336 de Stanford es ese semestre, clases 5 a 8, con el código.6 Lo que sobrevive a la delegación es un único número, utilización de FLOPs del modelo: la fracción del pico aritmético de una GPU que alcanza una ejecución real, que es lo que convierte el pulcro 6ND6ND en tiempo de reloj y, por tanto, en dinero.

En enero de 2020, Kaplan et al. entrenaron una cuadrícula de transformers y descubrieron que la pérdida de test sigue una ley de potencias en cada uno de los tres recursos a lo largo de más de seis órdenes de magnitud.1 Su §1.2 da tres leyes ajustadas:

L(N)=(NcN)αN,αN0.076,Nc8.8×1013L(N) = \left(\frac{N_c}{N}\right)^{\alpha_N}, \qquad \alpha_N \approx 0.076, \qquad N_c \approx 8.8 \times 10^{13}

con acompañantes αD0.095\alpha_D \approx 0.095 para datos y αCmin0.050\alpha_C^{\min} \approx 0.050 para compute asignado de forma óptima. Las constantes no son universales, y el artículo lo dice: "the precise numerical values of NcN_c, CcminC_c^{\min} and DcD_c depend on the vocabulary size and tokenization and hence do not have a fundamental meaning."

Los exponentes son diminutos: multiplicar por diez los parámetros compra un factor 100.0761.1910^{0.076} \approx 1.19 de reducción sobre la pérdida restante. Suena a nada, y es el hecho más importante aquí: los retornos son terribles y nunca se detienen. Una ley de potencias con un exponente pequeño promete que el siguiente orden de magnitud ayudará, menos que el anterior, para siempre. Comprar compute deja de ser una apuesta y se convierte en una compra con una tasa de cambio publicada, que es exactamente el argumento que desbloqueó el capital.

Luego llegó la receta, y aquí es donde el artículo se equivocó de una forma que costó muchísimo dinero a la industria. La Tabla 6 de Kaplan da NoptC0.73N_{\text{opt}} \propto C^{0.73} y DoptC0.27D_{\text{opt}} \propto C^{0.27}: diez veces el compute significan un modelo 5,4 veces mayor alimentado con solo 1,9 veces más texto. El resumen es explícito: "optimally compute-efficient training involves training very large models on a relatively modest amount of data and stopping significantly before convergence." El campo hizo exactamente eso: GPT-3 tiene 175.000 millones de parámetros sobre 300.000 millones de tokens,7 Gopher 280.000 millones sobre 300.000 millones, Megatron-Turing NLG 530.000 millones sobre 270.000 millones.2 De medio token a dos tokens por parámetro, en todos los casos.

En marzo de 2022, Hoffmann et al. entrenaron más de 400 modelos, de 70 millones a 16.000 millones de parámetros, y llegaron a la conclusión contraria por tres rutas independientes.2 Su Tabla 2 informa del exponente aa en NoptCaN_{\text{opt}} \propto C^{a} como 0,50, 0,49 y 0,46, frente al 0,73 de Kaplan. Dicho llanamente: el tamaño del modelo y los datos de entrenamiento deberían crecer en la misma proporción.

Su segundo enfoque es el que reproduce el barrido del principio de este capítulo, a una millonésima parte de la escala: fija un presupuesto, entrena muchos tamaños exactamente con ese presupuesto, dibuja la pérdida final frente al tamaño del modelo.

parámetrosC=1013C = 10^{13}C=3.16×1013C = 3.16 \times 10^{13}C=1014C = 10^{14}
98.6245,3531 (171)4,8638 (542)
150.3205,4636 (74)
194.2085,5041 (44)4,8730 (140)4,4040 (442)
295.8085,5550 (19)4,9029 (60)4,3383 (190)
665.2805,7849 (3,8)5,1254 (12)4,4192 (38)
1.280.7685,8174 (1,0)5,1751 (3,2)4,5003 (10)
3.101.5685,4686 (0,5)4,7768 (1,7)
5.315.0725,5894 (0,2)4,8514 (0,6)
15.053.5685,3534 (0,1)

Pérdida en datos reservados en nats por token, tokens por parámetro entre paréntesis, negrita para el mejor modelo de cada presupuesto; un guion es un punto no ejecutado, porque el presupuesto exigía más texto del que contiene el corpus o porque el tamaño caía fuera de los barridos hechos ahí.

Lee hacia abajo una columna: la pérdida baja, toca fondo y vuelve a subir. Un modelo puede ser demasiado grande para su presupuesto con la misma facilidad con la que puede ser demasiado pequeño: en 101410^{14}, la penalización por elegir 665.280 parámetros en lugar de 295.808 es de 0,08 nats, que sobre la envolvente ajustada arriba es la pérdida que alcanza un modelo con el tamaño correcto con un 18 % menos de compute. Elegir la forma equivocada tira por la borda una quinta parte del presupuesto. Esa es la Figura 3 de Chinchilla en una tarde en una GPU en lugar de con cuatrocientos modelos.

Ahora lee en horizontal. En 101310^{13} el mejor modelo es el más pequeño del barrido; en 101410^{14} son 295.808 parámetros, acotados por ambos lados. El óptimo se mueve hacia la derecha al crecer el presupuesto, y ese es todo el contenido de la corrección. Ajusta el tercer enfoque del artículo — la superficie L(N,D)=E+A/Nα+B/DβL(N,D) = E + A/N^{\alpha} + B/D^{\beta} sobre cada ejecución — y minimiza sujeto a C=6NDC = 6ND:

TEXT
L(N, D) = 24.7 / N^0.195 + 46.8 / D^0.169       (E fits to ~0; see below)
implied   N_opt ∝ C^0.464
  compare   Chinchilla 0.46-0.50 · Besiroglu 0.513 · Kaplan 0.73

0,46, desde un portátil, frente al 0,73 de Kaplan. La coincidencia a tres dígitos desde un ajuste con tres presupuestos es suerte; la coincidencia al primero no lo es. El exponente viaja; la constante no, porque la relación token-parámetro en estos óptimos es de 170 a 540, no 20. Tres razones, todas instructivas. EE se ajusta a cero porque, con una pérdida por encima de 4 nats, la ejecución no está ni cerca del suelo de entropía que domina el ajuste de Chinchilla. El tamaño de batch y el learning rate se fijaron en lugar de ajustarse por punto, lo que perjudica a las ejecuciones que reciben menos pasos, y esas son las de modelos grandes: en 101310^{13} FLOPs un modelo de 1,28 millones de parámetros recibe 159 pasos de optimizador en total, muy por debajo de los pocos miles que el término SminS_{\min} de Kaplan dice que necesita cualquier modelo. Una scaling law se ajusta dentro de un régimen, y esta está seis órdenes de magnitud por debajo de Chinchilla.

De ahí el resumen del artículo: "current large language models are significantly undertrained". Chinchilla es la demostración: 70.000 millones de parámetros sobre 1,4 billones de tokens, el mismo compute total que los 280.000 millones de Gopher sobre 300.000 millones, superándolo en 51 de 57 tareas de MMLU, 67,5 % frente a 60 %.2 Cuatro veces más pequeño, cuatro veces y media más texto, mismo dinero, mejor modelo.

Dos advertencias sobre esa famosa proporción. "Veinte tokens por parámetro" no es una frase del artículo, que solo dice que "for every doubling of model size the number of training tokens should also be doubled"; el 20 es una inferencia de la Tabla 3 y de los propios 70 B sobre 1,4 T de Chinchilla. Y su precisión es peor de lo publicado: Besiroglu et al. reajustaron a partir de una digitalización de la Figura 4, encontraron que los parámetros originales "fit the reconstructed data poorly" con intervalos "implausibly tight given the number of data points", y situaron el rango honesto en "between 4 and 40" tokens por parámetro.8

Un detalle del método de Chinchilla cumple una promesa que el capítulo 1 hizo sobre los calendarios de learning rate. El calendario coseno tiene que ajustarse al presupuesto de tokens. Un modelo que verá 10 millones de tokens debe decaer su learning rate a cero en 10 millones de tokens; dale un calendario dimensionado para 100 millones, detenlo pronto, y estás leyendo una pérdida a mitad de descenso a una tasa demasiado alta. Chinchilla entrena cada modelo con cuatro longitudes de ciclo para controlar exactamente esto; el barrido de arriba fija su calendario a partir del presupuesto por la misma razón.

Son el resultado empírico más útil del campo y se venden de más continuamente. Cuatro límites.

Predicen pérdida, no capacidad. El lado izquierdo es entropía cruzada sobre texto reservado. Nada en estos artículos autoriza una afirmación sobre si un modelo escribirá SQL correcto, rechazará una petición dañina o usará una herramienta. Es otra vez la lección del capítulo 5: una predicción de la pérdida no es una predicción del comportamiento por el que pagas.

Se ajustan, no se derivan. Ninguna teoría produce αN=0.076\alpha_N = 0.076. Las constantes se mueven con el tokenizer — por eso una comparación de perplejidad entre dos tokenizers no significa nada, como explicó el capítulo 8 — y con la mezcla de datos, la arquitectura y el optimizador. Toda ley publicada es una ley de la configuración que la produjo, por eso Meta reajustó la suya antes de Llama 3.5

Asumen un token nuevo en cada paso, lo que presupone discretamente un corpus infinito. Muennighoff et al. midieron qué pasa cuando se agota: hasta cuatro épocas de datos repetidos cuestan casi nada — un modelo de 8.700 millones de parámetros sobre 44.000 millones de tokens únicos vistos cuatro veces acabó con una "only 0.5 % higher validation loss" que el mismo modelo sobre 178.000 millones únicos —, mientras que pasadas unas dieciséis épocas el compute adicional no compra nada.9

Y ya nadie entrena de forma compute-optimal. Chinchilla minimiza el coste de entrenar; un modelo desplegado paga luego aproximadamente 2N2N FLOPs por token generado, para siempre. LLaMA 1 lo dijo claramente: "given a target level of performance, the preferred model is not the fastest to train but the fastest at inference".10 Sardana et al. lo formalizaron minimizando 6NDtrain+2NDinference6ND_{\text{train}} + 2ND_{\text{inference}} en su lugar, y descubrieron que cualquiera que espere mil millones de peticiones debería entrenar "smaller and longer than Chinchilla-optimal".11 El §9.1 de Llama 3 está de acuerdo: sus modelos pequeños se entrenan "far beyond the point of compute optimal training, effectively trading training compute for inference efficiency".5 La proporción no está obsoleta; responde a una pregunta que ya no es la que se está haciendo.

Capacidades emergentes y el debate sobre si son reales

Enlace a la sección: Capacidades emergentes y el debate sobre si son reales

La pérdida cae suavemente. Las puntuaciones de benchmark a veces no. Wei et al. recopilaron casos en los que una tarea permanece al nivel del azar a lo largo de órdenes de magnitud de training compute y luego salta — aritmética de tres dígitos apareciendo en GPT-3 alrededor de 2×10222 \times 10^{22} FLOPs, MMLU subiendo por encima del azar entre 33 y 5×10235 \times 10^{23} — y le pusieron nombre al patrón: "an ability is emergent if it is not present in smaller models but is present in larger models".12 Si eso es una propiedad real, extrapolar desde experimentos baratos no es seguro, porque la capacidad que estás comprando quizá no exista a ninguna escala que puedas permitirte probar.

Schaeffer, Miranda y Koyejo argumentaron que la mayor parte es un artefacto de medición, y el mecanismo es aritmético.13 La pérdida por token cae suavemente, así que la probabilidad de que un token sea correcto, exp(L)\exp(-\mathcal{L}), mejora gradualmente. Puntúa el modelo con coincidencia exacta de cadena sobre una respuesta de LL tokens y elevas esa probabilidad a la potencia LL: una curva suave elevada a una potencia grande parece un acantilado. Cambia a una métrica que cuente tokens en lugar de exigirlos todos, sobre las mismas salidas, y "the family's performance smoothly, continuously and predictably improves with increasing scale".

Su auditoría es el número que hay que recordar: "of the 39 preferred metrics in BIG-Bench, at most 5 display emergence", con dos métricas discontinuas responsables de más del 92 % de los casos alegados; y también su cautela: "nothing in this paper should be interpreted as claiming that large language models cannot display emergent abilities". Un salto en un gráfico es evidencia sobre la métrica hasta que se demuestre lo contrario. El capítulo 29 es donde eso se convierte en tu problema, porque elegir una métrica de corte duro es una decisión que tomarás sin darte cuenta.

El corpus es la parte de una ejecución de pretraining que no tiene ecuación asociada, y donde viven la mayoría de las decisiones importantes. La materia prima es un rastreo web: el archivo de agosto de 2026 de Common Crawl contiene "2.14 billion web pages or 360 TiB of uncompressed content", un mes, gratis para descargar.14 Casi nada es usable tal cual. El artículo de T5 dice que el crawl "largely comprises gibberish or boiler-plate text like menus, error messages, or duplicate text", y el pipeline C4 que introdujo es una lista de heurísticas romas: conservar solo líneas que terminen en puntuación final, eliminar páginas con menos de tres frases, eliminar cualquier página que contenga una llave o una palabra de una lista pública de obscenidades; así convierte veinte terabytes de texto mensual en unos 750 GB.15

Romas es la palabra. Dodge et al. auditaron qué eliminan esos filtros y descubrieron que la blocklist de obscenidades borra el 42 % de los documentos en inglés afroamericano y el 32 % en inglés alineado con hispanos, frente al 6,2 % del inglés alineado con blancos, dejando un corpus con un 97,8 % de la última categoría.16 Una regla sin opinión sobre el dialecto tenía una.

Luego deduplicación, que no es limpieza doméstica: Lee et al. encontraron una frase de 61 palabras repetida 61.036 veces en C4, y demostraron que deduplicar reduce diez veces la tasa a la que los modelos "emit memorized text", del 1,9 % de tokens generados al 0,19 %.17 Pero más no es mejor: el equipo de FineWeb deduplicó globalmente a través de 96 rastreos, obtuvo 4 billones de tokens y ninguna mejora medible; luego deduplicó cada rastreo por separado, obtuvo 20 billones y igualó al mejor corpus existente.18

Luego contaminación. Llama 3 midió la suya y la publicó: el 98 % de AGIEval, el 95 % de BIG-Bench Hard y el 85 % de HellaSwag solapaban con el conjunto de entrenamiento por 8-grams, y para MMLU un solapamiento tan alto que "it is impossible to get a good performance gain estimate".5 El §4 de GPT-3 informa de un bug de filtrado que dejó benchmarks en los datos sin vuelta atrás: "because of cost considerations it was infeasible to retrain the model".7

La procedencia es la parte sin resolver. The Pile incluía un componente de 100,96 GiB llamado Books3 — el 12 % del corpus y, según la propia tabla de consentimiento del artículo, libros de un tracker torrent privado;19 se retiró en agosto de 2023 tras una reclamación de copyright. La posición legal a septiembre de 2026 no está resuelta, y las tres sentencias estadounidenses citadas como tendencia discrepan entre sí. Alsup consideró que entrenar con libros adquiridos legalmente era "exceedingly transformative" mientras sostenía que una biblioteca construida con copias pirateadas no lo era, y Anthropic cerró esa mitad por $1.5 billion cubriendo 482.460 obras, unos $3.000 cada una, aprobado el 20 de julio de 2026.20 Chhabria concedió juicio sumario a Meta mientras escribía que su decisión "does not stand for the proposition that Meta's use of copyrighted materials to train its language models is lawful", solo que "these plaintiffs made the wrong arguments".21 Bibas, fallando contra Ross Intelligence, señaló que "only non-generative AI is before me today".22 Ningún tribunal federal de apelación de EE. UU. se ha pronunciado sobre la cuestión.

Las personas hacen las partes que la pérdida no puede hacer. TIME informó en enero de 2023 de que trabajadores que etiquetaban texto tóxico para OpenAI a través de la empresa Sama se llevaban a casa "between around $1.32 and $2 per hour" leyendo pasajes que describían abuso sexual infantil, tortura y autolesiones, mientras OpenAI pagaba a Sama $12.50 la hora por el trabajo; Sama discute tanto el rango salarial como la cuota.23 Eso es el filtrado alrededor del pretraining, no el pretraining en sí, pero está en la misma factura, y es donde se sienta una persona.

La electricidad es real y suele citarse mal. La cifra publicada más cuidadosa es la de BLOOM: 1.082.990 horas-GPU, 433 MWh y 24,7 toneladas de CO₂ equivalente para la ejecución, 50,5 contando fabricación y nodos inactivos;24 Patterson et al. sitúan GPT-3 en 1.287 MWh y 552 toneladas.25 Dos advertencias. La ventaja de BLOOM es la red nuclear francesa, con 57 g CO₂ por kWh, no la eficiencia: usó más energía que OPT-175B. Y la cifra de emisiones más citada del campo, las 626.155 lb de Strubell et al. para una búsqueda de arquitectura neural, se demostró después que era 88 veces demasiado alta, porque asumía que la búsqueda se ejecutaba al tamaño completo del modelo cuando se ejecutaba sobre un proxy.26 El marco de LBNL es el defendible: los centros de datos de EE. UU. usaron 192 TWh en 2024, el 4,7 % de la electricidad nacional; una cifra asociada a una industria, no a una ejecución concreta.27

El hilo conductor es lo que Bender et al. llamaron deuda de documentación: "putting ourselves in a situation where the datasets are both undocumented and too large to document post hoc".28 Cada hecho anterior existe porque alguien miró. Para los corpus detrás de los modelos que usa la mayoría, nadie puede hacerlo.

Ahora la aritmética que todo el mundo quiere, a partir de cuatro entradas citadas, para que cuando caduquen sea obvio cuál sustituir.

La página de NVIDIA sobre H100 lista 1.979 teraFLOPS de rendimiento de tensor cores BF16 bajo una nota que dice "with sparsity".29 Ninguna ejecución de pretraining usa sparsity estructurada, así que la cifra densa es la mitad: 989,5 TFLOP/s.

La Tabla 4 de Llama 3 informa de un 38–43 % de utilización de FLOPs del modelo en BF16. Toma 40 %: 395,8 TFLOP/s de aritmética útil por GPU.5

Precio bajo demanda de Lambda para un nodo 8×H100 SXM, consultado el 06-09-2026: $3.99 por hora-GPU, así que $31.92 por hora para el nodo.30

La proporción de Chinchilla, D=20ND = 20N, da C=6ND=120N2C = 6ND = 120N^2 y por tanto N=C/120N = \sqrt{C/120}.

presupuestohoras-H100FLOPsparámetros compute-optimaltokensen un nodo 8×H100GPUs para terminar en 90 días
$100253.6e19546 M10,9 B3,1 h1
$1,0002513.6e201,73 B34,5 B31,3 h1
$10,0002.5063.6e215,46 B109 B13 días2
$100,00025.0633.6e2217,3 B345 B131 días12
$1,000,000250.6273.6e2354,6 B1,09 T4 años116
$10,000,0002.506.2663.6e24173 B3,45 T36 años1.160
$100,000,00025.062.6573.6e25546 B10,9 T358 años11.603

Lee juntas las dos últimas columnas. Con $10.000 obtienes un modelo de 5.000 millones de parámetros en un nodo alquilado en dos semanas. Con $100.000.000, la aritmética dice 546.000 millones de parámetros, y doce mil H100 conectadas durante tres meses, que no es algo que alquiles con una tarjeta de crédito. Pasado aproximadamente $100.000, la restricción vinculante deja de ser el dinero y pasa a ser el clúster.

Antes de confiar en una tabla así, compárala con ejecuciones cuyo coste real está publicado: llm.c reproduce GPT-2 124M en "~90 minutes" en un nodo 8×A100 "for about $20", y GPT-2 1.6B en 24 horas en un nodo 8×H100 por $672.31

TEXT
$672, against what $672 actually bought (llm.c GPT-2 1.6B, one 8xH100 node, 24 h)
  this table predicts:      168 H100-hours   N = 1.41 B params   D = 28.3 B tokens
  what was actually run:    192 H100-hours   N = 1.558 B params  D = 33.6 B tokens

Llama 3 405B, against Meta's own published GPU-hours
  from the paper's 3.8e25 FLOPs at 40 % MFU:   26.67 M H100-hours
  published in Meta's Llama 3.1 model card:    30.84 M H100-hours    ratio 0.86

Ambas quedan dentro de alrededor del 15 %, que es aproximadamente la precisión que merece este tipo de estimación y bastante mejor que la precisión con la que suele citarse.

La comparación titular, con ambas definiciones sobre la mesa

Enlace a la sección: La comparación titular, con ambas definiciones sobre la mesa

La cifra más repetida en este tema es que un modelo de clase GPT-2 que costaba unos $43.000 en 2019 puede reproducirse hoy por unas decenas de dólares. La mitad moderna está bien documentada; la histórica, no.

Hoy. README de nanochat de Karpathy: "you can train your own GPT-2 capability LLM ... for only $48 (~2 hours of 8XH100 GPU node) ... On a spot instance, the total cost can be closer to ~$15."32 "GPT-2 capability" aquí es preciso y está publicado: superar la puntuación CORE de GPT-2 de 0,256525, en una leaderboard cuya mejor entrada a 14 de marzo de 2026 es de 1,65 horas. Los $48 asumen $3 por hora-GPU, por debajo de los $3.99 de lista de Lambda; a precio de lista está más cerca de $64.

En 2019. No hay fuente primaria: OpenAI nunca publicó duración ni coste. La cadena pasa por The Register, febrero de 2019, que informó de "256 Google TPU3 cores" sin precio ni duración; luego Synced, junio de 2019, señaló que el hardware costaba $256 la hora en Google Cloud y dijo explícitamente que "OpenAI didn't specify the training duration". $43.008 son $256 la hora multiplicados por unas 168 horas asumidas que nadie ha documentado jamás.

Así que el titular honesto es: un modelo que iguala la puntuación publicada de GPT-2 en benchmark puede entrenarse hoy por bastante menos de $100 en hardware alquilado, frente a un coste de 2019 que nunca se publicó y cuya famosa estimación descansa sobre una conjetura sin fuente sobre la duración. El desplome es real y la mitad moderna la puede reproducir cualquiera con una tarjeta de crédito; la proporción es aritmética sobre un número que no existe. Ese es el estado de los costes de entrenamiento publicados en general. El artículo de GPT-3 no contiene ninguna cantidad en dólares, solo 3.14×10233.14 \times 10^{23} FLOPs en la Tabla D.1;7 el artículo de Llama 3 tampoco contiene ninguna.5 Todo coste de entrenamiento que hayas leído es una estimación a partir de un recuento de FLOPs, una suposición de hardware y una suposición de precio: siempre merece la pena preguntar de quién.

Qué sabe un modelo base y cuándo dejó de saberlo

Enlace a la sección: Qué sabe un modelo base y cuándo dejó de saberlo

Lo que sale ha visto un corpus fijo ensamblado en un momento fijo, y de ahí se siguen dos propiedades.

La primera es la fecha de corte del conocimiento. Después de la fecha de recopilación, el modelo no sabe nada: no "tiene incertidumbre", nada; y confabulará con fluidez en lugar de decirlo, porque decirlo nunca fue un comportamiento en el que se le entrenara. La model card de Llama 3.1 da diciembre de 2023;33 todos los modelos tienen una, y es una propiedad de los datos de entrenamiento, no del despliegue. Rodearlo es un problema de recuperación, que es el capítulo 19.

La segunda es que un modelo base completa en lugar de responder. Dale "¿Cuál es la capital de Francia?" y una continuación plausible es otra pregunta, porque en el corpus esa cadena suele aparecer en una lista de ejercicios.

Un completador de texto no es un asistente. No sigue instrucciones, porque nada en el corpus le dijo que una petición debiera obedecerse en lugar de continuarse. No tiene noción de una conversación con dos participantes. Producirá encantado la continuación más probable de un prompt dañino, porque probable es lo único para lo que se optimizó.

Convertirlo en algo que responde requiere una segunda etapa que cuesta una fracción de un porcentaje de la primera, y que consiste casi por completo en mostrarle ejemplos del comportamiento que quieres y luego comparar pares de sus propias salidas. De esa etapa salen el seguimiento de instrucciones, las chat templates, los rechazos y — esto sorprende a la gente — la capacidad de llamar a una herramienta. El capítulo 11 es esa etapa: supervised fine-tuning, RLHF, DPO y GRPO, y la pregunta de qué significa "alineado" y quién decide.


También merece la pena leer junto a este capítulo build-nanogpt de Karpathy y su vídeo acompañante, que recorren una reproducción completa de GPT-2 de principio a fin a un ritmo que este capítulo no puede permitirse; y Stanford CS324, Large Language Models, cuyas clases sobre datos y sobre impacto ambiental profundizan más que la sección anterior en material que este curso trata una vez y delega.

  1. Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J. and Amodei, D. Scaling Laws for Neural Language Models. arXiv:2001.08361 (2020). Las tres leyes de potencias son las Ecs. (1.1)–(1.3) en §1.2 y las constantes completas están en el Apéndice A, Tabla 5; la derivación de 6N6N es §2.1; los exponentes de asignación de compute están en la Tabla 6. Ten en cuenta que hay dos leyes de compute, αC=0.057\alpha_C = 0.057 con tamaño de batch fijo y αCmin=0.050\alpha_C^{\min} = 0.050 con tamaño de batch óptimo; el artículo dice que esta última "should be used to make predictions". 2

  2. Hoffmann, J., Borgeaud, S., Mensch, A., Buchatskaya, E., Cai, T., Rutherford, E. et al. Training Compute-Optimal Large Language Models. arXiv:2203.15556 (2022). Exponentes en la Tabla 2, presupuestos proyectados en la Tabla 3, la comparación con Gopher en §4, la convención de recuento de parámetros en el Apéndice F. La prosa bajo la Tabla 3 discrepa de la propia Tabla 3 para las filas 175 B y 280 B; la tabla es la versión que hay que citar. 2 3 4

  3. Micikevicius, P., Narang, S., Alben, J., Diamos, G., Elsen, E., Garcia, D. et al. Mixed Precision Training. arXiv:1710.03740 (2017), ICLR 2018. Pesos maestros FP32 en §3.1, loss scaling en §3.2. 2

  4. Rajbhandari, S., Rajbhandari, S., Ruwase, O. and He, Y. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. arXiv:1910.02054 (2019), SC20. La contabilidad 16Ψ16\Psi está en §3.1; las cifras de estado residual para activaciones están en §3.2.

  5. Grattafiori, A. et al. (Llama Team, AI @ Meta). The Llama 3 Herd of Models. arXiv:2407.21783 (2024). Presupuesto de compute y número de tokens en §1, la scaling law reajustada en §3.2.1, la configuración de paralelismo y MFU en la Tabla 4, el análisis de contaminación en §5.1.4, la declaración de sobreentrenamiento en §9.1. El artículo no contiene cifras en dólares ni tabla de emisiones. 2 3 4 5 6

  6. Stanford CS336, Language Modeling from Scratch. La clase 2 cubre contabilidad de recursos, las clases 5–8 GPUs, kernels y paralelismo, las clases 9 y 11 scaling, las clases 13–14 datos. Es el curso al que este capítulo delega su ingeniería, y es público.

  7. Brown, T. B. et al. Language Models are Few-Shot Learners. arXiv:2005.14165 (2020). Compute en el Apéndice D, Tabla D.1, que tiene una columna titulada literalmente "flops per param per token", cuyo valor para cada fila de GPT-3 es 6. Análisis de contaminación en §4. 2 3

  8. Besiroglu, T., Erdil, E., Barnett, M. and You, J. Chinchilla Scaling: A replication attempt. arXiv:2404.10102 (2024). Reconstruye los datos de Chinchilla digitalizando su Figura 4, reajusta e informa de los exponentes corregidos y de intervalos mucho más amplios.

  9. Muennighoff, N., Rush, A. M., Barak, B., Le Scao, T., Piktus, A., Tazi, N., Pyysalo, S., Wolf, T. and Raffel, C. Scaling Data-Constrained Language Models. arXiv:2305.16264 (2023), NeurIPS 2023. El resultado de cuatro épocas está en §6; la vida media de dieciséis épocas es el RD15R_D^* \approx 15 ajustado.

  10. Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M.-A., Lacroix, T. et al. LLaMA: Open and Efficient Foundation Language Models. arXiv:2302.13971 (2023). §1 expone el argumento del coste de inferencia contra el entrenamiento Chinchilla-optimal.

  11. Sardana, N., Portes, J., Doubov, S. and Frankle, J. Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws. arXiv:2401.00448 (2023), ICML 2024. Su §5 también contiene el contrapeso: los modelos entrenados con ratios extremos de tokens siguen mejorando, pero "more slowly than scaling laws predict".

  12. Wei, J., Tay, Y., Bommasani, R., Raffel, C., Zoph, B., Borgeaud, S. et al. Emergent Abilities of Large Language Models. arXiv:2206.07682 (2022), TMLR. Definición en §2, ejemplos y umbrales de compute en §3–4 y Tabla 1.

  13. Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023), artículo destacado de NeurIPS 2023. El argumento de la métrica está en §2, el metaanálisis de BIG-Bench en §4, el ejemplo de visión construido en §5.

  14. Common Crawl, August 2026 Crawl Archive Now Available (CC-MAIN-2026-34), publicado el 24 de agosto de 2026, consultado el 06-09-2026. Su propia portada afirma "over 300 billion pages spanning 15 years", "totalling more than 10 petabytes": una cifra para todo el archivo, no para el crawl mensual presupuestado aquí.

  15. Raffel, C., Shazeeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., Zhou, Y., Li, W. and Liu, P. J. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683 (2019), JMLR 21(140). Los filtros de C4 están en §2.2. El artículo da tamaños en bytes, no en tokens; la cifra de 156.000 millones de tokens ampliamente atribuida a él procede de Dodge et al. abajo.

  16. Dodge, J., Sap, M., Marasović, A., Agnew, W., Ilharco, G., Groeneveld, D., Mitchell, M. and Gardner, M. Documenting Large Webtext Corpora: A Case Study on the Colossal Clean Crawled Corpus. arXiv:2104.08758 (2021), EMNLP 2021. Las tasas de eliminación por dialecto están en §5.3; la contaminación de benchmarks en C4 está en §4.2.

  17. Lee, K., Ippolito, D., Nystrom, A., Zhang, C., Eck, D., Callison-Burch, C. and Carlini, N. Deduplicating Training Data Makes Language Models Better. arXiv:2107.06499 (2021), ACL 2022. Las 61.036 repeticiones están en la nota 1; las cifras de memorización están en §6.2, Tabla 4, y son porcentajes de tokens generados bajo un criterio de coincidencia exacta de 50 tokens.

  18. Penedo, G., Kydlíček, H., Ben Allal, L., Lozhkov, A., Mitchell, M., Raffel, C., Von Werra, L. and Wolf, T. The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale. arXiv:2406.17557 (2024), NeurIPS 2024 Datasets and Benchmarks. El resultado de deduplicación está en §3.4. El dataset publicado ha crecido desde entonces por encima de los 15 billones de tokens del artículo.

  19. Gao, L., Biderman, S., Black, S. et al. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv:2101.00027 (2020). Books3 está en §2.3 y Tabla 1; la tabla de consentimiento es la Tabla 5. El corpus tiene 825,18 GiB, así que incluso el título redondea hacia abajo.

  20. Bartz v. Anthropic, No. 4:24-cv-05417 (N.D. Cal.). Auto de fair use de 23 de junio de 2025 (Dkt. 231); certificación de clase de 17 de julio de 2025; aprobación final y sentencia de 20 de julio de 2026 (Dkt. 680). El acuerdo libera solo inputs pasados, no outputs ni conducta futura.

  21. Kadrey v. Meta, No. 3:23-cv-03417-VC (N.D. Cal.), juicio sumario de 25 de junio de 2025 (Dkt. 598). Ten en cuenta que la reclamación de distribución por torrenting no se decidió y sigue viva.

  22. Thomson Reuters v. ROSS Intelligence, No. 1:20-cv-00613-SB (D. Del.), opinión revisada de 11 de febrero de 2025 (Dkt. 770), juez Bibas. En apelación interlocutoria ante el Third Circuit (No. 25-2153), alegada el 11 de junio de 2026, sin resolver en el momento de escribir.

  23. Perrigo, B. Exclusive: OpenAI Used Kenyan Workers on Less Than $2 Per Hour to Make ChatGPT Less Toxic. TIME, 18 de enero de 2023. Los $2 son un techo para revisores sénior que cumplían todos los objetivos; los etiquetadores júnior, la mayoría, se llevaban a casa $1.32. La refutación de Sama, citada en el mismo artículo, da $1.46–$3.74 y una cuota menor.

  24. Luccioni, A. S., Viguier, S. and Ligozat, A.-L. Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model. arXiv:2211.02001 (2022), JMLR 24(253). Tablas 1 y 3.

  25. Patterson, D., Gonzalez, J., Le, Q., Liang, C., Munguia, L.-M., Rothchild, D., So, D., Texier, M. and Dean, J. Carbon Emissions and Large Neural Network Training. arXiv:2104.10350 (2021). Las cifras de GPT-3 están en la Tabla 4; la corrección de la estimación NAS está en §4.1.

  26. Strubell, E., Ganesh, A. and McCallum, A. Energy and Policy Considerations for Deep Learning in NLP. arXiv:1906.02243 (2019), ACL 2019. Merece la pena leerlo precisamente por lo que ocurrió con su número más citado: el artículo es cuidadoso, declara su extrapolación, y aun así se equivocó por dos órdenes de magnitud en la línea que todo el mundo repitió.

  27. Smith, S. J., Hubbard, A., Newkirk, A., Ganeshalingam, M., Holecek, B., Sartor, D., Mills, M. and Shehabi, A. United States Data Center Energy Usage Report: 2025 Update. LBNL-2001758 (18 de junio de 2026). Esto revisa a la baja el informe de 2024 ampliamente citado para la serie histórica; si citas la cifra de 176 TWh para 2023, estás citando la edición sustituida.

  28. Bender, E. M., Gebru, T., McMillan-Major, A. and Shmitchell, S. On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? FAccT '21, pp. 610–623. DOI 10.1145/3442188.3445922. "Documentation debt" está en §4.4. Ten en cuenta que las propias cifras de carbono del artículo se citan de Strubell et al. y heredan la corrección anterior, lo que es una ilustración de su argumento más que una refutación.

  29. NVIDIA. Página de producto NVIDIA H100 Tensor Core GPU, nvidia.com/en-us/data-center/h100/ (consultada el 06-09-2026). Cada fila de tensor cores de esa página salvo FP64 lleva la nota "with sparsity"; la cifra BF16 densa usada aquí es la mitad de los 1.979 TFLOPS publicados.

  30. Lambda. GPU Cloud pricing, lambda.ai/pricing (consultado el 06-09-2026). Bajo demanda, por GPU y hora, antes de impuestos. Los precios de esta sección caducarán antes que cualquier otra cosa de este curso; la aritmética a su alrededor no.

  31. Karpathy, A. karpathy/llm.c, discusión #481, Reproducing GPT-2 (124M) in llm.c in 90 minutes for $20 (28 de mayo de 2024), y discusión #677, Let's reproduce GPT-2 (1.6B): one 8XH100 node, 24 hours, $672, in llm.c (11 de julio de 2024).

  32. Karpathy, A. karpathy/nanochat, README y leaderboard "time to GPT-2" (consultados el 06-09-2026). La cifra de $48 y la definición por puntuación CORE de "GPT-2 capability" están ambas en el README; el propio speedrun.sh del repositorio dice "approximately 1.5 hours", así que trata la cifra de dos horas como redondeada.

  33. Meta. Llama 3.1 model card, models/llama3_1/MODEL_CARD.md en meta-llama/llama-models (consultado el 06-09-2026). Fuente de los 30,84 M de horas-H100 para el modelo 405 B, los 39,3 M totales, la cifra location-based de 11.390 tCO2eq y el cutoff de datos de diciembre de 2023.

¿Listo para dejar que elija LIA?

Crea con todos los modelos de IA en un mismo sitio. Empieza gratis hoy.