Qué Predice un Modelo de Lenguaje
Un Motor de Continuación Probabilística
Un modelo de lenguaje toma una secuencia de tokens & asigna una distribución de probabilidad sobre qué token viene después. Aliméntalo con the cat sat on the & genera probabilidades a lo largo de todo un vocabulario: alta masa en mat, floor, couch; baja masa en xylophone, Tuesday.
Muestreando esa distribución, agregando un token, & alimentándolo de vuelta: ese bucle genera texto un token a la vez. Generación autoregresiva, nombrada así porque cada paso regresa sobre su propia salida previa.
Tres Números Definen un Modelo de Lenguaje
Tamaño del vocabulario (V). Cuántos tokens distintos puede producir un modelo. ANDREA-12M usó 4,353 tokens; ANDREA-120M usa 8,449.
Ventana de contexto (T). Cuántos tokens caben en una pasada hacia adelante. Los modelos ANDREA usan T = 1,024.
Conteo de parámetros (P). Cuántos pesos aprendidos viven dentro. 12M, 120M y 480M nombran una familia por P.
Una Familia de Tres
| Variante | d_model | Cabezas | Capas | Contexto | Parámetros |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Tres perillas de escala: d_model (ancho de cada vector interno), n_layer (profundidad de los bloques transformer apilados), n_head (proyecciones de atención paralelas). El vocabulario y el contexto permanecen fijos en toda la familia.
Leyendo la Tabla de la Familia
Por qué lo Pequeño Importa
La restricción como liberación
Los grandes modelos de lenguaje con cientos de miles de millones de parámetros requieren miles de GPUs, conjuntos de datos propietarios y presupuestos corporativos. Pocas personas pueden entrenar uno. Pocas personas pueden reparar uno.
Un pequeño modelo de lenguaje en una sola GPU lo cambia todo. Cualquiera con una 4090 (o una 3060) puede reproducir ANDREA a partir de datos abiertos. La receta de entrenamiento hace las veces de tarjeta del modelo. Código abierto, pesos abiertos, datos abiertos; procedencia completa en 72 horas de cómputo.
Capacidad vs Calidad
Los modelos más pequeños no pueden memorizar su corpus de entrenamiento. ANDREA-12M, con 12.8M de parámetros, carece de la capacidad para almacenar contenido fáctico; aprende estructura de turnos, distribución de vocabulario y forma de respuesta. ANDREA-120M, con 10× la capacidad, aprende recuerdo fáctico, coherencia multi-párrafo y amplitud de dominio (verificado mediante calificación externa de 9.5/10 en muestras de biología y procesamiento de señales).
La lección principal: la capacidad establece un techo. El currículo decide si se alcanza ese techo. Las actividades 14-23 cubren el currículo. [TITLE decoder_only/]
Tres Sabores de Transformer
Codificador, Decodificador, Ambos
El Transformer original (Vaswani et al., 2017) incluía un codificador y un decodificador, unidos para traducción. Tres linajes arquitectónicos descienden de ese artículo:
Solo codificador (linaje BERT). Atención bidireccional, sin máscara causal. Optimizado para clasificación, no para generación. Un token ve tanto su pasado como su futuro durante el entrenamiento.
Codificador-decodificador (T5, BART). El codificador lee la entrada; el decodificador genera la salida, atendiendo al codificador mediante atención cruzada. Usado para traducción, resumen.
Solo decodificador (GPT, ANDREA). Máscara causal: cada token solo ve su pasado. Entrenado para predecir el siguiente token. La generación es gratuita; el entrenamiento e inferencia comparten el mismo pase hacia adelante.
Por qué Solo Decodificador Gana en una GPU
Tres razones:
1. Objetivo único. La predicción del siguiente token funciona con cualquier texto. No se necesita par fuente/objetivo.
2. Simetría en entrenamiento & inferencia. Mismo pase hacia adelante, sin lógica especial de generación.
3. Simplicidad de memoria. Sin atención cruzada; una pila de capas; un flujo de activaciones.
ANDREA hereda la elección decoder-only de microGPT, que la heredó de nanoGPT, que la heredó de GPT-2. La línea de descendencia se mantiene estándar; lo que cambia vive en tokenización, infraestructura de entrenamiento & currículo.
Por qué Decoder-Only para ANDREA
Qué Cabe en 24 GB
Bytes Por Parámetro
Una RTX 4090 viene con 24 GB de VRAM. El entrenamiento de ANDREA-12M usó 1.4 GB. ANDREA-120M usó sustancialmente más. La diferencia se debe a un simple ejercicio de contabilidad: cada parámetro aparece múltiples veces en memoria durante el entrenamiento.
Para cada parámetro, el entrenamiento mantiene:
- El peso en sí (1× peso)
- Primer momento de Adam (m): misma forma que el peso (1× peso)
- Segundo momento de Adam (v): misma forma que el peso (1× peso)
- Gradientes: misma forma que el peso (1× peso)
- Activaciones y temporales: ~2-4× peso (varía con lote y contexto)
Total: ~6-8× el conteo de pesos, en bytes determinado por la precisión.
La Precisión Multiplica Todo
| Precisión | Bytes/parámetro | Total para 120M pesos | Notas |
|---|---|---|---|
| FP32 | 4 | 480 MB | Base; más seguro, más lento |
| FP16 | 2 | 240 MB | cuBLAS, mitad de memoria |
| FP8 E4M3 | 1 | 120 MB | Núcleos tensor, riesgo de NaN |
Multiplica por 6-8× para la huella completa durante el entrenamiento. ANDREA-120M entrena cómodamente en FP16 (~2 GB para pesos + optimizador + gradientes); FP8 E4M3 reduce a la mitad el tiempo de entrenamiento en núcleos tensor de RTX 4090.
La Actividad 13 (grow_a_language_model_precision) explora en detalle los compromisos de precisión FP.
Dimensionamiento del Estado del Optimizador de ANDREA-120M
Veinticinco Actividades
Dos Mitades
Este curso se divide claramente. La primera mitad cubre lo que microGPT enseñó al campo: un transformer que se ejecuta en una sola GPU. La segunda mitad cubre la contribución real de ANDREA: un currículo que aprende.
Mitad 1: Un Transformer en Una GPU (actividades 2-13)
| # | Actividad | Ritmo |
|---|---|---|
| 2 | Tokenizador de morfemas Harris | segmentación distribucional, vocabulario 256+N+1 |
| 3 | Alineación diet-tokenizer | punto de saturación, por qué 12M desperdició 63.6% |
| 4 | Embeddings & posición | token aprendido + búsqueda de posición |
| 5 | Atención de producto punto escalado | Q·Kᵀ/√d, máscara causal, softmax |
| 6 | Atención multi-cabeza | divisiones de cabezas, proyecciones paralelas |
| 7 | Bloque Transformer | MLP, residuales, normalización de capa |
| 8 | Entropía cruzada & perplejidad | log-verosimilitud, pérdida SMMA |
| 9 | Retropropagación en CUDA personalizado | regla de la cadena a través de microgpt_cuda.cu |
| 10 | AdamW | decaimiento de pesos desacoplado; por qué el Adam vanilla murió |
| 11 | Calentamiento LR + decaimiento coseno | rampa de 2000 pasos; por qué el pico instantáneo destruye 120M |
| 12 | Recorte de gradientes | norma L2 global; 3 kernels CUDA |
| 13 | FP32 / FP16 / FP8 E4M3 | compensaciones de precisión; núcleos tensoriales |
Mitad 2: Un Currículo Que Aprende (actividades 14-24)
| # | Actividad | Golpe |
|---|---|---|
| 14 | Bandits de múltiples brazos | UCB1, exploración vs explotación |
| 15 | Control de dados por fases | fases 7/14/21/28/42, dados 1d3/1d4 |
| 16 | Atribución de recompensas & EMA | EMA de pérdida por fuente, escalado 1000× |
| 17 | Pisos de fuente & penalización por épocas | 1/(1+epochs) previene memorización |
| 18 | Bonificación de cobertura | seguimiento a nivel de documento, 1.3× frescura |
| 19 | Calentamiento curricular | 7 fuentes de chat/prosa primeros 20K pasos |
| 20 | Filtrado por forma, no por caracteres | has_system_prompt_shape() |
| 21 | Parada temprana con coherencia | auto-halt bigram/trigram/word/char |
| 22 | Checkpoint, reanudar, señales | formato, SIGTERM/SIGUSR1, continuidad loss.json |
| 23 | Auditoría de muestras & calificación externa | lectura de una ejecución, territorio 9.5/10 |
| 24 | De microGPT a ANDREA-120M | colapso v1, correcciones v2, parche v2.5, pulido v3 |
Además un compañero: geometry_of_andrea ve cada capa como geometría (espacio de embedding, atención como proyección, superficie de pérdida, bandit como un paseo en un simplex discreto).
Orden Sugerido
Las actividades 2-13 construyen un transformer funcional. Salta a la mitad 2 si ya has entrenado transformers antes; regresa cuando la curiosidad te golpee.
Cada actividad se sostiene por sí sola donde sea posible. Las referencias matemáticas citan actividades anteriores por nombre (ver actividad 5: atención de producto punto escalado). Las referencias de código apuntan a microgpt/microgpt_cuda.cu & microgpt/training_proxy.py en ~/git/uncloseai-cli/.