跳到主要内容

这本书要造什么 — LLM 是什么、两阶段训练、全书施工图

这一章讲三件事: 大语言模型到底是什么;它是怎么被训练出来的(为什么是「两段式」); 以及这本书打算怎么把一个模型从零写出来——一份三阶段的施工图。 这是全书的地基:后面九章里写的每一行代码,都是在执行这一章画的图。 不需要任何基础,遇到的生词都在当场解释。

1. 这一章讲什么

这本书的目标一句话可以说完:用 PyTorch 从零写出一个和 ChatGPT 同族的模型,并真的把它训练出来。

「同族」这个词是刻意的:你手里的模型会很小(最小的一款只有 1.24 亿个可调数字,而 GPT-3 有 1750 亿个), 但它和真正的大家伙用的是同一套概念、同一个架构1

这一章不动手写代码,只解决三个理解问题:这台机器在干什么、它怎么学会干活、我们分几步把它造出来。

2. 顶层全景

这本书要造的东西(第 2~7 章逐一实现):

文字 ──→ 切成小块(标记)──→ 查表变成数串 ──→ 一台「猜下一个词」的机器 ──→ 吐出一个词

└─ 把这个词接回末尾,再问一遍(循环)

这台机器怎么学会猜:

第一段(预训练):读海量普通文字,不用任何人标注,自己出题自己改
↓ 得到一个「基座模型」:会续写,但不会听指令
第二段(微调):用有标注的小数据再训一小会儿
↓ 变成专用工具:垃圾分类器,或者会听指令的助手

图说:全书 = 先把机器造出来(第 2~4 章),再做第一段训练(第 5 章),
再做第二段训练(第 6、7 章)。

3. 核心原理

3.1 大语言模型:一台「猜下一个词」的机器

先给主角下个定义。大语言模型(LLM,large language model)是一种神经网络—— 「神经网络」是一种由大量简单计算单元按层排开、靠调整内部数字来拟合规律的计算结构—— 它被训练来理解、生成和回应人类的文字2

它学的任务简单得近乎无聊:给一段文字,猜下一个词是什么。

书里特意点了一句:这个任务「非常简单,以至于很多研究者惊讶于它居然能训出这么能干的模型」3。 这句话值得停一下:整本书回答的核心问题,就是「为什么这么简单的任务能养出会写邮件、会翻译、会答问题的机器」。 答案要到第 5 章(训练)和第 7 章(教它听指令)才完整。

「大」字有两层意思,都烧钱:

  • 参数多。「参数」是模型内部那些训练时会微调的数,每个数就是一个小旋钮。 这类模型通常有几百亿到上千亿个参数4。参照物:书的前言里给了一个对照—— 用传统统计方法给鸢尾花分类,两个参数就能做到 90% 以上的准确率;而 LLM 是几十亿个5
  • **数据多。**训练集有时覆盖互联网上公开文字的一大部分6

它干活的方式还有一个名字,后面会反复出现:因为每生成一个新词都要把「自己已经写出来的词」当作下一步的输入, 这种模型叫自回归模型(autoregressive model)——「自己生成的输出,回过头来当输入」7

3.2 它是怎么学会的:两段式训练

先看一个反直觉的事实:训练这台机器,不需要任何人给它标答案。

传统的做法(书上叫监督学习,supervised learning)是:人先标好几千几万条「这是垃圾短信 / 这不是」, 机器再照着学。预训练不这样,它用的是普通文字本身。

书里管这个叫自监督学习(self-supervised learning): 「标签」不用人给,直接从数据本身的结构里取:把一句话的下一个词遮住,让模型猜,答案就在原文里。 这样出题可以无限量供应,所以才能用上海量无标注文本8

于是整个训练分成两段:

第一段:预训练(pretraining)
在海量无标注文字上反复玩「猜下一个词」
→ 得到基座模型(foundation model,也叫 base model,基础模型):
会续写、有一点「看几个例子就会做新任务」的能力,但还不会听人话

第二段:微调(fine-tuning)
在小得多的有标注数据上继续训
→ 两种主流做法:
· 分类微调:给文本打标签(比如垃圾短信识别)
· 指令微调:给它「指令+标准答案」对,教它按指令办事

