当前位置:首页>python>microgpt:200行Python代码实现GPT训练与推理

microgpt:200行Python代码实现GPT训练与推理

  • 2026-09-03 18:16:58
microgpt:200行Python代码实现GPT训练与推理

来源:Karpathy Blog  |  整理:小新博士

这是关于我的新艺术项目 microgpt 的简要指南——一个仅 200 行纯 Python 代码、无任何依赖项的文件,同时完成 GPT 的训练和推理。该文件包含了所需的全部算法内容:文档数据集、分词器、自动微分引擎、类 GPT-2 神经网络架构、Adam 优化器、训练循环和推理循环。其他一切不过是效率优化。我已经无法再简化了。

这个脚本是多个项目(micrograd、makemore、nanogpt 等)十年痴迷的结晶,我认为它很美。它甚至完美地分成三栏排列:

microgpt 三栏代码布局示意

资源链接

  • GitHub Gist 源码:microgpt.py
  • 官方页面:https://karpathy.ai/microgpt.html
  • Google Colab notebook:在线运行

数据集(Dataset)

大语言模型的燃料是文本数据流。在生产级应用中,每个文档是一个互联网网页,但对于 microgpt,我们使用一个更简单的例子:32,000 个名字,每行一个。

emma olivia ava isabella sophia charlotte mia amelia harper ... (~32,000 names)

模型的目标是学习数据中的模式,然后生成具有相似统计规律的新文档。训练完成后,模型会生成这样的"幻觉"名字:

sample  1: kamon sample  2: ann sample  3: karai sample  4: jaire sample  5: vialan sample  6: karia sample  7: yeran sample  8: anna sample  9: areli sample 10: kaina ...

看起来不太起眼,但从 ChatGPT 这类模型的角度看,你和它的对话不过是一个看起来有点奇怪的"文档"。当你用提示初始化文档时,模型的回应在它看来只是统计性的文档补全。

分词器(Tokenizer)

神经网络底层处理的是数字而非字符,所以我们需要将文本转换为整数 token id 序列。生产级 tokenizer 如 tiktoken(GPT-4 使用的)按字符块高效运作,但最简单的 tokenizer 只需为数据集中的每个唯一字符分配一个整数:

uchars = sorted(set(''.join(docs)))  # unique characters BOS = len(uchars)  # Beginning of Sequence token vocab_size = len(uchars) + 1  # 27 total tokens

自动微分(Autograd)

训练神经网络需要梯度:对于模型中的每个参数,我们需要知道"如果我把该数值略微增加,损失是上升还是下降,幅度如何?"

micrograd 是 Andrej 的早期项目,实现了纯 Python 的自动微分引擎——只需约 100 行代码。它构建了一个计算图,其中节点是数组操作,存储了每个节点所需的梯度。

GPT 模型架构

GPT(Generative Pre-trained Transformer)的核心是 Transformer 架构。microgpt 中的 Transformer 包括:

  • 嵌入层:将 token id 映射到向量空间
  • 位置编码:注入 token 位置信息
  • 因果注意力(Causal Attention):每个 token 只关注前面的 token
  • 前馈网络(FFN):两层全连接网络

训练与推理

训练循环使用 Adam 优化器最小化交叉熵损失。由于 microgpt 是从头开始训练,且数据集较小(32k 名字),在 CPU 上几分钟内即可完成。

推理循环是自回归的:模型一次预测一个 token,然后将输出作为下一步的输入,直到生成完整的 EOS(文档结束)token。

为何重要?

microgpt 展示了 LLM 的核心原理可以多么精简。通过 200 行代码,你就能理解从文本到 token、从 token 到向量、从向量到注意力、从注意力到生成的完整流程。

所有现代 LLM(ChatGPT、Claude、Llama 等)本质上都是 microgpt 的"更大版本"——更多的参数、更多的数据、更复杂的优化,但数学原理完全相同。

一句话总结:microgpt 是用最少的代码展示 LLM 本质的教学项目。它不是为了生产使用,而是为了让更多人理解 AI 背后的基本原理。

▌ 本文由小新博士整理编译

原文链接:https://karpathy.github.io/2026/02/12/microgpt/

最新文章

随机文章