Leyes de escala y costos
¿Cuánto cuesta un modelo y qué se obtiene al hacerlo más grande?
Lección completa
Si quieres:
En la lección anterior, Pythia, con mil cuatrocientos millones de parámetros, aprendió leyendo trescientos mil millones de tokens. Hoy: si lo hacemos más grande, ¿cuánto mejora? ¿Y cuánto cuesta?
Sin voz: la lección avanza sola con subtítulos.
La voz de esta lección está en preparación: por ahora avanza sola con subtítulos.
Modo revisiónComentar este pasoTerminé la lección
Qué lograrás
- Explicar qué es escalar un modelo (más parámetros, más datos, más cómputo) y por qué la pérdida baja de forma predecible, pero cada vez menos.
- Leer una gráfica en escala logarítmica y reconocer una ley de escala: cada ×10 en parámetros multiplica la pérdida por el mismo número.
- Calcular el cómputo de un entrenamiento con C ≈ 6·N·D y convertirlo en horas de GPU y en dinero, distinguiendo cifras reales de supuestos.
Ideas clave
- Escalar un modelo es girar tres perillas: más parámetros (N), más tokens de entrenamiento (D) y más cómputo (C).
- La pérdida baja de forma predecible pero con rendimientos decrecientes: en escala logarítmica es una recta, y cada ×10 en parámetros la multiplica por ≈ 0.84 (Kaplan et al., 2020). A eso se le llama ley de escala.
- El cómputo de entrenamiento es C ≈ 6·N·D FLOPs: 2N por token de ida y 4N de regreso. Dividido entre la velocidad útil de una GPU da horas de GPU; por el precio por hora, dinero. Más GPU acortan el tiempo, no el costo.
- Con un presupuesto fijo conviene crecer parámetros y datos a la par: unos 20 tokens por parámetro. Chinchilla (70 mil M) superó a Gopher (280 mil M) con casi el mismo cómputo.
- La pérdida se predice bien; las habilidades concretas, mucho menos. Parte de lo que parece «emergente» depende de cómo se mide (Schaeffer et al., 2023).
Lo que mucha gente cree
Creencia común Un modelo con más parámetros siempre es mejor: basta con hacerlo más grande.
Lo correcto Importa cómo se gasta el cómputo. Con casi el mismo presupuesto, Chinchilla (70 mil millones de parámetros, 1.4 billones de tokens) superó a Gopher (280 mil millones, 300 mil millones de tokens). Y cada ×10 de tamaño baja la pérdida una proporción fija, mientras el costo se multiplica.
Compruébalo
Cuatro preguntas. Sin nota ni cuenta: sirven para ver si la idea quedó.
Por dentroPara quien quiere las fórmulas y el código. No hace falta para seguir el curso.
La ley de potencia y la escala logarítmica
Kaplan et al. (2020) entrenaron transformers de 768 a 1 500 millones de parámetros (sin contar los embeddings) con texto de WebText2 y ajustaron la pérdida (entropía cruzada, en nats por token) frente al número de parámetros , con datos de sobra:
Al tomar logaritmos, : una recta de pendiente cuando los dos ejes están en escala logarítmica. Multiplicar por multiplica por : por 10, . Hay rectas parecidas para los datos (, es decir ×0.80 por cada ×10) y para el cómputo bien repartido (, ×0.89). Las constantes dependen del vocabulario y de los datos, y fuera del rango medido todo es extrapolación. La lección dibuja esta fórmula publicada, no las mediciones crudas.
Por qué seis:
En la ida, cada parámetro participa en una multiplicación y una suma por token: unos FLOPs (Kaplan et al., ec. 2.2, ignorando el término de atención, pequeño cuando ). El regreso calcula dos cosas, el gradiente respecto de los pesos y respecto de las activaciones, y cada una cuesta lo mismo que la ida (Brown et al., 2020, tabla D.1): unos . En total, por token y
Hoffmann et al. (2022, tabla A4) compararon su conteo exacto con en modelos de 73 M a 6.8 mil M de parámetros: la razón fue de 0.99 a 1.10. Para GPT-3, ; el artículo reporta con mil M.
Presupuesto fijo (Chinchilla)
Hoffmann et al. proponen para la pérdida
es la pérdida que no se puede quitar; el segundo término, lo que falta por tener un modelo finito; el tercero, por haber visto datos finitos. Minimizar con fijo da y con : parámetros y datos crecen a la par, y su tabla 3 da unos 20 tokens por parámetro (1 000 M → 20.2 mil M de tokens; 10 mil M → 205 mil M). Kaplan había encontrado : con 10 veces más cómputo, 5.5 veces más parámetros y solo 1.8 veces más datos. Besiroglu et al. (2024) reajustaron las cinco constantes con datos reconstruidos de sus gráficas: las publicadas no concordaban con los otros dos métodos del artículo, y las suyas sí (su punto central da unos 26 tokens por parámetro). Llama 3 hizo su propio ajuste y, para FLOPs, predijo un modelo de 402 mil M con 16.55 billones de tokens.
Veinte es una guía para gastar bien el cómputo de entrenamiento, no una ley. Si el modelo se va a usar muchísimo, conviene uno más chico entrenado con más tokens, porque cada respuesta cuesta menos (Sardana et al., 2024): Llama 3.1 de 8 mil M leyó más de 15 billones de tokens.
De FLOPs a horas y dinero
Con una velocidad pico por GPU y una fracción de aprovechamiento (MFU, model FLOPs utilization, Chowdhery et al., 2022),
son las horas de GPU y el tiempo con GPU a la vez. Como no depende de , duplicar las GPU reduce el tiempo a la mitad y deja el costo igual, mientras el aprovechamiento se mantenga. La ficha de la H100 da 1 979 teraFLOPS en BF16 «con dispersión»; sin ella, es la mitad (NVIDIA, 2021: la dispersión 2:4 duplica el rendimiento pico), unos 989. Llama 3 405B midió de 380 a 430 teraFLOPS por GPU, un MFU de 38 a 43 % (tabla 4), con hasta 16 384 GPU y 466 interrupciones en un periodo de 54 días. PaLM reporta 46.2 % y estima 21.3 % para GPT-3.
En código
def entrenamiento(n, d, util=400e12, precio=2.0, gpus=16384):
flops = 6 * n * d # C ≈ 6·N·D
horas = flops / util / 3600 # horas de GPU
return flops, horas, horas / gpus / 24, horas * precio
modelos = [("Pythia 1.4B", 1.4e9, 300e9), ("GPT-3", 175e9, 300e9),
("Chinchilla", 70e9, 1.4e12), ("Llama 3.1 405B", 405e9, 15.6e12)]
for nombre, n, d in modelos:
c, h, dias, usd = entrenamiento(n, d)
print(f"{nombre:15} C = {c:.2e} horas = {h:9.0f} días = {dias:5.1f} US$ {usd:9.0f}")
print(round(10 ** -0.076, 3)) # ×10 en N: la pérdida se multiplica por esto
Salida:
Pythia 1.4B C = 2.52e+21 horas = 1750 días = 0.0 US$ 3500
GPT-3 C = 3.15e+23 horas = 218750 días = 0.6 US$ 437500
Chinchilla C = 5.88e+23 horas = 408333 días = 1.0 US$ 816667
Llama 3.1 405B C = 3.79e+25 horas = 26325000 días = 66.9 US$ 52650000
0.839
Los 400 billones de operaciones útiles por segundo, los 2 dólares por hora y las 16 384 GPU son supuestos (los dos primeros no son precios ni mediciones de cada modelo; GPT-3 y Chinchilla se entrenaron en otro hardware). La cifra cubre solo la corrida final: ni ensayos, ni fallas, ni datos, ni personas. Meta reportó 30.84 millones de horas de GPU H100 para Llama 3.1 405B.
Lo que viene
La lección 25 cuenta bytes en lugar de operaciones: qué modelo cabe en la memoria de una GPU y cómo se reparte el trabajo. La 26 mide el costo de usar el modelo, que con mucha demanda pesa más que el de entrenarlo. La 27 reutiliza un modelo base en vez de repetir esta cuenta.
Lente de decisión
Qué significa esta idea si tu trabajo es decidir, no programar.
- Entrenar desde cero está fuera de alcance para casi todas las organizaciones: con supuestos modestos, solo la corrida final de un modelo como Llama 3.1 405B ronda las decenas de millones de dólares en cómputo, sin ensayos, fallas, datos ni personal. La decisión real es qué modelo usar, si ajustarlo (lección 27) y cuánto cuesta servirlo (lección 26).
- Ante «más grande = mejor», pregunta con cuántos tokens y cuánto cómputo se entrenó, y pide resultados en tus tareas. Con casi el mismo cómputo, Chinchilla (70 mil millones de parámetros) superó a Gopher (280 mil millones).
- Los rendimientos decrecen: cada ×10 de parámetros cuesta unas diez veces más y baja la pérdida en una proporción fija (×0.84). Antes de pagar el siguiente salto, pregunta cuánto vale esa mejora en tu caso; y recuerda que una pérdida menor no garantiza una habilidad concreta.
- Ante un presupuesto de entrenamiento, pide el desglose: FLOPs (6·N·D), horas de GPU, velocidad útil supuesta y precio por hora. Más GPU acortan el calendario, no el costo; y los clústeres grandes pierden tiempo en fallas (Llama 3: 466 interrupciones en 54 días).
Términos de la lección
- Ley de escala Regularidad medida, no una ley de la naturaleza: la pérdida de un modelo baja como una potencia de sus parámetros, sus datos o su cómputo. En escala logarítmica se ve como una recta: cada ×10 multiplica la pérdida por el mismo número.
- FLOP, FLOPs Operación de punto flotante: una suma o una multiplicación con decimales. El cómputo de un entrenamiento se cuenta en FLOPs totales (≈ 6·N·D); la velocidad de un chip, en FLOPs por segundo.
- Chinchilla Modelo de DeepMind (2022; 70 mil millones de parámetros, 1.4 billones de tokens) y la regla que dejó: con un presupuesto fijo, parámetros y datos deben crecer a la par, unos 20 tokens por parámetro.
- Presupuesto de cómputo Total de FLOPs que se decide gastar en entrenar un modelo. Como C ≈ 6·N·D, fija el «área» que se reparte entre tamaño del modelo y cantidad de datos: si sube uno, baja el otro.
- Parámetro Cada uno de los números que un modelo ajusta al entrenarse y en los que guarda lo aprendido.
- Función de pérdida Un único número que resume qué tan equivocado está un modelo con sus datos. Entrenar es buscar los parámetros que lo hacen lo más pequeño posible.
- Token Pieza de texto (una palabra, un trozo de palabra, un signo o un código básico) tomada del vocabulario. Es la unidad que el modelo lee y genera, y por la que se cobra.
- GPU Unidad de procesamiento gráfico: un chip con cientos o miles de núcleos sencillos, creado para dibujar gráficos y muy eficiente para multiplicar matrices en paralelo, la operación central del entrenamiento.
- Cómputo (compute) Cantidad de operaciones aritméticas que exige entrenar o ejecutar un modelo. Junto con los datos y los algoritmos, es uno de los tres motores del progreso del aprendizaje automático.
- Retropropagación Algoritmo que calcula el gradiente de la pérdida respecto de todos los pesos de una red en un solo recorrido hacia atrás, aplicando la regla de la cadena capa por capa. Calcula las culpas; no mueve los pesos (en el artículo de 1986, el nombre abarcaba todo el procedimiento de aprendizaje).
- Preentrenamiento Primera etapa del entrenamiento de un modelo de lenguaje: con un corpus enorme, el modelo adivina la siguiente pieza del texto una y otra vez y ajusta sus parámetros para bajar el error. El resultado es un modelo base.
- Modelo base Modelo de lenguaje que solo pasó por el preentrenamiento: sabe continuar textos, pero no está ajustado para seguir instrucciones ni conversar como un asistente.
- Modelo de lenguaje Modelo que, dado un texto (el contexto), da una probabilidad a cada palabra o pieza que puede seguir. Escribe agregando una pieza a la vez.
- Modelo Una forma de regla con números ajustables. Una vez entrenado, es la regla aprendida.
Transcripción completa
Fuentes
- Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J., Amodei, D. (2020). Scaling Laws for Neural Language Models
- Hoffmann, J., Borgeaud, S., Mensch, A., et al. (2022). Training Compute-Optimal Large Language Models (Chinchilla)
- Rae, J. W., Borgeaud, S., Cai, T., et al. (2021). Scaling Language Models: Methods, Analysis & Insights from Training Gopher
- Brown, T. B., et al. (2020). Language Models are Few-Shot Learners (tabla D.1: cómputo de GPT-3)
- Biderman, S., Schoelkopf, H., Anthony, Q., et al. (2023). Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling
- Grattafiori, A., et al. (Llama Team, AI @ Meta) (2024). The Llama 3 Herd of Models
- Meta (2024). Llama 3.1 Model Card (horas de GPU de entrenamiento)
- NVIDIA (2022). NVIDIA H100 Tensor Core GPU (especificaciones)
- Pool, J., Sawarkar, A., Rodge, J. (NVIDIA) (2021). Accelerating Inference with Sparsity Using the NVIDIA Ampere Architecture and NVIDIA TensorRT (tabla 1: rendimiento denso frente a disperso)
- Chowdhery, A., et al. (2022). PaLM: Scaling Language Modeling with Pathways (definición de MFU)
- Wei, J., Tay, Y., Bommasani, R., et al. (2022). Emergent Abilities of Large Language Models
- Schaeffer, R., Miranda, B., Koyejo, S. (2023). Are Emergent Abilities of Large Language Models a Mirage?
- Besiroglu, T., Erdil, E., Barnett, M., You, J. (2024). Chinchilla Scaling: A replication attempt
- Sardana, N., Portes, J., Doubov, S., Frankle, J. (2024). Beyond Chinchilla-Optimal: Accounting for Inference in Language Model Scaling Laws
ComentariosConversación pública de esta lección: dudas, datos por revisar, ideas.
Los comentarios viven en GitHub Discussions, en el repositorio público del curso; para escribir se necesita una cuenta de GitHub. Se cargan desde giscus.app al abrir esta sección. Las personas que revisan el curso los leen, y si un cambio se acepta, se aplica en los dos idiomas. Abrir el hilo en GitHub