Andrej Karpathy 又整活了。
这次他发了一个叫 MicroGPT 的项目——200 行纯 Python,零依赖,包含了训练和推理一个 GPT 所需要的全部内容。
没有 PyTorch。没有 TensorFlow。没有 numpy。就是赤裸裸的 Python。
数据集、分词器、自动微分引擎、GPT-2 架构的神经网络、Adam 优化器、训练循环、推理循环——全在一个文件里。Karpathy 自己说:"我没法再简化了。"
然后他说了一句让人破防的话:"I think it is beautiful 🥹"
这 200 行到底装了什么
先看它能干嘛:用 32000 个英文名字训练完之后,模型可以"凭空编造"出听起来很合理的新名字:
kamon, ann, karai, jaire, vialan,
karia, yeran, anna, areli, kaina...看起来没啥了不起?但 Karpathy 提醒你:从模型的视角看,你和 ChatGPT 的对话也不过是一个"长相奇特的文档"。你的提问是文档的开头,模型的回答只是统计意义上的文档补全。
本质上,ChatGPT 和这个 200 行的小玩意做的是同一件事。区别只在于规模。
精髓在自动微分
整个项目最核心的部分是一个叫 Value 的类。它实现了完整的自动微分引擎——也就是反向传播的基础。
class Value:
def __init__(self, data, children=(), local_grads=()):
self.data = data
self.grad = 0
self._children = children
self._local_grads = local_grads每个 Value 包一个标量数字,记录它是怎么被计算出来的。加法、乘法、指数、对数——每个运算都留下痕迹。然后 .backward() 从损失函数一路反向走,用链式法则算出每个参数的梯度。
PyTorch 干的也是这个事,只不过用 C++ 和 CUDA 做了几千倍的加速。
为什么这很重要
这不是一个实用工具。它训练速度极慢(纯 Python 标量运算),生成的也只是名字。
但这正是 Karpathy 想要的——他称之为"art project"(艺术项目)。
这个项目的意义在于:它证明了 LLM 的核心算法并不复杂。剥掉所有的工程优化(GPU 并行、混合精度、分布式训练、FlashAttention),剩下的就是这 200 行代码。
或者换个说法:GPT 的全部秘密,一个下午就能读完。
这对学习者来说是巨大的礼物。之前想从头理解 transformer,要么看论文("Attention is All You Need"本身就够绕的),要么啃 PyTorch 源码(几万行),要么看博客(各有各的侧重和遗漏)。
现在,200 行。从数据到推理,一条线走到底。
Karpathy 的十年简化之路
这不是突然冒出来的。MicroGPT 是 Karpathy 一系列"从头造轮子"项目的终点:
- micrograd:从零实现反向传播
- makemore:字符级语言模型
- nanoGPT:最小可用的 GPT 训练代码
- MicroGPT:把以上全部压进一个文件
这是一个人花了十年,把一个领域从"看起来很难"简化到"其实就这么回事"的过程。
值得跑一下
Karpathy 提供了 Google Colab 版本,打开就能跑。
如果你正在学 AI,或者好奇 ChatGPT 到底是怎么工作的,这 200 行代码比任何课程都值钱。
不是因为它能做多少事,而是因为它把不能再少的东西摆在你面前:这就是全部了。