跳到主要内容

Building Large Language Models from Scratch — 全书拆解

30 秒导读: 这是一本 2026 年的动手教材——带你从零写出一台 2025 年配方的 大语言模型(一种读过海量文字、学会了预测下一个词的机器;业界管它叫 LLM)

它的稀缺点有三个:零件全是当下各家主流模型真在用的那一代(每一件都在书里有名有姓); 每个零件都配了能跑的代码;最后作者把这台只有十万个可调数字的小机器真的开训了一遍—— 训练(反复给它看例子、量它猜得差多远、把内部那些可调的数字各挪一丁点的过程)—— 并把它翻车的输出原样印在书里。

本组文档是我们重写的完整拆解,十三章。读完不必看原书。

1. 先交代清楚:这是谁在什么时候写的

作者Dilyan Grigorov,保加利亚瓦尔纳的独立开发者(书里署名地址即瓦尔纳)
出版Apress,2026 年;ISBN 979-8-8688-2297-1
定位自称受 Andrej Karpathy「从零写 GPT(GPT 就是 ChatGPT 背后的那一系模型)」讲座启发,本地可跑、不依赖云端1
时代坐标成书于 2026 年,书里的「现状」口径到 2025 年中(各家旗舰模型的名单)

读之前必须知道的一件事:这本书一半是综述、一半是代码,两部分成色不同。 综述部分(每章开头的背景介绍)是百科词条式的写法,数字常给得可疑地精确 (比如「某旗舰模型有一万亿个可调数字」是市场传闻口径、「某代模型某层的看词关注度大于 0.8」这类无处核对的数), 我们判断其中有明显的机器代笔痕迹;代码部分与那个真的被开训过的小模型则扎实、前后呼应。

所以我们的拆解对综述降档处理:当导览用,不当论据用——引用原书里的可疑数字时都当场点破。 (依据见各章「作者的判断与证据」节;第 05 章还抓到两处原书笔误:论文《RoFormer》被写成 "Reformer"、 NTK 被展开成 "Neuro Tangent Kernel"。)

2. 全书一条主线(读完这一节,你就懂了这本书)

这本书是一条装配线,不是一篇论文:每一章往机器上装一个零件,每个零件都是被上一个零件的 「不够用」逼出来的。下面把整条线走一遍——只读这一节,你也能把这本书讲给别人听。

① 出发点:一台只会猜下一词的机器

大语言模型的全部本领,来自一个朴素动作:看前文,猜下一个 token(文字被切碎后的最小单位), 猜完接上,再猜2

没有人往它脑子里写语法(词怎么排才对)——第 1 节说的那个训练过程,会替它试出一切规则。

机器内部那些可调的数字,行话叫参数(第 04 章会看到它们全部写在一个配置表里)。 这条动作链的每一段,分别在 01、02、10 章被拆开。

② 文字进机器,先过一道翻译

机器只会算数,所以文字先要切成 token、按词表(切词器随身带的那张「碎片↔编号」对照表) 换成编号。

切法是学出来的:从字符起步,反复合并文章堆里最高频的相邻对——这套词表本质上是对语料(拿来喂机器的文字堆)的一次压缩。 常见词保持完整、生词自动拆成熟悉的碎片,这是 03 章的全部内容。

③ 机器的骨架:一起看,而不是排队

2017 年的 Transformer(那一年定型、今天所有叫得出名字的大模型共用的架构) 把「按顺序读」换成「整段一起看」。

注意力(处理每个词时,按相关程度回头称量其他词, 把别人的信息掺一点进自己)决定看哪里。 一起看的代价是词与词配对的次数随长度平方地涨——所以后面的章一半在「让注意力更聪明」, 一半在「让注意力更便宜」。这个骨架在 01 章给直觉,06、07 章给实现。

④ 位置要自己想办法

「一起看」的机器天生不知道谁在前谁在后,所以要补位置编码(给每个词附上「我在第几位」的信息)。 解法是个几何小把戏:把词的表示按位置旋转,旋转过的两个词互相打分, 分数恰好只取决于它们隔多远——近的词天然分高。 训练时只见过 4 千词的机器要读 12.8 万词,靠把「转得快的那几段」——每一段就是一个维度(那串数字的长度)——整体拨慢来将就。这是 05 章。

⑤ 稳定与省钱:工程的一半是驯服

几十层叠起来,数值会爆炸或归零,所以要归一化(每一层把信号拉回稳定幅度; 新做法砍掉一步统计,快 7-10%、效果不降)。

一起看的代价太贵,省法有三。第一:查询头多开、被查的一方几组共用一套——这套省法行话叫 GQA,中文叫分组查询(存档直接砍半)。

第二:每个词只看最近一段(来多少算多少、不再平方着涨);第三:给用不掉的概率(每种可能各占多大机会)一个虚拟去处。 这些「不起眼的小工程」决定了几十层的机器训不训得动——04、06、07 章。

