llm-internals:把 Transformer 的数学摊开来讲的教程仓库
Learn LLM internals step by step - from tokenization to attention to inference optimization.
秒懂
- 它是什么?
- 这是一个由 Outcome School 维护的 LLM 内部原理学习索引,主体是博客和视频链接,覆盖 BPE 分词、Q/K/V 注意力、√dₖ 缩放、因果掩码、反向传播与交叉熵。它适合想补数学直觉的工程师,不适合想找可运行代码库的人。
- 适合谁用?
- 如果你已经会写 PyTorch 训练循环,但说不清 softmax 之前那个除以 √dₖ 到底在防什么,这个仓库的阅读顺序值得照着走一遍:先看 BPE,再看 Q/K/V 的数值例子,然后是缩放因子和因果掩码。如果你要找的是可以直接 import 的实现,或者要评估推理吞吐、显存占用这类工程指标,这里没有你要的东西,README 里出现的主题词都是指向博客和视频的链接,不是模块名。
- 能商用吗?
- 可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 15 天前。
- 用什么语言写的?
- GitHub 没有给出这个仓库的主要语言。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
这个仓库解决的是理解断层,不是工程问题
大多数工程师接触 LLM 的路径是反的:先调 API,再读框架源码,最后才回头补数学。补数学这一步最容易卡住,因为教材从矩阵求导讲起,而工程师想知道的是「我调 temperature 的时候模型内部发生了什么」。llm-internals 针对的就是这个断层。它把从 tokenization 到 attention 再到 inference optimization 的链条拆成独立主题,每个主题配一篇博客或一段视频。README 的定位句写得很直接:Learn LLM internals step by step。目标读者是有编程基础、但没有系统学过深度学习课程的人,作者是 Outcome School 的创始人 Amit Shekhar。它不是论文复现仓库,也不是教学框架,没有 requirements.txt 之类的东西可以装。
仓库本体是一份目录,正文在别处
这一点必须先说清楚,否则容易误判。仓库里 README 的每一节结构相同:一个小标题,一段说明这段内容会覆盖什么,然后一个指向外部链接的句子。博客指向 outcomeschool.com/blog/ 下的路径,视频指向 YouTube。也就是说,clone 下来得到的是索引和说明文字,不是代码。README 里那些看起来像模块名的词,比如 Tokenization、Byte Pair Encoding、Causal Masking,都是章节标题,不是文件或类。这个组织方式的好处是内容更新不影响仓库结构,代价是仓库本身没法验证内容质量,链接失效或博客改版都只能靠外部解决。README 末尾还留了一句说明:这个系列会随着新博客和新视频持续增长。
从 BPE 到因果掩码:内容覆盖的实际顺序
按 README 的排列,内容大致分四层。第一层是概念铺垫,用一段视频讲清 LLM、RAG、MCP、Agent、fine-tuning、quantization 这几个词各自指什么,先建立词汇表。第二层是分词,先讲 tokenization 为什么必要,再用一篇博客拆 BPE:什么是 BPE、为什么需要它、逐步示例、BPE 如何切分新文本。第三层是注意力,这是仓库最密集的部分,包含三篇:Q/K/V 的数学推导,带逐步数值示例;√dₖ 缩放因子的来历,从点积方差推导到 softmax 饱和;因果掩码,先演示不加掩码会看到未来 token,再讲掩码矩阵的实现。第四层是训练侧,包括反向传播的链式法则与数值例子,以及交叉熵损失,后者明确提到 GPT、BERT 这类模型都用它。README 还列了 Transformer 架构逐层拆解和 Feed-Forward Network 两篇,其中 FFN 那篇的覆盖清单在给出的材料里被截断了。
数值例子是这套材料的主要教学手段
从 README 列出的覆盖清单看,作者反复选择同一种讲法:先给公式,再用一组具体数字从头算到尾。Q/K/V 那篇的清单里依次是「从词到向量」「构造 Q、K、V 矩阵」「计算注意力分数 Q x K^T」「缩放」「softmax」「注意力权重乘 V」「合起来」。缩放因子那篇更明显,直接从「不做缩放会怎样」问起,然后论证点积方差等于 dₖ,再看大点积对 softmax 的影响,最后用真实数字验证。交叉熵那篇同样有 step-by-step numeric example。这种写法的价值在于,它把「为什么」和「是多少」绑在一起,读者可以拿纸笔跟一遍。局限也在这里:数值例子只能用小维度,跟真实模型的隐藏维度差着几个数量级,看完不会自动获得对大规模训练的直觉。
它不提供的三样东西
第一,没有可执行代码。README 里唯一提到 Python 的地方是反向传播那篇的覆盖项「Backpropagation in Python」,那是博客里的代码片段,不是仓库里的脚本或 notebook。第二,没有推理优化和量化的实操内容。虽然仓库描述提到 inference optimization,README 的顶层视频也把 quantization 列进了词汇讲解,但给出的材料里没有任何一节涉及 KV cache、批处理、量化位宽这些具体机制。第三,没有版本或依赖信息。仓库没有 release,也没有说明这些博客对应哪个模型版本或哪个框架版本,读者无法判断里面的结论在当下是否仍然适用。如果你的需求是评估一个推理方案的显存占用,这个仓库帮不上忙。
和从零实现类项目的区别
常见的对照物是那种「用 numpy 从零写一个 GPT」的项目,比如 nanoGPT 一类的教学实现。两者的差别不在难度,而在产出物。从零实现类项目的产物是可运行的代码,你改一行、跑一次、看 loss 变化,学习发生在调试循环里;代价是你得先配好环境,而且一旦代码跑通,很多人就不再追问某一行的数学依据。llm-internals 的产物是解释文本,读者得到的是推导过程,代价是没有可调试的反馈,理解是否到位只能靠自己复算。选哪个取决于你的卡点:卡在「跑不起来」就用前者,卡在「跑起来了但不知道为什么这么写」就用后者。两者不冲突,但别指望一个替代另一个。
维护成本与许可的实际边界
仓库最近一次推送是 2026 年 9 月 1 日,未归档,没有发布过 release。这个状态意味着没有版本化的内容快照,也没有 changelog 可以对照,你只能按 main 分支的当前状态来读。因为正文托管在外部站点,仓库的更新频率实际反映的是作者往 README 里加链接的频率,而不是内容修订的频率。许可证是 Apache-2.0,它约束的是仓库内实际存在的文件,比如 README 和 assets 目录下的图片;博客正文和视频的版权归属不在这个许可证范围内,转载或二次使用前需要单独确认。以上只是对仓库元信息的陈述,不构成法律意见。
编辑结论
如果你已经会写 PyTorch 训练循环,但说不清 softmax 之前那个除以 √dₖ 到底在防什么,这个仓库的阅读顺序值得照着走一遍:先看 BPE,再看 Q/K/V 的数值例子,然后是缩放因子和因果掩码。如果你要找的是可以直接 import 的实现,或者要评估推理吞吐、显存占用这类工程指标,这里没有你要的东西,README 里出现的主题词都是指向博客和视频的链接,不是模块名。动手之前先确认两件事:一是你打算跟的那篇博客是否已经发布,因为 README 明确写了这个系列会继续增长;二是仓库的 Apache-2.0 覆盖范围,它约束的是仓库内实际存在的文件,而正文内容托管在 outcomeschool.com 和 YouTube 上。
社区笔记