- MicroGPT es una implementación mínima de un modelo GPT escrita en 200 líneas de Python puro, diseñada para entender visualmente la estructura central de los modelos de lenguaje grandes
- Se entrena con un dataset de 32,000 nombres humanos para generar nombres nuevos, y visualiza paso a paso el proceso de tokenización, predicción, cálculo de pérdida y retropropagación
- Explica, junto con el código, los principales componentes de GPT como Softmax, Cross-Entropy Loss, Backpropagation, Embedding y Attention
- Durante el entrenamiento utiliza el optimizador Adam para reducir gradualmente la pérdida, y después genera distintos nombres mediante ajuste de temperatura (Temperature Sampling)
- Como una forma simplificada del algoritmo central de modelos grandes como ChatGPT, es un material educativo para entender cómo funcionan internamente los LLM
Resumen de MicroGPT
- Basado en un script de Python de 200 líneas escrito por Andrej Karpathy, explica visualmente el proceso de entrenamiento e inferencia de un modelo GPT
- Implementado en Python puro sin librerías externas
- Incluye los algoritmos básicos de los modelos de lenguaje grandes como ChatGPT
- El texto muestra cada etapa del modelo paso a paso mediante un enfoque visual amigable para principiantes
Dataset y objetivo de entrenamiento
- Usa como datos de entrenamiento 32,000 nombres humanos (por ejemplo, emma, olivia, ava)
- Cada nombre se considera un documento, y el modelo aprende patrones de caracteres en los nombres
- Después del entrenamiento, genera nombres nuevos como “kamon”, “karai”, “anna” y “anton”
- El modelo aprende relaciones estadísticas entre caracteres, la longitud de los nombres y patrones fonéticos de inicio y final
Proceso de convertir texto en números
- Como la red neuronal solo procesa números, cada carácter se convierte en un ID entero
- a–z se asigna a 0–25, y BOS (Beginning of Sequence) a 26
- El token BOS marca el inicio y el final del nombre
- En el GPT-4 real, tiktoken tokeniza por fragmentos de texto en lugar de caracteres, pero el principio es el mismo
Predicción del siguiente token
- El modelo predice el siguiente carácter dado un contexto
- Ejemplo: [BOS] → “e”, [BOS, e] → “m”, [BOS, e, m] → “m”, [BOS, e, m, m] → “a”
- Cada etapa genera pares de entrada (contexto) y objetivo (siguiente carácter), igual que en ChatGPT
Softmax y cálculo de probabilidades
- La salida del modelo está compuesta por 27 logits, que se convierten en probabilidades mediante Softmax
- Cada logit se exponencia y luego se divide por la suma para crear una distribución de probabilidad
- Restar el valor máximo es una estabilización para evitar overflow
- El resultado de Softmax representa la probabilidad de que cada token aparezca a continuación
Cálculo de pérdida: Cross-Entropy
- La precisión de la predicción se calcula como −log(p)
- Cuanto mayor sea la probabilidad correcta, menor es la pérdida; cuanto más cerca de 0, mayor es la pérdida
- Cuando p=1, la pérdida es 0; cuando p→0, la pérdida tiende a infinito
- El entrenamiento avanza en la dirección de minimizar esta pérdida
Retropropagación (Backpropagation)
- A partir de la pérdida, se calcula cómo afecta cada parámetro al resultado
- La derivación se realiza mediante un grafo computacional que representa todas las operaciones (add, multiply, exp, log, etc.) como nodos
- Cada nodo guarda sus entradas y derivadas locales, y propaga gradientes en sentido inverso
- Ejemplo: L = a⋅b + a (a=2, b=3) → el gradiente de a es 4.0 (la suma de dos rutas)
- Es el mismo principio que
loss.backward() en PyTorch
Embedding
- Cada ID de token se convierte en un vector de 16 dimensiones para aprender significado
- Se usa como entrada la suma del embedding del token y el embedding posicional
- El rol del mismo carácter cambia según la posición
- Después del entrenamiento, caracteres similares (por ejemplo, vocales) terminan con vectores parecidos
Attention
- Cada token genera vectores Query, Key y Value
- La relevancia se calcula mediante el producto punto entre Query y Key, y los pesos se obtienen con Softmax
- El Value ponderado se usa como salida
- Se aplica una Causal Mask para no mirar tokens futuros
- Cuatro cabezas de atención operan en paralelo y aprenden patrones distintos
Estructura completa de GPT
- Los tokens de entrada pasan por las siguientes etapas
- Embedding + embedding posicional
- Normalización RMSNorm
- Atención multi-head
- Conexión residual (Residual)
- MLP (expansión a 64 dimensiones → ReLU → reducción a 16 dimensiones)
- Otra conexión residual y cálculo de logits de salida
- La conexión Residual evita la desaparición del gradiente
- RMSNorm mantiene estable la magnitud de las activaciones y ayuda a estabilizar el entrenamiento
Bucle de entrenamiento
- Entrenamiento repetido 1,000 veces
- Selección de nombre → tokenización → forward pass → cálculo de pérdida → retropropagación → actualización de parámetros
- Uso del optimizador Adam
- Logra una convergencia estable mediante momentum y tasa de aprendizaje adaptativa
- La pérdida baja de aproximadamente 3.3 a 2.37
- Los nombres generados evolucionan gradualmente de algo aleatorio a formas más naturales
Inferencia y sampling
- Después del entrenamiento, empieza con BOS y predice repetidamente el siguiente token
- La generación se repite hasta que vuelve a aparecer BOS
- Temperature ajusta la diversidad del muestreo
- Cuanto más baja, más determinista (promedio); cuanto más alta, más creativa pero menos estable
- La temperatura adecuada para generar nombres es de alrededor de 0.5
- Ejemplo de salida: “karai”
Eficiencia y escalabilidad
- MicroGPT es una implementación completa simplificada del algoritmo central de GPT
- La diferencia con ChatGPT es solo de escala
- En lugar de 32,000 nombres, usa billones de tokens; en lugar de 4,192 parámetros, cientos de miles de millones de parámetros
- En lugar de operaciones escalares sobre CPU, usa operaciones tensoriales en GPU
- El bucle básico es el mismo: tokenizar → embedding → attention → predicción → pérdida → retropropagación → actualización
Conclusión
- MicroGPT es un modelo educativo que permite aprender de forma intuitiva cómo funciona GPT por dentro
- Simplifica la compleja estructura de los LLM a gran escala para que sea posible experimentar directamente los mecanismos centrales de un modelo de lenguaje
1 comentarios
Comentarios en Hacker News
Dice que al terminar el entrenamiento el modelo genera nombres como "kamon", "karai", "anna" y "anton", pero en realidad esos nombres también están incluidos en el dataset
Parece que sería mejor usar otros nombres — enlace al dataset
Dice que es para principiantes, pero no sé cuántos principiantes podrían entender este tipo de explicación matemática
Por ejemplo, la parte donde explica la fórmula de cross-entropy loss se sintió demasiado compleja
Lo volveré a pensar
La parte que no entiendo es cómo un modelo tan simple puede llegar a depurar cualquier problema de código
Me da curiosidad cómo la inferencia estadística se convierte en una “capacidad de razonamiento”
Como uso Claude Code todos los días, ya parece de verdad que eso pasa
La idea clave es: “si siempre puedes predecir correctamente la siguiente palabra, al final podrás responder correctamente cualquier pregunta”
Por eso últimamente se está avanzando hacia enfoques basados en aprendizaje por refuerzo como RLHF o RLVR para encontrar la ‘respuesta correcta’
Matemáticamente, se parecen más a un problema de optimización basado en cálculo diferencial
No se limitan a aprender estadísticas del texto, sino que encuentran una solución compleja para predecir el siguiente token
En las redes neuronales hay elementos estadísticos, pero también hay algo más, como en el cerebro humano
Leí todo el artículo; tenía partes útiles, pero se sintió como eso de ‘dibuja el resto del búho’
Parecía que faltaban las conexiones entre los conceptos, aunque la estructura interactiva estuvo bien
Me habría gustado que lo tratara con más profundidad
Me pregunto si últimamente se ha puesto de moda meter errores de ortografía o gramática a propósito para demostrar que un texto no fue escrito por un LLM
También vi bastantes errores así en el blog de Karpathy y en este artículo
Solo sostuvo durante mucho tiempo el proyecto de Full Self Driving de Elon, y tampoco estuvo tanto tiempo en OpenAI
Últimamente parece estar concentrado casi solo en code golf o en inventar neologismos
El original está en el blog de Karpathy — enlace al artículo de microGPT
Algunos dijeron que era demasiado básico y otros que iba demasiado a fondo, pero
para alguien como yo, que no entiende bien cómo funcionan los modelos, fue una buena visión general
No lo entendí del todo, pero me pareció un buen punto de partida para empezar a aprender
Fue uno de los tutoriales más útiles que he visto hasta ahora
Yo no programaba, pero gracias a la IA empecé a escribir código
La explicación es simple y clara, así que ayuda mucho a pensar qué pedirle a la IA
Parece que T-Mobile está bloqueando esta página del blog
enlace a la página de advertencia de bloqueo
Al leer el artículo entendí que se imprimieran nombres, pero me pregunté por qué usaron específicamente generación de nombres como ejemplo
Se podría hacer también con cualquier otro tipo de datos