⑥ 加工车间:门与专家

注意力管「词与词之间」,每个词自己的深度加工交给前馈(每个词各自过的一层加工)。

现代配方在这里装了两件升级:一扇平滑的「门」(SwiGLU:多花一半参数,换更好的效果), 和专家混合(机器里养一群专家,词进来只点名两三个干活)—— 从此机器的存储体积和单次计算的体积是两个数,DeepSeek R1「6710 亿总参、370 亿激活」说的就是这件事。 这是 08 章。

⑦ 装配、开火、看结果

零件齐了:一层=注意力块+前馈块,N 层码成整机;训练成果存档(配置与可调数字两份文件分开)。 本书真的开火:料是一篇 4,200 词的短篇小说,训 20 遍,困惑度(模型眼里平均几个候选里挑一个,越低越好) 从千亿级掉到 1.13——它基本把这本小说背下来了。10 章是这段的全程。

小机器只会背书;没人明教的本事(行话叫涌现),要等机器大了才冒出来。

⑧ 大时刻:一个诚实的翻车

然后作者把机器跑给你看:问它「rick 是谁」,它背了一遍小说,被防抄机制打断后绕回来再背, 最后被过猛的惩罚逼进没学过的角落、崩成乱码。这次翻车是全书最诚实也最有教学价值的一幕: 复读证明它真的学了;护栏只能改道、变不出没学过的本事;而「会回答问题」根本不是这一阶段该有的能力—— 看着几个例子就现学新任务的本事(行话叫上下文学习)更是如此——那要等下一站的工序。11 章逐段解剖了这次翻车。

⑨ 从「会续写」到「像助手」

预训练(训练的第一阶段:只练「预测下一词」这一件事)的产物只会续写。行规是再走三段。

中训补专项(防把旧的学丢);微调(在小得多的数据上继续训、教它新举止)教指令 ——给它看几万条好示范,只对回答算账。

最后一步,把机器的举止拗到人的规矩上来——行话叫对齐

主力做法叫 RLHF:先教一个「裁判」学会人更喜欢哪个回答,再让机器朝高分生成, 同时拴一根「别跑太远」的绳子防止钻空子。

也有把裁判砍掉的简化做法(行话叫 DPO)。钱花在第一段,「像个助手」全靠后面。12 章。

⑩ 底座:显卡上的一万六千只手

以上一切在 GPU(图形显卡)上跑。

一行 PyTorch 背后是一万六千个并行(几万个格子同时算)的线程。

账单记在显存(显卡自带的存储)上。真正的瓶颈往往不是算,是搬数据——高效的做法都是「少搬一次数」。13 章把这层也打开。

一句话收尾

原书用行动给出的主张是:现代大模型没有魔法,只有一套可以被逐件拆开、逐件亲手写出、 逐件在消费级硬件上验证的工程;而拆到最后你会发现,「智能感」的边界,恰好停在 「它只忠实于自己见过的那套可能性铺法」(这种铺法行话叫分布)这条线上——书里那次翻车,就是这条线的实物展品。

3. 十三章地图

这张表不用记术语——每章写的是「读完你能回答什么问题」。

读完你就能回答
01 这本书要造什么它的工作到底是什么动作?为什么 2017 年是分水岭?这本书跟别的「从零写 GPT」差在哪?
02 训练在调什么「猜得准」怎么变成一个数?每个可调数字怎么知道该往哪挪?怎么防止它背题?
03 切词器文字怎么变成编号?词表是学出来的还是拍脑袋的?为什么请求 160 个词只得到 111 个?
04 蓝图与 RMSNorm模型的每个尺寸各管什么?一个四行代码的零件凭什么值一整章?
05 位置怎么编码机器怎么知道谁在前谁在后?4k 训练的模型怎么读 128k 的长文?
06 注意力核心打分→掩码→加权的每一步在算什么?三个省法各自省的是什么?
07 总装注意力块四个零件按什么顺序装?为什么偶数层看近处、奇数层看全局?
08 前馈块:门与专家「总参数 6710 亿、激活 370 亿」是什么意思?点名专家的「调度员」怎么会偏心?
09 拼装整机一个 token 进模型到出来的完整旅程?训练成果怎么存取?代价清单是多少?
10 备料与训练数据要过哪五道工序?训练循环每个部件防什么翻车?真实的训练记录长什么样?
11 大时刻:让它开口从打分到一个词要过几道闸门——这一步行话叫采样?那次著名的翻车是怎么一幕一幕发生的?
12 四阶段与对齐「会续写」到「像助手」差哪三段?裁判、绳子、DPO 各是什么?
13 GPU 之上一行 PyTorch 在显卡上变成了什么?为什么瓶颈常是搬数据?