这个两段式不是这本书的发明,是 GPT-3 以来整个行业的标准流程9。 书里还给了「为什么要自己造一个」的三条现实理由,都是工程判断而不是学术好奇: 领域定制能赢过通用模型(书里举了彭博社为金融专门训的 BloombergGPT); 数据隐私(敏感数据不必发给第三方);小模型可以直接跑在笔记本和手机上10

3.3 家谱:Transformer、BERT 与 GPT

这本书造的模型,架构名字叫 Transformer——一种 2017 年才出现的神经网络架构, 出自论文《Attention Is All You Need》,最初是为机器翻译设计的(英语译德语、法语)11。 它的关键零件叫注意力机制:让模型在处理一个词的时候,能有选择地「回头看」输入里其他相关的词, 而不是对前文一视同仁12。这个零件太重要,原书用整整一章(第 3 章)手写它,我们也拆成两章(第 03、04 章)讲透。

原始的 Transformer 有两个半件:

  • 编码器(encoder):负责读。把输入文字整个读进去,转成一串数值表示;
  • 解码器(decoder):负责写。拿着编码器的输出,一个词一个词地把译文写出来13

后来的模型把这个架构拆成两支,各自只取一半:

模型取了哪一半训练它干什么擅长
BERT编码器猜被遮住的词(句子里挖空,让它填)文本分类,比如判断一条帖子有没有毒(X 平台就在这么用)
GPT解码器猜下一个词生成:续写、翻译、写代码

这是书里的一张对照表,也是我们全书的立场:这本书只走 GPT 这一路——只留解码器、只管生成14

书里还专门澄清了一个常见的用词混乱:今天「Transformer」和「LLM」经常被当成同义词用, 但严格说,不是所有 Transformer 都是 LLM(它可以拿去处理图像), 也不是所有 LLM 都是 Transformer(有用循环结构或卷积(每个位置只跟邻近一小片做乘加的那种计算,图像处理出身)结构造的,动机是算得更省)。 本书说的 LLM 一律指 GPT 这类基于 Transformer 的15

GPT 还有两个值得记住的副产品:

  • 不给任何例子直接让它干活,这叫零样本(zero-shot); 在输入里塞几个示范再让它做,这叫少样本(few-shot)——它都接得住,不需要为此改结构、改训练16

  • 没人专门训练它做、读得够多它自己却会了——这种现象叫涌现(英文 emergent behavior,也常译「涌现能力」)。 书里原话是:这个能力「最初出乎研究者的意料」17。比如没人教它翻译,但读够了多语言文本之后它自己会翻。

3.4 规模感:GPT-3 读了什么、花了多少

主走查来了。这一节用书里给的 GPT-3 的真实数字,把「大」落成具体的量。

GPT-3 是 ChatGPT 初版所用的基座模型(只做完第一段预训练、还没微调的「毛坯」模型,行话也叫 foundation/base model)。它的预训练数据长这样18:

数据集内容词元数训练时占比
CommonCrawl(过滤后)网页爬取4100 亿60%
WebText2网页爬取190 亿22%
Books2网络书籍550 亿8%
Books1网络书籍120 亿8%
维基百科高质量文本30 亿3%

「词元」就是模型读字的最小单位(第 02 章细讲,大致是一个词或一个词片段)。 表里合计约 4990 亿个词元,但 GPT-3 实际只训练了其中 3000 亿个—— 为什么没用全部,论文作者没有说明,书里照实记了这笔悬案19

给个参照物:仅 CommonCrawl 这一份(4100 亿词元)就要占约 570 GB 存储20; 作为对照,这本书后面带你训练的模型,读的是一篇 2 万字符的短篇小说——六个数量级的差距, 但用的是同一套流程。

钱的账更直接:GPT-3 的预训练成本估计为 460 万美元(按云计算额度计)21。 再给一个更近的参照:书里另一处算了 Llama 2(70 亿参数)的账——18 万多个 A100 GPU 小时, 按当时云价约合 69 万美元22预训练是富人的游戏,这就是为什么「加载别人训好的权重」 在第 5、6、7 章反复出现。

3.5 全书施工图:三个阶段

