Andrej Karpathy publicou discretamente o microgpt.py no GitHub Gists esta semana — um único arquivo Python que treina e roda inferência num GPT usando apenas `os`, `math` e `random` da biblioteca padrão. Sem PyTorch, sem NumPy, sem TensorFlow, sem GPU. O gist passou 5 000 estrelas e 2 400 forks em poucos dias. O enquadramento de Karpathy na docstring do arquivo é incomumente absoluto: "A maneira mais atômica de treinar e rodar inferência de um GPT em Python puro, sem dependências. Este arquivo é o algoritmo completo. Todo o resto é apenas eficiência". Numa entrevista no podcast No Priors ele acrescentou a origem: construiu inteiramente à mão porque nenhum agente LLM que tentou conseguiu destilar a essência do treinamento de GPT num único arquivo claro.

A arquitetura segue o GPT-2 com três simplificações deliberadas: RMSNorm em vez de LayerNorm, sem biases em nenhuma camada linear, e ReLU em vez de GeLU. Os parâmetros padrão são minúsculos — 1 camada, embeddings de 16 dimensões, 4 cabeças de atenção (4 dimensões cada), block size 16 — dimensionados para treinar a nível de caractere no clássico `names.txt` do makemore de Karpathy. O autograd é uma classe `Value` de 40 linhas (essencialmente o padrão do micrograd), um backward pass por ordenação topológica, e um otimizador Adam inline com decaimento linear da LR ao longo de 1 000 passos. A inferência amostra 20 nomes alucinados. Tudo cabe na tela se você tem um monitor largo o bastante. Forks já produziram um port em NumPy que roda cerca de 250× mais rápido que o autograd escalar, uma versão matricial em Julia, um port em JavaScript que roda no navegador com ~4 000 parâmetros, e um projeto microgpt-denovo que demonstra que um agente já consegue reconstruir este arquivo a partir de uma especificação de alto nível — fechando o ciclo que Karpathy dizia que seus agentes não conseguiam fechar no início.

O sinal ecossistêmico aqui é pedagogia como moat. A maior parte da infraestrutura de pré-treinamento hoje são camadas de abstração — PyTorch sobre CUDA sobre kernels específicos do hardware — que escondem o algoritmo do praticante que depende dele. microgpt.py é a des-abstração: torna visíveis ao mesmo tempo o forward pass do transformer, a regra da cadeia no backward, o escalonamento RMSNorm, a atenção multi-cabeça, o append no KV-cache, o softmax com o truque do max-subtract, e os buffers de momento do Adam. Para qualquer um que faça fine-tuning de um Llama, depure um training run, ou escreva kernels CUDA personalizados, essa única tela é mais útil que metade dos capítulos de manual sobre transformers. O padrão de forks comunitários — benchmarks, ports para outras linguagens, reconstruções por agentes — também é um experimento em tempo real sobre se o código educacional relacionado a LLM agora é uma camada de coordenação por si só.

Para o builder de segunda de manhã: clone o gist, rode `python microgpt.py`, e veja um transformer convergir em geração de nomes a nível de caractere em alguns minutos na CPU. Se você já entregou código contra a API da OpenAI ou Anthropic sem ter traçado um forward pass de ponta a ponta, esta é a maneira mais barata possível de corrigir isso. Se você treina modelos, entregue-o aos seus engenheiros juniores como exercício de leitura — remove o véu do framework que torna a pergunta "o que essa loss está fazendo?" difícil de responder. A entrevista no-priors que acompanha é também onde Karpathy explica por que ele acha que a capacidade atual dos agentes ainda fica abaixo do limiar de escrever este arquivo do zero sem prompt — um marcador útil de capacidade a acompanhar.