推荐顺序: 01 → 13 顺读,这也是装配顺序。 只想拿结论:读本页第 2 节加第 11 章(翻车解剖)就够。 想动手写代码:03 → 04 → 06 → 07 → 08 → 09 是零件的依赖链。

4. 这本书覆盖什么、不覆盖什么

覆盖(而且市面上同题材里做得最全)——读完你能回答:

  • 一台 2025 配方的现代模型的全部零件:RMSNorm、旋转位置编码(含把 4k 训练撑到 128k 的 NTK/YaRN 缩放)、 GQA、滑窗交替、注意力沉底(sink)、SwiGLU、专家混合、查表与打分共用同一份参数—— 这一整套是书架上其他书没有拼齐的(同族两本书:Raschka 是 2024 年的复古配方, 那本中文教材是 2017 原教旨组件,见 §5 第一条判断);
  • 每个零件能跑的 PyTorch 代码与逐行讲解,且所有零件最终真的拼成了一台被开训过的模型;
  • 切词器的完整生命周期(训练、编码、解码、存载),包括「请求 160 词表只得 111」与 unk 吞字这些真实事故;
  • 数据工程的工序观,与训练循环里的各件防翻车小件(第 10 章有清单);
  • 预训练之后的四阶段(中训/SFT/RLHF 及 DPO、宪法 AI 两条简化路线)与评测的局限;
  • 一次原样印刷的失败演示,及逐段归因——这是我们判断这本书最值钱的部分。

不覆盖(别指望在这本里找):

  • 数学推导的完整版 —— 原书公式在 epub 里是图片、转码后丢失(原书自己的问题);我们的拆解按正文散文重建了关键算式,但原书确实没有给完整推导。

  • 训练出通用能力 —— 教学模型只会背那篇小说;小模型没有、大了才突然冒出来的本事(行话叫涌现),全书只是口头提及,没有任何实验。

  • 看着几个例子现学新任务(行话叫上下文学习)—— 同样只有口头提及。

  • 性能剖析 —— 讲了 CUDA 的机制,没教「怎么找出你的模型慢在哪一步」。

  • 拿来用与上线 —— 把过去的中间结果存起来免得重算的那块仓库(行话叫缓存)怎么管理,只在术语层面擦过。

  • 上线侧 —— 量化(用更少的比特存数字)与服务化,同样只擦过表面。

  • RLHF 的施工图 —— 给了流程地图与坑位清单,没有可照抄的数据规范与标注(人工打标签)流程。

  • 综述部分的可靠性 —— 可疑精确数字多处(我们在各章当场点破);引用本书综述时先看我们的标注。

5. 我们的判断

判断(我们的,不是书里的): 这本书在书架上的位置是「现代配方的装配手册」。 同族两本书各占一角:Raschka《Build a Large Language Model (From Scratch)》(2024) 是 GPT-2 复古配方的深讲,那本中文《从零构建大模型》是全而不深的工程教材—— 都没有把 RMSNorm/旋转位置/GQA/专家混合这套当下各家模型真在用的组合拼全, 也都没有把对齐流水线(中训、SFT、RLHF/DPO)放进同一条装配线。 如果错,会错在: 如果那两本已有拆解其实覆盖了现代配方的关键件, 「拼全」的定位就夸大了——可按我们已拆完的《从零构建大模型》核对,它明确不覆盖对齐与专家混合。

判断(我们的,不是书里的): 全书最高光的一处不是任何零件,是第 11 章那次被原样印刷的翻车。 大多数教材只给你成功路径;这本书把「小模型忠实复读训练数据、被护栏改道、崩坏」三幕全拍在你脸上, 顺带把一本正经胡说的机制(行话叫幻觉)、护栏的边界、多阶段训练为什么是必需,一次讲透。 拿它当「模型规模与能力」课题的实证锚,比拿综述部分可靠得多。 如果错,会错在: 如果那次输出其实是代码 bug 而非「小模型的典型行为」, 三幕归因就都建立在错误样本上——但作者对每幕给的机制解释与模型行为理论一致,且他明知是失败还印出来,动机可信。

判断(我们的,不是书里的): 读这本书要装一个过滤器——代码可信,综述存疑。 综述节里「GPT-4/PaLM 万亿参数」「某代模型某层看词关注度大于 0.8」「训到稳定的速度快两三成」这类数字, 或者是传闻、或者是无出处的转述;我们拆解里凡引用都标了口径。 这不影响零件章:零件章的知识全部可以对照代码与运行结果复核。 如果错,会错在: 如果综述部分其实经过严格事实核查、只是行文风格如此, 我们的降档就冤枉了它——但「引用时核对一手来源」无论如何是更安全的读法。

6. 许诺兑现表

