Stanford CS229: Cómo Construir Modelos de Lenguaje Masivos (LLMs) — De Preentrenamiento a SFT y RLHF
Instructor: Yann Dubois (Stanford AI Lab, Autor Principal de Alpaca y AlpacaEval)
Institución Académica: Universidad de Stanford — CS229: Machine Learning (Stanford Online)
Recurso Fuente: Reel Masterclass de Facebook y Clase Completa en Stanford Online
Duración: 1 Hora 44 Minutos (Masterclass Integral de Ingeniería de IA)
Resumen Ejecutivo: La Realidad de Ingeniería de los LLMs
Construir un Modelo de Lenguaje Masivo moderno (como Claude, ChatGPT, Gemini o Llama) no consiste simplemente en ejecutar un script abierto de Transformers. En la práctica, el desarrollo de LLMs es una disciplina de ingeniería integral basada en cinco pilares fundamentales: Arquitectura, Algoritmos y Funciones de Pérdida, Ingeniería y Curaduría de Datos, Evaluación y Benchmarking, y Sistemas Distribuidos de Cómputo.
En esta clase magistral en Stanford CS229, Yann Dubois —investigador doctoral en Stanford asesorado por Percy Liang y Tatsunori Hashimoto, y pionero de los proyectos Alpaca y AlpacaEval— deconstruye de principio a fin todo el pipeline requerido para transformar billones de tokens de texto bruto de internet en un asistente conversacional alineado, seguro y de nivel de producción.
flowchart LR
A["Texto Bruto de Internet<br/>(15B+ Tokens)"] --> B["Pipeline de Datos<br/>Filtrado y Deduplicación"]
B --> C["Preentrenamiento<br/>(Transformer Decoder)"]
C --> D["Modelo Base<br/>(Completador de Texto)"]
D --> E["Instruction Tuning<br/>(SFT con 50k Pares)"]
E --> F["Alineamiento de Preferencias<br/>(RLHF / DPO)"]
F --> G["Asistente Alineado<br/>(Nivel Claude / ChatGPT)"]
📺 Temario y Marcas de Tiempo de la Masterclass
- 00:00 - Introducción y Fundamentos de Modelado de Lenguaje: ¿Qué es un LLM? Formulación matemática, distribuciones de probabilidad sobre secuencias de tokens y la diferencia entre conocimiento sintáctico y conocimiento semántico del mundo.
- 05:15 - Generación Autoregresiva y el Objetivo del Siguiente Token: Modelado causal, formulación de pérdida de entropía cruzada (Cross-Entropy Loss) y dinámica de tokenización (BPE, SentencePiece).
- 16:00 - Evaluación de Preentrenamiento y Perplejidad: Métricas teóricas de información, bits por byte y la relación directa entre la minimización de pérdida y el surgimiento de habilidades avanzadas.
- 24:30 - Benchmarks Académicos y Trampas de Evaluación: MMLU, GSM8K, HumanEval, contaminación de datos y la Ley de Goodhart en pruebas estáticas.
- 38:40 - Curaduría de Datos y Leyes de Escalamiento: Filtrado de Common Crawl, deduplicación MinHash, clasificadores de calidad, fronteras óptimas de cómputo de Kaplan vs. Chinchilla ($D \approx 20N$) y regímenes de sobre-entrenamiento.
- 52:10 - Arquitectura del Modelo y Cuellos de Botella de Inferencia: Transformers Decoder-Only, anatomía de la caché KV, Multi-Query (MQA) y Grouped-Query Attention (GQA), e incrustaciones posicionales rotatorias (RoPE).
- 1:05:30 - Ingeniería de Sistemas y Entrenamiento Distribuido: Presupuesto de memoria VRAM en GPUs, Paralelismo 3D (Tensor, Pipeline, ZeRO/FSDP) y aritmética de precisión mixta (FP16, BF16, FP8).
- 1:18:00 - Post-Entrenamiento: Supervised Fine-Tuning (SFT): Por qué los modelos base no son asistentes; diseño de conjuntos de instrucciones y la metodología Stanford Alpaca.
- 1:28:45 - Alineamiento y Optimización de Preferencias: Modelado de recompensa Bradley-Terry, bucles PPO con penalización KL y la revolución de Direct Preference Optimization (DPO).
1. Definición Formal del Modelado de Lenguaje
Matemáticamente, un modelo de lenguaje es una distribución de probabilidad conjunta sobre secuencias arbitrarias de tokens $x = (x_1, x_2, \dots, x_L)$ pertenecientes a un vocabulario finito $V$:
$$P(x_1, x_2, \dots, x_L) = \prod_{i=1}^L P(x_i \mid x_1, \dots, x_{i-1})$$
El modelo descompone la probabilidad conjunta en el producto de probabilidades condicionales del siguiente token utilizando la regla de la cadena de probabilidades.
graph LR
subgraph Contexto de Entrada
T1["El"] --> T2["ratón"]
T2 --> T3["comió"]
T3 --> T4["el"]
end
T4 --> LLM["Transformer Decoder"]
LLM --> Dist["Distribución Softmax sobre V"]
Dist --> Target["P('queso' | Contexto) = 0.84<br/>P('teclado' | Contexto) = 0.0001"]
Conocimiento Sintáctico vs. Semántico
Yann Dubois utiliza el ejemplo clásico de Stanford para demostrar por qué asignar probabilidades precisas exige inteligencia real:
1. $P(\text{el, ratón, comió, el, queso}) = 0.02$ (Estructuralmente correcta y semánticamente plausible).
2. $P(\text{el, el, ratón, comió, queso}) = 0.0001$ (Error sintáctico: estructura gramatical no válida).
3. $P(\text{el, queso, comió, el, ratón}) = 0.001$ (Sintácticamente perfecta, pero semánticamente absurda; contradice el conocimiento empírico del mundo real).
Para que una red neuronal minimice su función de pérdida sobre billones de palabras, está obligada a aprender de forma implícita gramática formal, razonamiento causal y conocimiento enciclopédico de la realidad.
2. Tokenización: La Capa Oculta Fundamental
Los modelos de lenguaje no leen texto crudo ni caracteres directamente. Todo texto es convertido en números enteros discretos por un tokenizador.
| Familia de Tokenizadores | Algoritmos | Tamaño Típico de Vocabulario | Ventajas y Desventajas |
|---|---|---|---|
| Byte-Pair Encoding (BPE) | GPT-4 (tiktoken), Llama | 32.000 a 128.000 tokens | Muy eficiente en inglés; sensible a espacios en blanco; fragmenta números grandes. |
| SentencePiece (Unigram/BPE) | T5, Gemma, Mistral | 32.000 a 256.000 tokens | Soporte nativo para Unicode; excelente tratamiento equitativo multilingüe. |
| Byte-Level Fallback | Implementaciones modernas | Ilimitado | Elimina por completo los errores de tokens fuera de vocabulario (OOV). |
Consecuencias Técnicas de la Tokenización:
- Dificultad Aritmética: Si una cifra como
12345se fragmenta en tokens arbitrarios como[12, 345]mientras que123es un solo token[123], sumar y multiplicar se convierte en un laberinto de correlación de subcadenas en lugar de álgebra real. - El Impuesto Multilingüe: Los idiomas distintos del inglés (español, árabe, japonés) suelen necesitar entre 2 y 4 veces más tokens para codificar el mismo párrafo si el tokenizador se entrenó mayoritariamente con texto anglosajón, encareciendo y ralentizando drásticamente la inferencia.
3. Preentrenamiento: Curaduría de Datos y Leyes de Escalamiento
El límite superior de capacidad de cualquier modelo fundacional está delimitado estrictamente por la calidad y variedad de su corpus de preentrenamiento.
flowchart TD
Raw["Extracción Web Bruta (Common Crawl)"] --> Dedupe["Deduplicación (MinHash / Subcadenas Exactas)"]
Dedupe --> Quality["Filtros Heurísticos y Modelos Clasificadores"]
Quality --> Repartition["Balanceo por Dominios (Código, Matemáticas, Libros)"]
Repartition --> Tokenize["Tokenización Masiva (15 Billones de Tokens)"]
Tokenize --> Cluster["Entrenamiento en Cluster de GPUs (H100 / Blackwell)"]
La Ley de Escalamiento de Chinchilla (Hoffmann et al., 2022)
Para un presupuesto de cómputo fijo de $C \approx 6ND$ operaciones de punto flotante (FLOPs), donde $N$ es la cantidad de parámetros y $D$ es el número de tokens:
* Relación Óptima de Cómputo: Los parámetros y los tokens deben escalar a la par ($D \approx 20N$).
* Sobre-entrenamiento Óptimo para Inferencia: En producción, un modelo se consulta miles de millones de veces. Por tanto, entrenar un modelo más compacto (como Llama 3 8B) con un volumen masivo de tokens ($15\text{T} \gg 20 \times 8\text{B}$) reduce drásticamente los costes de cómputo y latencia en el despliegue final.
4. Arquitectura del Modelo y Gestión de Caché KV
Los LLMs modernos adoptan de forma casi unánime la arquitectura Decoder-Only Transformer.
$$Attention(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
sequenceDiagram
participant Paso as Paso de Generación t
participant Cache as Memoria KV-Cache (VRAM)
participant Kernel as Núcleo de Atención (FlashAttention)
Paso->>Cache: Recupera proyecciones previas K, V (0 a t-1)
Kernel->>Kernel: Calcula atención del nuevo token Q_t
Kernel->>Cache: Almacena nuevos vectores K_t, V_t
Kernel-->>Paso: Distribución de probabilidades del siguiente token
MHA vs. Grouped-Query Attention (GQA)
En Multi-Head Attention (MHA) estándar, cada cabezal de consulta posee su propio par de cabezales Key y Value, lo que agota la memoria VRAM en contextos largos ($128\text{k}+$ tokens).
* Grouped-Query Attention (GQA): Varios cabezales Query comparten un único cabezal Key-Value (por ejemplo, 8 queries por cada par KV). Esto reduce el tamaño de la caché KV en un factor de $8\times$ sin degradar la precisión, haciendo viables ventanas de contexto masivas en hardware estándar.
5. Post-Entrenamiento: De Completador a Asistente Conversacional
Un modelo base entrenado exclusivamente para predecir el siguiente token es un extraordinario completador de documentos, pero un pésimo asistente. Si se le solicita:
"Escribe un script en Python para calcular números primos."
Un modelo base podría responder continuando el texto de examen:
"Ejercicio 3.4: Escribe un script para ordenar un array."
Fase 1: Supervised Fine-Tuning (SFT)
El SFT entrena el modelo sobre pares conversacionales cuidadosamente seleccionados:
$$\mathcal{L}{SFT}(\theta) = -\sum{(x,y)} \sum_{t=1}^{|y|} \log P_\theta(y_t \mid x, y_{