最后一节是全书的地图,原书第 1.7 节给的,后面每一章开头都会把它再印一遍、高亮当前位置23:

阶段 1:造机器(原书第 2~4 章;本书第 02~05 章)
① 数据准备与采样 ② 注意力机制 ③ LLM 架构

阶段 2:预训练(原书第 5 章;本书第 06~07 章)
④ 预训练 ⑤ 训练循环 ⑥ 模型评估 ⑦ 保存与加载权重
→ 得到一个基座模型

阶段 3:微调(原书第 6~7 章;本书第 08~09 章)
⑧ 微调成文本分类器 ⑨ 微调成会听指令的个人助手

图说:九个编号是原书图 1.9 里的九道工序。阶段 1 造的是不会干活的空壳,
阶段 2 让它学会语言,阶段 3 让它学会办事。

有一个设计决定值得现在就知道:阶段 2 在书里是教学演示,不是真砸钱。 预训练只在一篇短篇小说上进行——数据集小到荒谬,但这让全部代码都能在普通笔记本上几分钟跑完; 然后第 5 章末尾会加载 OpenAI 公开的 GPT-2 权重,让你直接拥有一个「真预训练过」的模型24

4. 作者的判断与证据

有证据的:

  • GPT-3 数据集的构成与「4990 亿里只训了 3000 亿」的悬案,来自 GPT-3 论文本身的表格,书里如实转引1819
  • 「领域定制模型能胜过通用模型」有 BloombergGPT(金融)和医学问答模型两个实例背书,出处指向附录 B 的文献列表10
  • Transformer 出自 2017 年论文《Attention Is All You Need》,书给了 arXiv 编号 1706.0376211

作者的判断(书里这么主张,性质是经验之谈):

  • 「GPT-3 是 2020 年的模型,按这个领域的标准算很老了,但 Meta 的 Llama 这些新模型仍基于同一套概念, 只做了小修改」——这是作者选择用 GPT-2/GPT-3 当教材的核心理由25。 从 2026 年回看,这个判断站住了:今天主流开源模型的骨架仍是他讲的这一套 (同族的两本书——Grigorov 那本专门讲 2025 年新零件——可以佐证;详见总纲)。
  • 「理解 LLM 最好的方式是亲手从零写一个」——这是全书的教学法立场,作者在前言里明说26

判断(我们的,不是书里的): 这本书的「施工图」视角是它跟同类书最大的区别。 多数教材按「概念谱系」组织(从感知机讲到 Transformer),这本书按「施工顺序」组织: 先备料(数据),再造发动机(注意力),再总装(架构),再点火(训练),最后改装(微调)。 对「想把它造出来」的读者,这个顺序是对的;对「只想理解概念」的读者,它略显繁琐。 如果错,会错在: 如果读者的目标只是建立直觉而永远不动手,那么 Wolfram 那本小册子 (我们拆过,what-is-chatgpt-doing)的读法效率更高——但那样的读者不会来读一本 370 页的代码书。

5. 边界与局限

  • 这一章是「地图」,不是「领土」。 所有机制都只有一句话版本,注意力只给了一句「有选择地看前文」, 具体怎么算要读第 03 章。
  • 成书于 2024 年,书里的「今天」是那一年。GPT-3 的 460 万美元、Llama 2 的 69 万美元都是当时口径, 今天同等规模的成本已经大幅下降(硬件与训练方法都在进步),这些数字只留下量感,不要当现价引用。
  • 书里坦白的知识边界: GPT-3 论文没说为什么只训了 3000 亿词元;「涌现」只有现象描述、没有机理解释。
  • 全书走 GPT(解码器)一路,BERT 一支只在第 1 章对照出现,后面不再讲—— 想读「理解型」模型怎么造,得换书(同族的梁楠《从零构建大模型》有 BERT 专章,我们拆过)。

