Sala 0
Progreso0%
Curso visual · IA por dentro

Cómo se entrena un LLM desde cero

Para entender el post de naiker.codes a tu nivel

El repo Train LLM From Scratch (FareedKhan-dev, ~12.5k estrellas) enseña a construir un transformer en PyTorch puro: de texto crudo a un modelo alineado que razona. Aquí te lo traduzco sin matemáticas pesadas.

8 salas 2 interactivos 5 quizzes ~15 min
Sala 0 · Mapa

Qué vas a entender

Resumen
  • 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.
Sala I · La idea

¿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.

Analogía de entrenamiento

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?

Exacto: es predicción del siguiente token, una y otra vez. Con eso escribe, razona y chatea.
Sala II · Números

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).

Prueba · tokeniza una frase0 tokens

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.

En el repo

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.

Sala III · El motor

Transformer y atención

Un transformer se arma con bloques apilados. Cada bloque hace dos cosas:

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.

Interactivo · atención causal

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?

Sin esa máscara, el modelo vería la respuesta mientras la predice. Sería hacer trampa en el examen.
Sala IV · Aprender

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.

Interactivo · predictor de juguete

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.

Contexto—
Top siguientes
Dato del repo

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.

Sala V · De base a asistente

Pretrain → SFT → alineación

Texto crudo→ Tokens→ Transformer→ Base→ SFT→ RM / DPO / PPO→ GRPO→ Chat / eval
EtapaQué cambiaEn una línea
PretrainDatos + loss next-tokenAprende el idioma y el mundo a medias
SFTSolo tokens del asistenteAprende el formato chat y a seguir instrucciones
Reward ModelPares preferred/rejected (Bradley-Terry)Aprende a puntuar qué respuesta “está mejor”
DPO / ORPO / KTOPreferencias directo en el policyAlinea sin loop RL completo
PPORollouts + reward + clipRLHF clásico (también con verificador GSM8K)
GRPO / RLVRGrupo de respuestas + reward verificableEstilo DeepSeek-R1: sin value net
Idea clave del repo

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?

Misma predicción de siguiente token; la máscara de loss oculta el prompt para no enseñarle a copiar la pregunta.
Sala VI · Actualizado 2024–25

Trucos modernos (una línea cada uno)

PiezaQué es, en español
RoPEPosiciones rotando dentro de la atención (no una tabla sumada)
RMSNormNormalización más simple/rápida que LayerNorm
SwiGLUActivación del MLP que usan Llama y compañía
GQA / MLACompartir keys/values entre cabezas (o un latente chico) → menos memoria
MoEVarios “expertos”; solo algunos se activan por token
KV cacheAl generar, no recalcula todo el pasado
MuonOptimizador que actualiza matrices hacia lo ortogonal
LoRAAfinas con matrices chicas en vez de todos los pesos
IPO / SimPOVariantes de preferencias (SimPO sin modelo de referencia)
Dr. GRPO / DAPO / GSPOAjustes 2025 al entrenamiento tipo GRPO
Speculative decodingUn modelo draft adivina; el grande verifica en un pase
int8Pesos en 8 bits → ~¼ de memoria al inferir

4. ¿Para qué sirve el KV cache?

Sin cache, cada token regeneraría atención sobre toda la historia. Con cache, solo procesas el nuevo.
Sala VII · En la práctica

¿Qué te costaría probarlo?

Realista

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.

PistaHardwareQué pasaTiempo / costo
Laptop tinyCPU (tu Mac)~369K params, TinyStories, escribe cuentitos~10 min; gratis en tu máquina
13MGPU T4 gratis (Colab/Kaggle) o 8–16 GBPalabras reales, gramática toscaHoras en T4; la VRAM sí alcanza
~400M baseGPU seria (24 GB+ ideal)Base de post-training del repoDías y dinero de cloud si no tienes GPU
BillonesMulti-GPU / A100Fuera de alcance hobby sin presupuestoMiles de dólares de cómputo
Comandos del README (laptop)

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.

Sala VIII · Cierre

Por qué te importa + glosario

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?

Eso es. Loss más bajo en SFT ≈ mejor en imitar las respuestas del dataset (no garantiza verdad absoluta).

¿Qué tan claro te quedó este curso?

Calificación 1–5 (se guarda solo en tu teléfono).