卡帕西中文站 / 文章导读 / MicroGPT

MicroGPT:两百行纯 Python,装下整个 GPT

原文发表:2026-02 · 导读更新:2026-08
这是导读,不是翻译。目标是让你 5 分钟拿到文章的思想地图;值得的话,带着地图去读 英文原文 →

一句话

用大约 200 行、零依赖的纯 Python(连 NumPy 都不用),完整实现一个 GPT 的训练和推理——数据加载、分词器、自动求导引擎、多头注意力、Adam 优化器、温度采样,一样不缺。这是卡帕西时隔多年重返老博客的第一篇文章,也是他十年「蒸馏 LLM 到算法本质」执念的收官之作。

文章讲了什么

文章按实现层次一路推进:先加载 3.2 万个英文人名做训练数据,用字符级分词器把字母映射成整数(词表 27,含起始符);然后手写一个 Value 类实现自动求导——记录前向计算、用链式法则回传梯度,这正是 micrograd 的思想。模型本体是一个单层 GPT:16 维嵌入、4 个注意力头、共约 4192 个参数,带 KV cache、MLP 块、残差连接,归一化用的是 RMSNorm 而非 LayerNorm——麻雀虽小,与今天生产级 LLM 的结构选择一一对应。

训练用 Adam 跑 1000 步,loss 从随机水平的约 3.3 降到约 2.37,在 MacBook 上大约一分钟跑完;推理阶段用温度采样生成新名字,比如 kamon、karai——模型没有被教任何规则,却自己学会了辅音簇、qu 组合这类统计规律。他强调 ChatGPT 的核心机制与此完全相同,只是规模大了无数个数量级、再加上后训练:

"Everything else is just efficiency" ——Andrej Karpathy,2026 · 原文 →

核心算法之外的一切,都只是工程效率问题。文末还附了学习路线(build_microgpt.py 用 diff 逐步展示每一层如何加上去)和 FAQ,顺带解释了为什么模型会「幻觉」——它压根没有「真」的概念,只有下一个 token 的概率。

写作背景

从 micrograd、makemore 到 nanoGPT、nanochat,卡帕西十年来一直在做同一件事:把 LLM 的实现一层层剥掉,看最后剩下什么。这篇是他给出的最终答案——「我无法再简化了」。发表形式也很特别:同一份代码同时以 GitHub gist、网页、Colab notebook 和 karpathy.art 上的艺术三联画呈现,把代码当作品发布。对老读者来说,这篇回归之作与 2015 年的 char-rnn 博文形成了一个完美的十年闭环:当年是「你看它居然能学会」,如今是「你看它本质上就这么点东西」。

影响与回响

这篇文章发表即成为教学圈的事件:当 LLM 已经是万亿参数、多数人只能通过 API 触碰的黑箱时,一份一分钟能在笔记本上跑完、每一行都能读懂的完整实现,本身就是一种祛魅。它也回答了一个时代焦虑——「不搞懂底层还能学 AI 吗」:底层没有你想的那么厚,200 行就是全部骨架,其余是工程。配合他此前的 Zero to Hero 课程,这篇几乎把「从零理解 GPT」的门槛压到了历史最低。

对你意味着什么

  1. 把它当试金石:读完 200 行还有哪一行说不清楚,那一行就是你该补的洞。比读十篇综述更能定位自己的知识缺口。
  2. 学习路径:如果直接读吃力,先看 micrograd 课程汉化把自动求导搞懂,再回来读,会顺畅得多。
  3. 做产品或做 Agent 的人:理解「模型没有真的概念,只有概率」这一点,比任何 prompt 技巧都更能帮你设计对幻觉鲁棒的系统——这与他说的锯齿状智能是同一枚硬币。

延伸阅读