Andrej Karpathy 本周悄悄把 microgpt.py 发到了 GitHub Gists——一个单文件 Python,仅用标准库的 `os`、`math`、`random` 就能训练并跑 GPT 推理。没有 PyTorch、没有 NumPy、没有 TensorFlow、没有 GPU。这个 gist 几天内已超过 5,000 颗星、2,400 个 fork。Karpathy 在文件 docstring 里的措辞罕见地斩钉截铁:"在纯依赖自由的 Python 里,训练并跑 GPT 推理的最原子方式。这个文件就是完整算法。其余一切都只是效率。"他在 No Priors 播客访谈中补充了由来:他完全手写,因为他试过的任何一个 LLM agent 都没办法把 GPT 训练的本质蒸馏成一个清晰的单文件。

架构沿用 GPT-2 但有三个刻意的简化:RMSNorm 替代 LayerNorm、线性层无 bias、ReLU 替代 GeLU。默认超参极小——1 层、16 维 embedding、4 个 attention head(每个 4 维)、block size 16——刚好够在 Karpathy 经典的 makemore `names.txt` 上做字符级训练。autograd 是一个 40 行的 `Value` 类(本质上是 micrograd 的模式),拓扑排序的 backward pass,以及一个内联的 Adam 优化器、线性 LR decay,跑 1000 步。推理时采样 20 个"幻觉"出来的名字。如果显示器够宽,整个文件能一屏装下。fork 已经出现了一个 NumPy 版本(比标量 autograd 快约 250×)、一个 Julia 矩阵版、一个能在浏览器里跑 ~4000 参数的 JavaScript 移植版、以及一个 microgpt-denovo 项目——证明 agent 现在能从一个高层规范重建出这个文件,正好补上了 Karpathy 一开始说他的 agent 闭不上的那个环。

这里的生态信号是教学即护城河。今天大多数预训练基础设施都是层层抽象——PyTorch 跑在 CUDA 上、CUDA 跑在硬件专属 kernel 上——它把算法藏起来,而依赖它的从业者却看不见。microgpt.py 是去抽象化:它同时让 transformer 的 forward pass、backward 链式法则、RMSNorm 缩放、多头注意力、KV-cache 追加、softmax 的 max-subtract 技巧、Adam 的动量缓冲区——全部一次性可见。对任何在微调 Llama、debug 训练运行、或者写自定义 CUDA kernel 的人来说,这一屏比教科书里关于 transformer 的半本章节都更有用。社区 fork 模式——benchmark、跨语言移植、agent 重构——本身也是一个实时实验,看看跟 LLM 相关的教育代码是否已经成为一个独立的协作层。

周一早晨的 builder:克隆这个 gist,跑 `python microgpt.py`,在 CPU 上几分钟内就能看到一个 transformer 收敛于字符级名字生成。如果你曾经对着 OpenAI 或 Anthropic 的 API 写过代码但从未追踪过一次完整的 forward pass,这是修正这件事最便宜的方式。如果你训模型,把它丢给初级工程师当阅读练习——它把那层让"这个 loss 在干嘛?"变难回答的 framework 面纱掀掉。配套的 no-priors 访谈也是 Karpathy 解释为什么他认为当前 agent 能力还没达到无 prompt 从零写出这个文件门槛的地方——一个有用的能力刻度。