核心观点

内容精讲

microgpt 是 Karpathy 多年「极简主义」系列的集大成之作——从 micrograd 到 makemore、nanoGPT,最终把大模型的算法内核压缩到单文件 200 行。文件里没有任何第三方依赖,把数据、分词、反向传播、网络结构、优化与推理全部串成一个可运行的闭环。理解它,就理解了大模型的骨架;生产系统里那些动辄百万行的框架,做的只是让骨架跑得更快、更大。

**数据是模型的燃料。** 生产环境中每篇文档对应一个网页,microgpt 则退回到最简单形态:一份包含约 32,000 个英文名的文本文件,每个名字当作一篇文档。脚本启动时若没有本地数据,就从 GitHub 自动拉取;随后随机打乱顺序,模型的目标就是学会这批名字的统计模式,并生成风格相似的新名字。这背后是 LLM 最核心的视角:你与 ChatGPT 的对话,从模型角度看也只是一篇「样子有点怪的文档」——你的提示词是文档开头,模型的回答是统计意义上的续写。

**分词器把文字变成编号。** 神经网络只认数字,所以需要把文本转为 token id。生产级分词器(如 GPT-4 用的 tiktoken)按字符块切分以提升效率,microgpt 用最朴素方案:给数据集里每个独特字符分配一个整数编号。26 个小写字母排好序后各得一个 id,再额外加一个特殊的 BOS(Beginning of Sequence)标记表示「一篇文档从这里开始/结束」。训练时每篇名字两端都包上 BOS,模型便学会 BOS 意味着新名字的开始。最终词表只有 27 个 token——这就是整个语言的「字母表」。

**自动求导是训练的引擎。** 训练神经网络需要梯度:对每个参数,要知道「把它调大一点,loss 是升还是降、变化多少」。计算图从众多输入(参数与输入 token)汇合到单一标量 loss,反向传播从 loss 出发按链式法则逐层回推。生产环境由 PyTorch 自动完成,microgpt 用 30 行代码的 Value 类从零实现:每个节点记录前向值、梯度、子节点和局部导数,重载加减乘、幂、log、exp、relu 等运算,自动构成计算图。

**网络结构即 GPT-2 的骨灰版。** 模型主体是与 GPT-2 同构的 Transformer:token embedding 把字符编号映射为向量,多个自注意力层捕捉上下文关系,positional embedding 注入位置信息,再经 Linear 层输出下一字符的概率分布。与生产模型相比,唯一差别是规模和层数——而「接下来是什么字符」的概率建模逻辑完全一致。

**优化与训练闭环。** 优化器选用 Adam,这是大模型训练事实上的标配;训练循环反复执行前向传播、计算交叉熵 loss、反向传播求梯度、按 Adam 规则更新参数。整个训练在 CPU 上即可快速完成——不需要 GPU,这也正是极简的魅力。推理循环则把学到的分布变成样本:从 BOS 开始,逐字符按概率采样并拼接,遇到 BOS 结束,一个名字就诞生了。文末展示的 20 个采样结果(kamon、karai、lerinne……)读起来已经「很像个名字」。

值得留意的是 microgpt 的审美:Karpathy 称之为「艺术项目」,代码刻意保持 3 栏排版、可打印成三联画售卖。这背后其实是一份教学主张——把黑盒彻底拆开,让每个人都能亲手摸到 Transformer 的每一个零件。

阅读价值

对初学者,这是一条从零理解 GPT 的最短路径:跟着 200 行代码,数据和 tokenizer 到反向传播、注意力再到采样,全部可视可运行。对从业者,它是剥离效率外衣后的算法骨架,能帮你重新校准对 LLM 本质的认识。

microgpt 官网插图
microgpt 官网插图
阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: http://karpathy.github.io/2026/02/12/microgpt/