Qué vas a entender
- Un LLM es un modelo que predice la siguiente pieza de texto (token).
- El transformer es el motor: atención + “pensar” por token, apilados.
- Primero se preentrena con mucho texto; luego se afina para que siga instrucciones; luego se alinea con preferencias o recompensas.
- El repo escribe TODO a mano en PyTorch (sin trl, peft ni transformers de Hugging Face).
- Puedes probar un modelo tiny en CPU (~10 min); un modelo grande necesita GPU.
¿Qué es un LLM?
LLM = Large Language Model (modelo de lenguaje grande). Claude, GPT, Gemini… todos son variantes de la misma idea: una red que, dada una secuencia de texto, calcula qué token viene después.
Como un plan de comida: primero comes de TODO (preentrenamiento = mucha comida variada). Luego te especializas en “responder como nutricionista” (SFT = menús con instrucciones). Al final te afinan con feedback de pacientes (alineación = qué respuestas gustan más).
El paper base es Attention is All You Need (2017). El repo implementa ese transformer “clásico” y también una versión moderna (como Llama / Qwen / DeepSeek).
1. ¿Qué hace un LLM en el fondo?
Tokens y embeddings
El modelo nunca ve letras. Primero un tokenizer parte el texto en tokens (pedacitos: palabras, sílabas o hasta puntuación) y cada uno se vuelve un número (id).
Esto es un tokenizer de juguete (por palabras). El repo real usa tiktoken (r50k_base, el de GPT-3) o, en la pista de laptop, un BPE chiquito de 4,096 tokens.
Esos ids pasan por una tabla de embeddings: cada id se vuelve un vector (una lista de números). Ahí “vive” el significado aproximado de cada token. Luego se suma (o se rota) la info de posición, para saber el orden.
Preentrenamiento: The Pile → ids en HDF5. SFT: Alpaca/Dolly/GSM8K con máscara (solo se entrena la respuesta del asistente). Preferencias: pares chosen/rejected. RL: prompts con respuesta dorada.
Transformer y atención
Un transformer se arma con bloques apilados. Cada bloque hace dos cosas:
- Atención: cada token mira a los anteriores (causal: no puede ver el futuro) y mezcla lo útil.
- MLP: “piensa” por token (expande, activa, comprime).
La atención usa tres vistas: Query (qué busco), Key (qué ofrezco), Value (qué paso si me eligen). Se puntúan Q·K, se aplica softmax, y se suma V con esos pesos.
Toca un token: se ilumina a quién “mira” (solo a sí mismo y a los de la izquierda).
En multi-head, varias cabezas miran patrones distintos en paralelo (pronombres, verbos, etc.) y luego se juntan.
2. ¿Por qué la máscara causal?
Siguiente token y el loss
Entrenar = repetir: toma una ventana de tokens, predice el siguiente en cada posición, mide qué tan mal lo hizo (cross-entropy loss) y mueve un poquito los pesos. Miles o millones de veces.
Elige el inicio. Un “modelo” inventado (solo pesos fijos de demo) muestra las probabilidades del siguiente token. No es un LLM real: es para sentir la idea.
Un modelo que adivina al azar empieza cerca de ln(vocab) ≈ 10.8. En su corrida de ~77M params, bajó de ~11.14 a ~3.73 train / 3.76 dev en 2000 pasos.
Pretrain → SFT → alineación
| Etapa | Qué cambia | En una línea |
|---|---|---|
| Pretrain | Datos + loss next-token | Aprende el idioma y el mundo a medias |
| SFT | Solo tokens del asistente | Aprende el formato chat y a seguir instrucciones |
| Reward Model | Pares preferred/rejected (Bradley-Terry) | Aprende a puntuar qué respuesta “está mejor” |
| DPO / ORPO / KTO | Preferencias directo en el policy | Alinea sin loop RL completo |
| PPO | Rollouts + reward + clip | RLHF clásico (también con verificador GSM8K) |
| GRPO / RLVR | Grupo de respuestas + reward verificable | Estilo DeepSeek-R1: sin value net |
El modelo base casi no se reescribe. Cambian los datos y el loss. “Wrap, don’t rewrite.”
3. ¿Qué hace el SFT distinto del preentrenamiento?
Trucos modernos (una línea cada uno)
| Pieza | Qué es, en español |
|---|---|
| RoPE | Posiciones rotando dentro de la atención (no una tabla sumada) |
| RMSNorm | Normalización más simple/rápida que LayerNorm |
| SwiGLU | Activación del MLP que usan Llama y compañía |
| GQA / MLA | Compartir keys/values entre cabezas (o un latente chico) → menos memoria |
| MoE | Varios “expertos”; solo algunos se activan por token |
| KV cache | Al generar, no recalcula todo el pasado |
| Muon | Optimizador que actualiza matrices hacia lo ortogonal |
| LoRA | Afinas con matrices chicas en vez de todos los pesos |
| IPO / SimPO | Variantes de preferencias (SimPO sin modelo de referencia) |
| Dr. GRPO / DAPO / GSPO | Ajustes 2025 al entrenamiento tipo GRPO |
| Speculative decoding | Un modelo draft adivina; el grande verifica en un pase |
| int8 | Pesos en 8 bits → ~¼ de memoria al inferir |
4. ¿Para qué sirve el KV cache?
¿Qué te costaría probarlo?
Tú eres vibecoder: Claude Code / Codex pueden clonar y correr scripts. No necesitas programar el transformer a mano. Sí necesitas Python, paciencia y (para lo grande) GPU.
| Pista | Hardware | Qué pasa | Tiempo / costo |
|---|---|---|---|
| Laptop tiny | CPU (tu Mac) | ~369K params, TinyStories, escribe cuentitos | ~10 min; gratis en tu máquina |
| 13M | GPU T4 gratis (Colab/Kaggle) o 8–16 GB | Palabras reales, gramática tosca | Horas en T4; la VRAM sí alcanza |
| ~400M base | GPU seria (24 GB+ ideal) | Base de post-training del repo | Días y dinero de cloud si no tienes GPU |
| Billones | Multi-GPU / A100 | Fuera de alcance hobby sin presupuesto | Miles de dólares de cómputo |
git clone …/train-llm-from-scratch
pip install -e .
python scripts/prepare_tiny_data.py
python scripts/train_transformer.py --preset tiny --arch modern
python scripts/generate_text.py --model_path models/tiny.pt
Para Andrey: lo valioso no es entrenar Claude en casa. Es entender qué le pides a Claude Code cuando hable de SFT, DPO o “el loss bajó”. Y poder leer el README del repo sin que te suene a hechizo.
Por qué te importa + glosario
- Claude / GPT = transformer + pretrain enorme + SFT + alineación. El repo es esa tubería en miniatura.
- Cuando un bot “alucina”, sigue prediciendo tokens plausibles, no “buscando la verdad”.
- Tus juegos y cursos en Vercel usan IAs que ya pasaron por estas etapas; tú orquestas prompts y producto.
Token
Pedazo de texto con id numérico. El modelo solo ve ids.
Embedding
Vector que representa un token (o posición) dentro del modelo.
Attention
Mecanismo para que un token mire a otros y mezcle información.
Loss
Número de “qué tan mal predijo”. Bajarlo = aprender.
Checkpoint
Foto de los pesos guardada en disco (.pt).
SFT
Supervised Fine-Tuning: afinar con ejemplos instrucción→respuesta.
RLHF
Reinforcement Learning from Human Feedback (PPO + reward model).
GSM8K
Dataset de problemas de mate de primaria; el repo lo usa para evaluar y recompensar.
5. Si mañana lees “bajamos el loss en SFT”, ¿qué significa?
¿Qué tan claro te quedó este curso?
Calificación 1–5 (se guarda solo en tu teléfono).