Andrej Karpathy publicó discretamente microgpt.py en GitHub Gists esta semana — un único archivo Python que entrena y corre inferencia en un GPT usando solo `os`, `math` y `random` de la librería estándar. Sin PyTorch, sin NumPy, sin TensorFlow, sin GPU. El gist superó las 5 000 estrellas y 2 400 forks en cuestión de días. El encuadre de Karpathy en la docstring del archivo es inusualmente absoluto: "La manera más atómica de entrenar y correr inferencia de un GPT en Python puro, sin dependencias. Este archivo es el algoritmo completo. Todo lo demás es solo eficiencia". En una entrevista en el podcast No Priors agregó el origen: lo construyó enteramente a mano porque ningún agente LLM que probó pudo destilar la esencia del entrenamiento GPT en un único archivo claro.
La arquitectura sigue GPT-2 con tres simplificaciones deliberadas: RMSNorm en lugar de LayerNorm, sin biases en ninguna capa lineal, y ReLU en lugar de GeLU. Los parámetros por defecto son diminutos — 1 capa, embeddings de 16 dimensiones, 4 cabezas de atención (4 dimensiones cada una), block size 16 — dimensionados para entrenar a nivel de carácter sobre el clásico `names.txt` de Karpathy de makemore. El autograd es una clase `Value` de 40 líneas (esencialmente el patrón micrograd), un backward pass con ordenamiento topológico, y un optimizador Adam inline con decaimiento lineal del LR sobre 1 000 pasos. La inferencia muestrea 20 nombres alucinados. Todo cabe en la pantalla si tienes un monitor lo bastante ancho. Los forks ya produjeron un port NumPy que corre unas 250× más rápido que el autograd escalar, una versión matricial en Julia, un port en JavaScript que corre en el navegador a ~4 000 parámetros, y un proyecto microgpt-denovo que demuestra que un agente ya puede reconstruir este archivo a partir de una especificación de alto nivel — cerrando el bucle que Karpathy decía que sus agentes no podían cerrar al principio.
La señal ecosistémica aquí es pedagogía como moat. La mayor parte de la infraestructura de preentrenamiento hoy son capas de abstracción — PyTorch sobre CUDA sobre kernels específicos del hardware — que esconden el algoritmo al practicante que depende de él. microgpt.py es la des-abstracción: hace visible al mismo tiempo el forward pass del transformer, la regla de la cadena en backward, el escalado RMSNorm, la atención multi-cabeza, el append al KV-cache, el softmax con el truco max-subtract, y los buffers de momentos de Adam. Para cualquiera que haga fine-tuning de un Llama, debugee un training run, o escriba kernels CUDA personalizados, esta única pantalla es más útil que la mitad de los capítulos de manual sobre transformers. El patrón de forks comunitarios — benchmarks, ports a otros lenguajes, reconstrucciones por agentes — es también un experimento en tiempo real sobre si el código educativo relacionado con LLMs es ahora una capa de coordinación por sí misma.
Para el builder de lunes por la mañana: clona el gist, corre `python microgpt.py`, y mira a un transformer converger en generación de nombres a nivel de carácter en unos minutos en CPU. Si alguna vez has entregado código contra la API de OpenAI o Anthropic sin haber trazado un forward pass de punta a punta, esta es la manera más barata posible de arreglar eso. Si entrenas modelos, dáselo a tus ingenieros junior como ejercicio de lectura — quita el velo del framework que hace difícil responder "¿qué está haciendo este loss?". La entrevista no-priors acompañante es también donde Karpathy explica por qué cree que la capacidad actual de los agentes aún tope debajo del umbral de escribir este archivo desde cero sin prompt — un marcador útil de capacidad a seguir.