这份拆解里每一处「第 N 章讲」「后面会兑现」,都在这里记一行、逐行核过。

许诺在哪许诺了什么应兑现在哪核过了吗
本页 §2 ①动作链的每一段在 01、02、10 章拆开01 §1、02 §1-§4、10 §3-§5
本页 §2 ②词表是压缩、生词拆碎片03 §3、§4、§6
本页 §2 ③骨架在 01 章给直觉、06/07 章给实现01 §3、06 全章、07 全章
本页 §2 ④旋转位置与把短训撑成长的输入05 §2、§4
本页 §2 ⑤归一化与三个省法04 §3-§4、06 §4-§6
本页 §2 ⑥「存储与计算是两个数」的机制08 §3
本页 §2 ⑦装配、开火、困惑度跌到 1.1309 全章、10 §5
本页 §2 ⑧翻车三幕解剖11 §4
本页 §2 ⑨中训/微调/对齐三段12 §2-§5
本页 §2 ⑩显卡层打开13 全章
本页 §3 地图 012017 分水岭、与其他从零书之差01 §2、§4;本页 §5 第一条判断
本页 §3 地图 03160 词表只得 11103 §6
本页 §3 地图 054k 撑 128k05 §4
本页 §3 地图 08「6710 亿/370 亿」含义与点名专家的调度偏心08 §3
本页 §3 地图 10五道工序、每件套防什么、真实记录10 §1、§4、§5
本页 §3 地图 11闸门与三幕翻车11 §2、§4
本页 §3 地图 12裁判、绳子、DPO12 §4、§5
本页 §3 地图 13一行代码在显卡上变成什么、瓶颈在搬数据13 §2、§3
01 §3 走查图分数怎么算、为什么除以一个数06 §2
01 §4 零件清单每行对应一章03-13 各章本体
01 §5「这些数字到第 13 章还要用」13 §1、§5(H100 核数与并行规模)
01 §6 判断「第 11 章的翻车演示是它的实证」11 §4
01 §7「训练总账单百万美元级,第 12 章有账」12 §1(四阶段体量)· 另见 09 §5 的 460 万美元账
02 章首「第 10 章把它变成能跑的代码」10 §3、§4
02 §6RLHF 数学雏形的完整流程12 §4
02 §6「模型与数据要一起配平」的两处账本12 §1(各段体量)· 09 §5(Chinchilla 复述)
02 §7 判断「第 08 章的专家混合是机制本体」08 §3
03 §7 判断切词器给出的编号串被拿去建防抄对照表11 §3
03 §8「切词影响领域能力,第 10 章复述」10 §1(工序表「切分打包」行)
04 §2键值存档的显存账「第 06 章细讲」06 §5
04 §4「预归一化站在块的第一行,第 07 章见」07 §2 走查②
05 §4「困惑度第 10 章细讲」10 §5
06 章首「第 07 章把它总装成块」07 全章
06 §1「第 09 章还会算显存账」09 §5
06 §8FlashAttention「展开在第 13 章」13 §3
09 章首「喂它(10)、让它开口(11)、教成助手(12)」10-12 全章
09 §2 走查生成时取最后位置的动作,第 11 章接手11 §2
10 §1考题泄漏进语料(原书管它叫数据污染)「第 12 章还会回来」12 §6
10 §2「偏科局限第 11 章当面爆发」11 §4 第一幕
10 §5「曲线形状与 trillion 级训练同一条」12 §1(体量与阶段划分)
11 §4「会回答是第 12 章之后的事」12 §3
13 §3「FlashAttention 第 07 章提过一句」(回指)07 §7 已有该注

拆解写于 2026-08-27,依据 2026 年 Apress 英文原版。原始书籍文件不入库, 本组文档是我们自己的重写;每条引用都可用 node scripts/book-verify.mjs building-large-language-models-from-scratch 回核。

Footnotes

  1. 出处:「1. What Is a Large Language Model? Getting Started with Libraries and Environment Setup for Building an LLM from Scratch」第 21 段(text/08-ch01-1-what-is-a-large-language-model-getting-started.txt:21,搜「Karpathy」)与第 23 段(text/08-ch01-1-what-is-a-large-language-model-getting-started.txt:23,搜「locally」)。原文:受 Karpathy 讲座启发、自底向上;所有开发在本地进行,不依赖专有云平台或昂贵 GPU 集群。作者署名地址见同文件第 9 段(「Floor 7, Varna, Bulgaria」)。

  2. 出处:「What Is a Large Language Model (LLM)?」第 7 段(text/09-fm-what-is-a-large-language-model-llm.txt:7,搜「probabilistic system」)。原文:语言模型本质是概率系统,在前文条件下预测序列的下一个元素;自回归训练任务见同文件第 31 段(text/09-fm-what-is-a-large-language-model-llm.txt:31,搜「causal language modeling」)。