6. 可带走的

  1. 大语言模型 = 一个「猜下一个词」的神经网络;「大」指参数多(几十亿个可调数字)和数据多(几千亿词元)。
  2. 这个任务简单到让人惊讶它能养出这么能干的模型——这个悬念是理解全书的钥匙。
  3. 训练是两段式:不标注的海量文字上预训练出基座,再用小份标注数据微调成工具。
  4. 预训练不用人标答案,靠的是自监督:遮住下一个词让它猜,答案就在原文里。
  5. Transformer 2017 年为翻译而生,有编码器(读)和解码器(写)两半;GPT 只留解码器,BERT 只留编码器。
  6. 自回归 = 把自己刚写的词当作下一步的输入,这也是它写长文必然慢的根源(第 05 章展开)。
  7. 涌现能力:没人教过翻译,读得多却自己会了——这个现象只有记录,没有解释,引用时注意分寸。
  8. 预训练贵到普通人玩不起(GPT-3 约 460 万美元),所以「加载公开权重」是这本书的常规动作。
  9. 自己造小模型的三个现实理由:领域定制、数据隐私、端侧(就在你自己的笔记本、手机这些「末端设备」上跑,不经过云端)部署。
  10. 全书施工图:造架构(0205 章)→ 预训练(0607 章)→ 微调(08~09 章)。

7. 原文地图

主题原书章原文位置
LLM 定义与「大」的两层含义1 Understanding large language modelstext/09-ch01-1-understanding-large-language-models.txt:50(搜「What is an LLM」) · text/09-ch01-1-understanding-large-language-models.txt:57(搜「tens or even hundreds of billions」)
任务简单得令人惊讶同上text/09-ch01-1-understanding-large-language-models.txt:61(搜「surprising to many researchers」)
两阶段训练与自监督同上text/09-ch01-1-understanding-large-language-models.txt:184(搜「pretraining and fine-tuning」) · text/09-ch01-1-understanding-large-language-models.txt:225(搜「self-supervised learning」)
自建模型的理由同上text/09-ch01-1-understanding-large-language-models.txt:171(搜「custom-built」)
Transformer 出处同上text/09-ch01-1-understanding-large-language-models.txt:251(搜「Attention Is All You Need」)
BERT/GPT 两支与零样本/少样本同上text/09-ch01-1-understanding-large-language-models.txt:310(搜「BERT」) · text/09-ch01-1-understanding-large-language-models.txt:356(搜「zero-shot」)
「Transformer 不等于 LLM」澄清同上text/09-ch01-1-understanding-large-language-models.txt:383(搜「Transformers vs. LLMs」)
GPT-3 数据集表与悬案同上text/09-ch01-1-understanding-large-language-models.txt:404(搜「pretraining dataset」) · text/09-ch01-1-understanding-large-language-models.txt:431(搜「499 billion」)
成本数字同上text/09-ch01-1-understanding-large-language-models.txt:447(搜「$4.6 million」)
涌现能力同上text/09-ch01-1-understanding-large-language-models.txt:532(搜「emergent behavior」)
三阶段施工图同上text/09-ch01-1-understanding-large-language-models.txt:543(搜「three stages」)

