microgpt-c es una implementación educativa y minimalista de un transformador GPT a nivel de carácter, escrita íntegramente en C y sin dependencias externas más allá de la libc. Reúne en un único archivo el forward pass, la retropropagación, el optimizador Adam y el muestreo de tokens, y se compila en macOS, Linux y Windows (MSYS2), con detección automática de las instrucciones NEON en ARM64 y AVX2 en x86-64.
El proyecto se ejecuta con un simple make run y, por defecto, entrena sobre unos 32.000 nombres en pocos segundos. Tras 20.000 pasos, con 4.192 parámetros, alcanza una pérdida de 2,2054 nats por carácter en el conjunto de entrenamiento y de 2,2039 en los 12.000 nombres no vistos, superando a un trigrama interpolado que emplea casi cinco veces más parámetros. Tras el entrenamiento, genera nuevas muestras como kayley, maria, arana o jayden.
En cuanto a rendimiento, el código alcanza 10.168.430 tokens por segundo en un Apple M5 Pro con NEON y 6.927.775 en un AMD Ryzen 5 5600H con AVX2. El entrenamiento y la inferencia usan pasadas forward separadas: gpt_forward guarda activaciones para la retropropagación, mientras que gpt_forward_infer es una ruta especializada de un solo token cuyos logits coinciden con los del forward completo dentro del redondeo de fp32. La documentación en docs/PERFORMANCE.md detalla cómo funciona esa ruta y qué la limita. Se trata, en definitiva, de una referencia compacta para entender de forma práctica cómo se construye, entrena y muestrea un transformador autoregresivo sin recurrir a marcos de trabajo pesados.