Footnotes

  1. 出处:「about this book」第 8 段(text/06-fm-about-this-book.txt:8,搜「smaller in scale」)。 原文:「While the models you'll create are smaller in scale compared to the large foundational models, they use the same concepts」。

  2. 出处:「1 Understanding large language models」第 51 段(text/09-ch01-1-understanding-large-language-models.txt:51,搜「designed to understand, generate, and respond to」)。

  3. 出处:「1 Understanding large language models」第 61 段(text/09-ch01-1-understanding-large-language-models.txt:61,搜「surprising to many researchers」)。 原文:「it is a very simple task, and so it is surprising to many researchers that it can produce such capable models」。

  4. 出处:「1 Understanding large language models」第 57 段(text/09-ch01-1-understanding-large-language-models.txt:57,搜「tens or even hundreds of billions of parameters」)。

  5. 出处:「preface」第 12 段(text/04-fm-preface.txt:12,搜「Iris flower dataset」)。 原文:用传统方法,鸢尾花数据集用「只有两个参数的小模型」就能以 90% 以上准确率分类。

  6. 出处:「1 Understanding large language models」第 53 段(text/09-ch01-1-understanding-large-language-models.txt:53,搜「large portions of the entire publicly available text」)。

  7. 出处:「1 Understanding large language models」第 488 段(text/09-ch01-1-understanding-large-language-models.txt:488,搜「autoregressive」)。 原文:「Autoregressive models incorporate their previous outputs as inputs for future predictions.」

  8. 出处:「1 Understanding large language models」第 480 段(text/09-ch01-1-understanding-large-language-models.txt:480,搜「self-labeling」)。 原文:「we can use the next word in a sentence or document as the label that the model is supposed to predict」。

  9. 出处:「1 Understanding large language models」第 239 段(text/09-ch01-1-understanding-large-language-models.txt:239,搜「most popular categories of fine-tuning」)。

  10. 出处:「1 Understanding large language models」第 174 段(text/09-ch01-1-understanding-large-language-models.txt:174,搜「BloombergGPT」)与第 177 段(text/09-ch01-1-understanding-large-language-models.txt:177,搜「may prefer not to share sensitive data」)。 2

  11. 出处:「1 Understanding large language models」第 251 段(text/09-ch01-1-understanding-large-language-models.txt:251,搜「Attention Is All You Need」)。 原文给的链接是 arxiv.org/abs/1706.03762。 2

  12. 出处:「1 Understanding large language models」第 267 段(text/09-ch01-1-understanding-large-language-models.txt:267,搜「weigh the importance of different words or tokens」)。

  13. 出处:「1 Understanding large language models」第 301 段(text/09-ch01-1-understanding-large-language-models.txt:301,搜「(a) an encoder that processes the input text」)。

  14. 出处:「1 Understanding large language models」第 316 段(text/09-ch01-1-understanding-large-language-models.txt:316,搜「masked word prediction」)与第 350 段(text/09-ch01-1-understanding-large-language-models.txt:350,搜「decoder portion」)。

  15. 出处:「1 Understanding large language models」第 383 段(text/09-ch01-1-understanding-large-language-models.txt:383,搜「Transformers vs. LLMs」)。 原文:「not all transformers are LLMs…not all LLMs are transformers」。

  16. 出处:「1 Understanding large language models」第 356 段(text/09-ch01-1-understanding-large-language-models.txt:356,搜「zero-shot and few-shot」)。

  17. 出处:「1 Understanding large language models」第 528 段(text/09-ch01-1-understanding-large-language-models.txt:528,搜「initially unexpected to researchers」)。

  18. 出处:「1 Understanding large language models」第 404 段(text/09-ch01-1-understanding-large-language-models.txt:404,搜「The pretraining dataset of the popular GPT-3」)。 表格数字照原书表 1.1 转录,占比一列原文注明「经舍入,合计 100%」。 2

  19. 出处:「1 Understanding large language models」第 431 段(text/09-ch01-1-understanding-large-language-models.txt:431,搜「499 billion」)。 原文:「the model was trained on only 300 billion tokens. The authors of the GPT-3 paper did not specify why」。 2

  20. 出处:「1 Understanding large language models」第 435 段(text/09-ch01-1-understanding-large-language-models.txt:435,搜「570 GB」)。

  21. 出处:「1 Understanding large language models」第 447 段(text/09-ch01-1-understanding-large-language-models.txt:447,搜「$4.6 million」)。

  22. 出处:「5 Pretraining on unlabeled data」第 595 段(text/13-ch05-5-pretraining-on-unlabeled-data.txt:595,搜「184,320 GPU hours」)。 原书第 5 章的成本框:Llama 2 7B 用 A100 训了 184,320 GPU 小时、处理 2 万亿词元;按 8×A100 每小时约 $30 估算约 $690,000。

  23. 出处:「1 Understanding large language models」第 543 段(text/09-ch01-1-understanding-large-language-models.txt:543,搜「three stages」)。

  24. 出处:「1 Understanding large language models」第 580 段(text/09-ch01-1-understanding-large-language-models.txt:580,搜「to millions of dollars in computing costs」)。 原文:「the focus of stage 2 is on implementing training for educational purposes using a small dataset」。

  25. 出处:「1 Understanding large language models」第 520 段(text/09-ch01-1-understanding-large-language-models.txt:520,搜「considered a long time ago」)。

  26. 出处:「preface」第 28 段(text/04-fm-preface.txt:28,搜「the best way to understand LLMs」)。 原文:「I strongly believe that the best way to understand LLMs is to code one from scratch」。