跳到主要内容

数据截至 (上游 commit eb980a5c9eea)

「大」带来了什么 — 四种新能力,与三段训练

这一章讲三件事: 把模型放大之后,冒出了哪些小模型身上没有的能力; 「放大」这件事在工程上具体要付出什么;以及一个能对话的模型是分哪三段训出来的。 这是全书理论部分的最后一章,也是后面四章动手部分的说明书—— 第 06 至 08 章做的每一件事,在这一章都能找到它对应的那句话。

1. 先看现象:同一件事,小模型做不了,大模型突然就会了

先看一个你多半亲手试过的现象。

你在提问里塞三个例子:

「你的表现非常好」——1
「太糟糕了」——0
「真是一个好主意」——1
请判断:「这真是一个绝佳的机会」——?

今天的模型直接就答对了,而且它的参数一个都没有被改动。

这件事在 2019 年是做不到的。 同样的架构、同样的训练方式, 参数从十几亿涨到上千亿之后,这个能力就出现了。

这一章的前半段就是在讲:这类「突然就会了」的能力有哪几种,分别意味着什么。

2. 先把「大模型」这个词定死

这一节回答一个看起来不用回答的问题:多大算大。

书里给的定义1:

大语言模型(LLM,Large Language Model)= 参数量更多、在更大规模语料上预训练的语言模型。 架构和练习题都和上一代差不多(只留解码器 + 接龙训练), 变的只有参数量和语料量。

具体的门槛,书里说得很老实——没有硬门槛2:

口径说法
狭义数百亿参数以上,在数万亿标记的语料上、靠多卡集群(很多台机器很多张卡连成一片一起算)训练
广义从十亿(如 Qwen-1.5B)到千亿(如 Grok-314B)都算
真正的判据只要展现出「涌现能力」,就可以叫大模型

「涌现能力」是什么,下一节讲。

公认的起点是 GPT-3(1750 亿参数);而在它基础上做三阶段训练得到的 ChatGPT, 才真正把这个时代打开3

3. 能力一:涌现——一个需要小心对待的词

这一节讲书里作为整章地基的那个概念,以及它没告诉你的争议。

书里怎么说

涌现能力(Emergent Abilities):同样的架构和练习题下, 某些能力在小模型上不明显,在大模型上特别突出4

书里打的比方是物理学里的相变——就像水温一度一度升上去, 到 100 度那一刻突然从液体变成气体。量变引起质变。

这个概念是整个行业保持热情的核心:虽然现在离通用人工智能(就是「什么活都能干」的那种机器,目前还只是个目标)还很远, 但只要「继续放大还会冒出新能力」这条成立,那条路就走得通4

但它是一个有出处、也有反对意见的主张

书里把涌现当成既定事实用。它不是。

补充(不在书里):这个说法有正式的原始出处——2022 年 6 月的一篇论文, 把涌现能力定义为「在小模型上不存在、在大模型上存在的能力」, 并强调它「无法通过外推小模型的表现来预测」5

而 2023 年 4 月的另一篇论文直接反驳了它:论文说,上面那种突变, 可能只是研究者挑的评测指标(就是用来打分的那把尺子)造成的错觉—— 有些尺子只认「全对」和「不全对」两档, 一旦换成会给部分分的那种尺子,曲线就是平滑的6

判断(我们的,不是书里的): 这两篇论文并不真正矛盾, 它们争的是「突变是模型的性质还是尺子的性质」。 举个例子:一道多步计算题,只有全对才给分。模型从「错三步」进步到「错一步」时,得分仍然是 0; 等它进步到「一步不错」,得分突然从 0 跳到 1。 能力是平滑长上去的,分数是跳的。 所以务实的读法是:「规模变大能力变强」可以采信; 「存在无法预测的能力跃迁」要打问号,尤其别拿它去论证「继续放大就一定能到通用人工智能」。 如果错,会错在: 如果确实存在某种能力,在任何连续指标下都表现出突变, 那么反驳方就不成立,涌现就是模型的真实性质。判据是能不能找到这样一个反例。

4. 能力二:上下文学习——成本结构被改写了

这一节回答:第 1 节那个「塞三个例子就会了」的现象,为什么是这个行业的分水岭。

它是什么

上下文学习(In-context Learning)由 GPT-3 首次引入: 模型只要拿到自然语言写的指令或者几个例子,就能理解上下文并给出对应输出, 不需要任何额外训练,也不改动任何参数7

为什么它改变了游戏

对照着看最清楚8:

老范式(预训练 + 微调)上下文学习
做一个新任务要什么标注一千到几万条数据 + 微调一次写一段话
数据从哪来人工标注,贵不需要
算力就算 BERT 这种五亿参数的小模型,微调也要 10GB 以上显存
模型参数被改动一个不改

书里给的现状判断:今天绝大部分自然语言处理任务, 只要调调提问方式、或者给 1 到 5 个例子,就能让 GPT-4 超过传统模型微调的效果8

这直接催生了一个新的活儿,书里叫 Prompt Engineering—— 中文一般叫「提示工程」,意思就是:调整你给模型的那段话,把它的能力激发出来8

「提示」(prompt)这个词从这里开始每章都会出现,定死它的意思: 你交给模型的那一整段输入文字。 包括你的问题、你给的例子、你提的要求, 全都算在里面。

5. 能力三:指令遵循——模型第一次能服务普通人

它是什么

用自然语言描述的多任务数据去微调(这叫指令微调), 之后模型在没见过的指令上也能照办9

注意「没见过的」这三个字——这才是关键。 不是「你教它写周报它就会写周报」,而是教过它几十种任务之后, 它对第几百种任务也能上手。

书里的表述:我们不再需要每一件事都先教模型,然后它才能去做10

为什么这条最重要

书里给了一个很直接的判断:ChatGPT 之所以能有那么高的热度, 核心原因就在于它不再是只能给学界业界做研究的理论模型, 而是可以广泛服务各行各业的用户10

写作文、编程序、批改试卷、读报纸——全靠这一条。

书里还说:今天的智能体(就是能自己拆解目标、调用工具去把事办了的那类程序,第 09 章讲), 乃至未来可能出现的全能助理,本质上依赖的都是指令遵循能力10

6. 能力四:逐步推理——把难题换成很多道简单题

先看问题

多步推理一直是这一行的老大难。 书里说得很直白: 如果一个模型连「鸡兔同笼」都算不出来,你很难认为它是「智能的」11

传统模型做不了这类题:它一步就要给出答案,而多步计算需要中间过程。

做法:让它把中间步骤写出来

思维链(CoT,Chain-of-Thought):在提示里放进包含中间推理步骤的示例, 让模型也照着一步步写,最后才给答案11

直接问: 小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个?
→ 模型直接蹦一个数,经常错

带思维链:小明有 5 个苹果 → 给出 2 个,还剩 3 个 → 又买 3 个,一共 6 个 → 答案是 6
→ 每一步都是「一眼能看出」的,正确率大幅上升

图说:同一道题,把「一步算完」换成「很多步各走一小步」。
中间步骤写在输出里,等于给了模型一张草稿纸。

书里对来源给了一个明确标注为推测的说法: 据推测,这种能力可能是通过对代码的训练获得的12

这是全书少见的、作者主动标注了不确定性的地方,值得记住它的措辞。

补充(不在书里):思维链有正式出处——2022 年 1 月的论文, 最有分量的结果是给一个 5400 亿参数的模型配八个带推理步骤的示例, 就在小学数学题基准上取得了当时最好的成绩,超过了专门微调加验证器的 GPT-313

7. 四个特点:两个有用的,一个诱人的,一个甩不掉的

书里在四种能力之外,还列了四个「特点」。

多语言:白捡的

大模型的语料本身就是多语言的,所以它天生就会多种语言14。 但因为高质量英文语料占大头,GPT-4 这类模型的英文能力显著强于中文; 针对中文额外训练过的国内模型在中文环境里往往更好14

长文本:妙计频出的战场

传统模型的上下文长度惯例是 512 个标记(BERT、T5 都是); 大模型在训练时就支持 4K、8K 甚至 32K15

关键手段是换位置编码。 书里说大部分大模型用了旋转位置编码(RoPE), 或者同样具有外推能力的 AliBi——好处是能处理明显长于训练长度的文本15

书里给的例子很硬:InternLM 在 32K 长度上预训练,靠旋转位置编码能处理 200K 长度15

「外推」的意思就是:训练时没见过这么长,用的时候仍然能处理。 (旋转位置编码具体怎么做,第 06 章讲。)

多模态:加零件

给模型加一个图像编码器和一个转换层(书里叫 Adapter),再在图文数据上微调, 它就能做图文问答甚至生成16

「模态」就是信息的种类:文字、图像、声音、视频各算一种。

幻觉:甩不掉的

幻觉 = 模型根据提示杜撰出虚假、错误的信息17

书里给的例子非常具体:让它生成一篇学术论文和参考文献列表, 它往往会捏造一堆看似「一本正经」实则完全不存在的论文和研究17

书里的判断很硬:这是大模型的固有缺陷。 现有手段(在提示里加限制、用检索来指导生成)只能一定程度削弱,无法彻底根除17

判断(我们的,不是书里的): 幻觉之所以「固有」,可以从第 04 章那道练习题上看明白: 接龙这道题的目标从来就是「写得像」,不是「说得对」。 一段编造的参考文献,在「像不像论文」这个尺度上得分极高。 模型不是坏了,它是在忠实地执行它被训练去做的那件事。 如果错,会错在: 如果某种训练方式能把「事实正确」直接写进训练时要追求的那个目标 (比如全程用可验证的答案做强化学习),那幻觉就可能从「固有」降级为「可控」。

8. 训练一个大模型:三段流水线

从这里开始是这一章的后半段:怎么造出来。

书里给的完整流程只有三步18:

① 预训练 Pretrain
海量无标注文本上做接龙 → 拿到知识和语感
最贵的一步:百亿参数要 1024 张 A100 跑一个多月


② 有监督微调 SFT
成对的「指令 → 回复」数据 → 学会听懂人话、按指令答


③ 人类反馈强化学习 RLHF
人给回复排序,训一个打分模型,再用它去调 → 学会答得让人满意

图说:三步各管一件事——① 懂多少,② 听不听得懂指令,③ 答得合不合人意。
缺哪一步就缺哪一样,顺序不能换。

书里给了一个特别好记的比喻,值得原样带走19:

预训练 = 把所有基础知识教给这个学生; 有监督微调 = 教他怎么读题、怎么解题; 人类反馈强化学习 = 让他真的做练习,老师批改,反思错的、强化对的。

主走查:一句话走完这三段

三段流水线上面那张图只有三句评语,读者复述不出「同一句话在三段里各被怎么处理」。 所以从这里到本章结束,只跟着一条样本走:

「告诉我今天的天气预报?」——这是第 10.2 节那条现成的指令数据的问句。

后面第 9、10、11 节每讲到一步,都会写出这句话在那一步里具体变成了什么、拿到了哪个数:

① 预训练阶段 → 它只是语料里的一串普通文字,被错位一位切成「输入」和「目标」
② 有监督微调 → 它被套进对话模板,并逐位标出「哪一位算分、哪一位不算」
③ 奖励模型 → 同一个问题配两个回复,各过一遍模型,各得到一个具体的数
④ 强化学习 → 四个模型各自对这句话吐出一个数,最后合成一个奖励

图说:同一句话,三段各拿它练一件不同的事。
① 练「接得下去」,② 练「答的是这一句」,③④ 练「答得让人满意」。

先声明:这条线上凡是分数、比例、掩码之外的数值,都是为演示编的,不是真实数值。 这句问句本身和第 10.5 节那套模板来自书里。

9. 第一段:预训练——最贵的那一步

9.1 练习题没变,变的是量

预训练用的仍然是第 04 章那道接龙题(因果语言模型)。 书里说得很清楚:大模型的预训练和传统预训练模型没有本质差别, 差别在体量和资源消耗20

对照着看21:

模型层数隐藏层维度注意力头数参数量预训练数据
BERT-base12768121 亿30 亿标记
BERT-large241024163 亿30 亿标记
Qwen-1.8B2420481618 亿2.2 万亿标记
LLaMA-7B3240963270 亿1 万亿标记
GPT-39612288961750 亿3000 亿标记

GPT-3 比 BERT-large 大了将近三个数量级。

主走查第 ① 步:这句话在预训练里长什么样

预训练不认识「问句」这回事。 「告诉我今天的天气预报?」在这一段里, 和语料里其他任意一串文字没有区别——它被切开、错开一位,变成一道道接龙题:

切完之后(前后各加一个人造记号,标出句子的头和尾):
[BOS] 告诉 我 今天 的 天气 预报 ? [EOS] 共 9 个位置

输入 X: [BOS] 告诉 我 今天 的 天气 预报 ? ← 去掉最后一个
目标 Y: 告诉 我 今天 的 天气 预报 ? [EOS] ← 去掉第一个

对齐着看,X 的第几位对 Y 的第几位:
第 1 位:看到 [BOS] → 该说「告诉」
第 2 位:看到 [BOS] 告诉 → 该说「我」
第 5 位:看到 [BOS] 告诉 我 今天 的 → 该说「天气」
第 8 位:看到 …… 天气 预报 → 该说「?」

图说:一条 9 个位置的样本里藏着 8 道题,而且靠第 02 章那块掩码一次性并行做完。
注意这里没有任何人工标注——答案就是原文自己往后错一位。
(切成这 9 个位置是照着这句话数出来的,不是编的。)

9.2 该配多少数据:书里这一段要修正

书里引了 OpenAI 提出的 Scaling Law(中文一般叫「规模法则」), 写成 C ≈ 6ND——计算量 ≈ 6 × 参数量 × 训练标记数; 并说「可以实验得出训练标记数应该是模型参数的 1.7 倍」, 所以 1750 亿参数的 GPT-3 用了 3000 亿标记22

书里接着说:LLaMA 进一步提出用 20 倍标记训练效果最优22

判断(我们的,不是书里的):这一段把两件事的功劳记错了地方。

1.7 倍不是一条法则,只是 GPT-3 的实际配比(3000 亿 ÷ 1750 亿 ≈ 1.7)。 补充(不在书里):2020 年那篇规模法则论文的结论恰恰相反—— 它说「更大的模型样本效率显著更高,所以计算最优的训练方式是 训练非常大的模型、用相对不多的数据、并且远在收敛(就是指标不再明显变好、训练到头了)之前就停23也就是说,那篇论文是在鼓励「模型偏大、数据偏少」。

真正把 20 倍这个结论做出来的是 2022 年的 Chinchilla 论文,不是 LLaMA。 它训了 400 多个模型,结论是当时的大模型普遍训练不足, 模型每翻一倍,训练标记数也该翻一倍; 并且用 700 亿参数的 Chinchilla 打败了 2800 亿参数的 Gopher24LLaMA 是跟着 Chinchilla 走的,不是提出者。

如果错,会错在: 如果 LLaMA 论文里确实独立提出了 20 倍这个数而非引用 Chinchilla, 那书里的归属就没错——但按发表时间,Chinchilla(2022 年 3 月)早于 LLaMA(2023 年 2 月)。

9.2.1 还一笔债:为什么大模型只把语料过一遍、批还开得那么大

第 04 章第 3.5 节留了一句「为什么会有这个转变,第 05 章讲」,这里还上。 那里说的是:BERT 把 13GB 语料反复过了 40 遍、一次只喂 256 条; 而大模型一般只过一遍,一次喂进去的条数远多于 256。两处都变了,原因各不相同。

第一处变化:为什么不再过第二遍。

上一节那张表已经给了对照——BERT 的预训练数据是 30 亿标记, LLaMA-7B 是 1 万亿标记,后者是前者的三百多倍。 把 1 万亿过一遍,已经相当于把 30 亿过三百多遍了——BERT 那 40 遍反而是小数目。

而多过一遍不是白拿的:第 9.6 节马上会讲到,大量重复文本会显著损害模型的泛化能力; 那条「1 万亿筛成 6270 亿反而更好」的实证说的正是这件事。 语料一旦大到这个量级,再过第二遍的收益,抵不过重复带来的损害。

第二处变化:批为什么自然就大了。

批大小变大不是有人拍板决定的,是分布式训练的算术结果。 下一节讲的数据并行是每张卡各喂一批、算完再把调整量汇总—— 所以总批大小 = 卡数 × 每张卡的批大小。

BERT: 16 块 TPU,总批 256 → 平均每块 16 条
大模型:1024 张 A100,每卡 4 条 → 总批 4096,是 256 的 16 倍

图说:每张卡吃的条数其实还变少了,总批却涨了 16 倍——涨的全是卡数。
(每卡 4 条是为演示编的,不是真实数值;1024 张 A100 与 256 这两个数来自书里。)

9.3 一张卡装不下怎么办:分布式训练

分布式训练就是把一次训练拆到很多张显卡上同时做。 这一节解释一个后面第 08 章要动手用的东西。

书里给的现实开销25:

  • 百亿参数的模型:1024 张 A100 跑一个多月;
  • 十亿参数的模型:256 张 A100 跑两三天;
  • 哪怕只训一个 10 亿参数的模型,也至少需要多卡集群。

于是必须把训练拆到很多张卡上。书里给了两个基本思路26:

思路什么时候用怎么做
数据并行模型装得下单张卡,但批开不大、数据太多每张卡放一份完整的模型,各喂不同的数据;每一轮(就是把一批数据从头算到尾这么一次)结束时,把所有卡的调整量收集起来算平均,更新完再发回每张卡
模型并行模型装不下单张卡把模型切开,每张卡放不同的层或不同的部分

在这两个思路上又长出了更精细的做法:张量(就是多维的数表,向量和矩阵都是它的特例)并行、3D 并行、ZeRO 等; 主流框架是 DeepSpeed、Megatron-LM、ColossalAI,其中 DeepSpeed 用得最广27

9.4 ZeRO:把「每张卡都存一份」这件事拆掉

这一节值得慢一点,因为第 08 章的配置文件里就是它。

先把这个名字里的词拆开。 训练时反复把参数往「答得更准」的方向挪一丁点, 这件事就叫优化——整个训练过程,做的就是把这一步优化重复几十万遍。

而干这件事的那套具体办法,叫优化器——它决定每个参数这一步往哪挪、挪多少。

ZeRO 是 Zero Redundancy Optimizer 的缩写,直译是「零冗余优化器」。 它是 DeepSpeed 的核心策略,出发点是:数据并行时,每张卡都存了一模一样的东西,这是浪费。

书里先把显存占用分成两类28:

类别包含什么有多大
模型状态模型参数、参数的调整量(梯度)、优化器 Adam 的状态参数量的 16 倍——其中光 Adam 的状态就占 12 倍
剩余状态中间计算结果、各种缓存、显存碎片视情况

「优化器」是什么: 决定「拿到调整方向之后,每个参数具体挪多少」的那套算法。 Adam 是最常用的一种,它为每个参数额外记两个数——所以它的状态才那么占地方。

然后 ZeRO 提出三级递进的切分29:

ZeRO-1 只切 Adam 的状态 每张卡存 1/N 的优化器状态,参数和梯度仍各存一份
ZeRO-2 再切梯度 每张卡存 1/N 的优化器状态和梯度,只有参数各存一份
ZeRO-3 参数也切 三样都只存 1/N

图说:切得越多,每张卡越省显存,但卡与卡之间要传的数据越多。
所以显卡利用率是 ZeRO-1 最高、ZeRO-3 最低。

取哪一级要看你的卡和你的模型,没有标准答案29

补充(不在书里):ZeRO 的原始出处是 2019 年 10 月的论文, 它的主张是「消除数据并行与模型并行训练中的显存冗余,同时保持低通信量和高计算粒度」, 并报告用它做出了当时世界最大的语言模型 Turing-NLG(170 亿参数)30

9.5 数据:比算力更难的那一半

书里有一句话值得单独抽出来:模型掌握的知识绝大部分都是在预训练过程中学会的31。 所以预训练语料必须覆盖尽可能广的知识面。

做法是把多种来源按比例混起来。 书里给了 LLaMA 的配方32:

数据集占比大小
CommonCrawl(公开网页爬取)67.0%3.3 TB
C4(清洗过的网页)15.0%783 GB
GitHub(代码)4.5%328 GB
Wikipedia4.5%83 GB
Books4.5%85 GB
ArXiv(论文)2.5%92 GB
StackExchange(问答)2.0%78 GB

书里对这张表的评价很有意思:数据配比向来是预训练的「核心秘籍」, 不同配比会相当大程度影响最终性能32各家都不公开自己的配方。

中文的处境更糟:高质量语料大部分集中在英文; 国内开源模型基本不公开预训练数据集,开源的中文预训练语料只有零星几个33

9.6 数据处理:三道工序

书里的判断:预训练数据的质量往往比体量更重要34。三道工序34:

工序干什么
文档准备按网址过滤掉有害内容 → 从网页里提取纯文本 → 判断语种
语料过滤去掉低质量、无意义、有毒有害的内容(乱码、广告)。两种办法:训一个分类器(就是只负责判断「这段是好是坏」的小模型)来筛,或者人工定义质量指标来筛
语料去重大量重复文本会显著损害模型的泛化能力,所以要把内容雷同的文档找出来删掉,相似度超过某个门槛就删

(「泛化」第 01 章定过:在没见过的数据上也表现得好。)

上面那句「把内容雷同的文档找出来」,靠的是一种叫哈希的办法。 哈希就是按一套固定的算法,把一段任意长的文本压成一个短指纹—— 两段文本只要有一个字不同,指纹通常就完全不同;而指纹一样,基本就是同一段。 于是「比对几十亿篇文档」这件不可能的事,变成了「比对几十亿个短指纹」。

一个很硬的实证: 有人在一份 1 万亿标记的语料上做筛选去重,得到 6270 亿标记的版本, 实验证明小的那份效果反而更好35

这条值得单独记:在预训练数据上,「删掉一半」有时候比「再加一倍」更划算。

10. 第二段:有监督微调——教它听懂人话

10.1 为什么必须有这一步

书里的比喻是全书最好的一个36:

预训练完的模型像一个博览群书但不求甚解的书生—— 什么偏门问题他都能流畅地接下去,但他压根不知道问题本身是什么意思,只会「死板背书」。

原因很直接:预训练的任务就是接龙。 在没有进一步微调之前, 它没有任何理由去「回应」你,它只会「续写」你36

10.2 做法:指令微调

有监督微调(SFT,Supervised Fine-Tuning)在大模型这里的具体形态叫指令微调37:

input: 告诉我今天的天气预报?
output: 根据天气预报,今天天气是晴转多云,最高温度26摄氏度,最低温度9摄氏度,
昼夜温差大,请注意保暖哦

图说:输入是各种类型的用户指令,输出是我们希望它收到这条指令后做出的回复。

和上一代微调的关键差别:传统模型是为每个下游任务单独微调一次 (要做分类就微调一个分类模型,要做实体识别就再微调一个); 大模型不再针对具体任务,而是直接训练它的「通用指令遵循能力」37

10.3 数据要多少、怎么配

书里给的经验数字38:

目标需要多少
单个任务上微调出不错的效果500 到 1000 条
获得泛化的指令遵循能力要覆盖多种类型的任务指令,数据量在数十亿标记左右

配比同样是难点。 书里给了 InstructGPT(ChatGPT 的前身)从自家接口(别的程序调用它的那个入口)的调用记录里 统计出的十类指令占比39:

指令类型占比
文本生成45.6%
开放域问答12.4%
头脑风暴11.2%
聊天8.4%
文本转写6.6%
文本总结4.2%
文本分类3.5%
其他3.5%
特定域问答2.6%
文本抽取1.9%

这张表的信息量在于:接近一半是「写点东西」,而分类抽取这类传统任务加起来不到 6%。

10.4 数据从哪来:一个绕不过去的成本问题

和预训练不同,这一步的数据是有监督的——除了要设计广泛合理的指令, 还要人工标注回复,而且要保证标注质量40

书里的判断很直接:ChatGPT 的成功很大一部分来源于它高质量的人工标注数据。 但人工标注成本极高,也罕有企业把它开源40

于是有了一条省钱的路:用模型生成数据。 经典的开源指令数据集 Alpaca 就是拿一批种子提示,让 ChatGPT 生成更多指令并给出回复40

10.5 数据长什么样,以及一个关键细节

标准格式是三个字段——字段就是每条数据里固定的那几栏,每一栏装一样东西41:

{
"instruction": "将下列文本翻译成英文:",
"input": "今天天气真好",
"output": "Today is a nice day!"
}

训练时还要套一个固定模板,比如 LLaMA 用的是42:

### Instruction:
将下列文本翻译成英文:今天天气真好

### Response:
Today is a nice day!

然后是这一节最关键的一句话,它是第 07、08 章动手时最容易做错的地方43:

指令微调本质上仍然是接龙训练。模型要拟合的不只是 output,而是 input + output 整体—— 只不过 input 那部分不参与损失的计算。

「损失」是训练时衡量「答得离正确答案有多远」的那个数;不参与损失计算, 就是「这部分答错了也不罚它」。 这件事在代码里叫损失掩码,第 07 章会实际写它。

为什么必须这样: 如果对用户说的话也算损失,模型就会学着去「生成用户的提问」; 它该学的是「看到这样的提问,该怎么回」。

主走查第 ② 步:同一句话,套上模板、逐位标掩码

注意和第 9.2.1 节那一步对照着看:X 和 Y 的做法一个字都没变,还是错开一位。 变的只有「哪些位置算分」。

套上模板之后的完整序列(每一格是一个位置,为了看得清只画到词一级):

位置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
内容: <im_start> user 告诉 我 今天 的 天气 预报 ? <im_start> assistant 今天 晴 转多云 …
掩码: 0 0 0 0 0 0 0 0 0 0 0 1 1 1

一句话说清这串 0/1:**从 assistant 那一格的后面开始记 1,一直记到这一轮的结束记号。**

图说:左边那八个 0 盖住的正是「告诉我今天的天气预报?」——
用户说的话,模型看得见、但答错了不罚。
右边那些 1 盖住的才是它该学着写出来的东西。
掩码写反了会怎样?训出来的模型会开口就问「告诉我今天的天气预报?」。
(这套模板和这条问句来自书里;把它排成 14 个位置是为演示画粗的。)

10.6 多轮对话:三种构造方式,只有一种是对的

多轮对话能力完全来自这一步,和预训练无关44

如果不专门构造,模型会是这样44:

用户:你好,我是开源组织 Datawhale 的成员。
模型:您好,请问有什么可以帮助您的吗?
用户:你知道 Datawhale 是什么吗?
模型:不好意思,我不知道 Datawhale 是什么。 ← 前一句刚说过,它没记住

假设一段有三个来回的多轮对话,书里给了三种构造方式45:

方式做法问题
只拟合最后一轮回复,前面全当输入丢掉大量中间信息——前两轮的回复白白浪费
把 N 个来回拆成 N 条样本大量重复计算——第一轮的内容被算了三遍
一次性拟合每一轮的回复

第三种是对的,而且书里给了理由,这个理由很漂亮45:

因为模型本质上做的是接龙、算的是单向注意力, 预测时从左到右依次进行——所以后面几轮的预测不会影响前面几轮。

换句话说:一条样本里可以同时藏着三道题,它们互不干扰。 目前绝大部分大模型都用第三种方式做有监督微调45

11. 第三段:人类反馈强化学习——教它答得让人满意

11.1 它在整条链上的位置

书里给了一个很有用的划分:从功能上看,大模型的训练可以分成「预训练」和「对齐」两段46:

阶段干什么
预训练赋予模型海量知识
对齐(alignment)让模型和人类的期望(人希望它给出什么)保持一致——输出人希望它输出的内容

而对齐内部又分两层46:

  • 有监督微调:让模型和人类的指令对齐,获得指令遵循能力;
  • 人类反馈强化学习:让模型和人类的价值观对齐,达到「安全、有用、无害」。

RLHF 就是「人类反馈强化学习」那几个英文词的缩写;它往往被认为是 ChatGPT 相较于 GPT-3 最核心的突破46

11.2 强化学习是什么

书里给的解释47:

强化学习讨论的问题是:一个「智能体」怎么在复杂、不确定的环境里, 最大化它能获得的奖励。 智能体不断行动、从环境获得反馈,再根据反馈调整自己的策略。

套到大模型上: 模型针对不同问题不断生成回复, 人工标注员不断对这些回复做出反馈,模型就学会了人类更偏好的回复方式47

11.3 第一步:训一个会打分的模型

为什么需要它: 强化学习每一步都要有人给反馈, 而让真人实时给几百万条回复打分是不可能的。 所以先训一个模型来模仿人的打分,再让它去代替人。

这个模型叫奖励模型(RM,Reward Model): 给一段文本,输出一个数,这个数反映这段回复有多符合人类偏好48

它的结构毫不神秘:就是一个文本分类模型—— 传统大模型架构(或 BERT 架构)加一层分类层,只不过用的是隐藏层输出而不是最后的分类输出48

11.4 一个关键设计:不让人打分,让人排序

这是这一节最值得记住的一处。

为什么不直接给分: 偏好数据是人工标注的,而不同标注者的价值观有差异; 数值形式的打分会把这种差异放大——同样水平的回复,甲给 7 分乙给 4 分, 模型没法拟合到一个一致的分数49

所以改成排序: 对同一个问题下的不同回复排个名次,再把名次转成奖励49

书里给的训练数据长这样50:

{
"prompt": "如果你打算从商店偷东西,你觉得早上好还是晚上好?"
"chosen": "这是违法的事情,我不能提供建议"
"rejected": "考虑晚上的人口贩运和监控摄像头的差别是件好事……"
}

训练时把提问分别和两个回复拼起来,各自过一遍模型得到一个数, 然后让模型去最大化这两个数的差距50

主走查第 ③ 步:同一句话配两个回复,拿到两个数

这一步第一次出现真正的「分数」。 给主走查那句问句配两个回复:

提问:告诉我今天的天气预报?

回复 A(人排在前面): 今天晴转多云,最高 26 度,昼夜温差大,注意保暖
└ 拼成「提问 + 回复 A」过一遍奖励模型 → 输出一个数: 2.3
回复 B(人排在后面): 我不知道
└ 拼成「提问 + 回复 B」过一遍奖励模型 → 输出一个数: -0.7

「最大化这两个数的差距」= 让 2.3 - (-0.7) = 3.0 这个差越大越好

图说:注意 2.3 和 -0.7 这两个数本身没有意义——
人从来没说过「好回复该得 2.3 分」,人只说了「A 排在 B 前面」。
模型自己去凑出一对能把这个次序体现出来的数,凑成 2.3/-0.7 还是 8.0/5.0 都行。
**这正是「让人排序而不是打分」能成立的原因:分数是模型自己造的,不是人给的。**
(2.3 和 -0.7 是为演示编的,不是真实数值。)

两个细节值得记51:

  • 奖励模型往往比最终的大模型小得多——OpenAI 用的是 1750 亿的模型配 60 亿的奖励模型;
  • 奖励模型可以从有监督微调后的模型初始化,也可以从头训,哪种更好至今没有定论

11.5 第二步:用 PPO 做强化学习

PPO 就是一种强化学习算法的名字——全称 Proximal Policy Optimization,中文译作近端策略优化。 它是一种成熟的经典算法。 书里说明可以换别的算法,但 PPO 因为成熟、成本较低,目前还是最适合的52

这一步最反直觉的地方是:它同时要装四个模型53「四个」这个数不是设计者贪心,是被两个具体的麻烦逼出来的。先把这两级台阶补上。

麻烦一:奖励模型只在一条回复写完之后给一个总分。 上一节那个 2.3,是整条「今天晴转多云,最高 26 度,昼夜温差大,注意保暖」写完之后才有的。 可这条回复有二十来个标记,到底是哪几个写好了、哪几个写砸了,那一个 2.3 一个字都没说。

所以需要有人把这一个总分摊到每一步上。 办法是再养一个模型,专门回答 「写到这里为止,后面预计还能拿多少分」——有了这个估计, 每写一个标记就能算出「这一步让预期变好了还是变差了」。这个模型就是 Critic。

麻烦二:模型会为了讨好那个奖励模型而彻底跑偏。 那个奖励模型自己也只是一个模型,它有它的偏好和漏洞; 一味往高分方向跑,很容易跑出一堆「奖励模型爱看、人看了莫名其妙」的话, 顺带把预训练和有监督微调辛苦练出来的语感也丢掉。

所以还要留一份没被训练过的原模型当参照物,随时量一量「现在这个和原来那个差多远」, 差太多就扣分。这个参照物就是 Ref。

加上被训练的 Actor 和打分的 Reward,一共四个。 现在再看这张表就对得上了:

模型从哪来更不更新参数干什么
Actor有监督微调后的模型更新这就是我们要训练的那个模型
Ref有监督微调后的模型不更新参照物——防止 Actor 跑偏
Critic上一步训好的奖励模型更新估计「从这里往后一共能拿多少奖励」
Reward上一步训好的奖励模型不更新给回复打分

流程54:

① 给一个提问,Actor 和 Ref 各生成一条回复
② 比较两条回复的差距(用 KL 散度衡量)—— 差太远说明 Actor 跑偏了
③ Actor 的回复送进 Reward 和 Critic,拿到打分
④ 把「打分」减去「跑偏的惩罚」,得到最终奖励
⑤ 用这个奖励更新 Actor 和 Critic

图说:整套设计的核心是第 ② 步的刹车。没有它,模型会为了讨好打分器而胡说八道。

主走查第 ④ 步:四个模型对同一句话各吐一个数

还是那句「告诉我今天的天气预报?」,这次让四个模型同时开工:

① Actor 生成: 今天晴转多云,最高 26 度,昼夜温差大,注意保暖
Ref 生成: 今天多云转晴,最高 25 度左右,记得带件外套
└ 两条都通顺,措辞不同 —— 说明 Actor 还没跑偏

② 量一量差多远:KL 散度 = 0.4
└ 这个数越大,说明 Actor 离原模型越远
└ 对照:训练刚开始时两者一模一样,KL = 0;跑到 5.0 就该拉闸了

③ Reward 给整条打分: 2.3 ← 就是上一节那个数
Critic 在第 5 个标记处估:1.8 ← 「写到『云』这里,后面预计还能拿 1.8 分」

④ 算最终奖励:惩罚系数 β 取 0.1
最终奖励 = 2.3 - 0.4 × 0.1 = 2.3 - 0.04 = 2.26

⑤ 拿 2.26 这个数去更新 Actor 和 Critic,下一轮再来

图说:第 ④ 步那个减法就是刹车的全部动作 —— 跑得越偏,减得越多。
β 取多大是人定的:取 0 就是没刹车,取很大就是「不许动」。
(0.4、1.8、0.1、2.26 都是为演示编的,不是真实数值;2.3 沿用上一节那个演示值。)

「KL 散度」是一个衡量两个概率分布(就是「每个可能结果各占多大可能性」的那张表)差多远的量,书里用了这个词但没有解释—— 在这里它的作用就是「Actor 跑偏了多少」的度量。

为什么要留两个不更新的模型:书里给了明确回答—— 是为了限制模型的更新不要过于偏离原模型,以至于丢失预训练和有监督微调赋予的能力55

代价极高: 如果奖励模型和大模型都是 70 亿参数, 光是把这四个模型装进显存就要约 240GB(4 张 80GB 的 A100,每张占 60GB)55

11.6 一个更省的替代:DPO

因为门槛太高,有人从监督学习(就是拿「问题 + 标准答案」成对的数据去训)的角度提出了 DPO(Direct Preference Optimization,直接偏好优化)56

核心思路:把强化学习问题改写成监督学习问题,直接学人类偏好。 它利用「奖励函数」和「最优策略」之间的一条固定的对应关系, 证明了那个带约束的最大化问题可以用单阶段的策略训练来解决—— 也就是说,不必再训奖励模型,也不必做强化学习56

RLHF(PPO)DPO
要几个模型4 个2 个
要不要先训奖励模型不要
训练过程复杂简单很多

书里明说 DPO 的数学证明此处不再赘述56

补充(不在书里):DPO 的原始出处是 2023 年 5 月的论文, 摘要里的关键表述是「DPO 能以闭式解提取出最优策略, 使得标准的 RLHF 问题只用一个简单的分类损失就能解决」, 不需要让模型一遍遍生成候选回复,也不需要一遍遍手工试各种设定57

补充(不在书里):三阶段流程的原始出处是 2022 年 3 月的 InstructGPT 论文, 它最有说服力的结果是:13 亿参数的 InstructGPT,人类评价上胜过 1750 亿参数的 GPT-358参数少了 100 倍,人却更喜欢它——这是「对齐」这件事价值的最好证明。

12. 作者的判断与证据

说法书里给了什么该怎么看
涌现能力存在只给了定义和比喻,没有引用任何论文或实验当主张看,不是事实——见第 3 节
上下文学习改变了成本结构给了具体的成本对照(显存、标注量)可以采信
思维链能力可能来自代码训练明确标注为「据推测」书里罕见的诚实标注,值得肯定
幻觉是固有缺陷只给了结论和现象结论是共识;我们在第 7 节补了一层机制解释
训练标记应为参数的 1.7 倍只给了结论,并且归给了 OpenAI 的规模法则这一条要修正——见第 9.2 节
20 倍标记由 LLaMA 提出只给了结论归属错了,真正的出处是 Chinchilla
第三种多轮对话构造最合理给了机制论证(单向注意力,前面几轮不受后面几轮影响)论证扎实,可以采信
排序比打分更适合训奖励模型给了机制论证(标注者价值观差异会被数值放大)可以采信
PPO 目前最适合 RLHF给了理由(成熟、成本低)这是 2024 年的现状判断,不是定论

判断(我们的,不是书里的): 这一章有一条暗线,书里没有点破—— 三个阶段的成本结构完全不同,而这决定了今天谁能做什么。 预训练拼算力(千卡月级),有监督微调拼数据质量(人工标注), 人类反馈强化学习拼工程复杂度(四个模型同时在显存里)。 绝大多数团队只做得起第二段。 这就是为什么开源生态里的基座模型(就是做完第一段预训练、供别人接着改的那个底座)屈指可数, 而「微调模型」有成千上万个。 如果错,会错在: 如果算力成本继续快速下降、或者出现了显著更省的预训练方法, 这个格局会松动,那时「只做得起微调」就不再是行业结构性的事实。

13. 边界与局限

① 说了三阶段,但只动手做了两阶段

书里第四章讲了 RLHF 的完整原理,但第五、六章的实操只做到有监督微调。 第 6.3 节提了一句「如果是应用在 DPO、KTO 上,思路一致」,也没有展开

所以这本书给你的是:两段能跑通的流程 + 一段只有原理的讲解。

② 涌现被当成了事实

见第 3 节。这是全书最需要读者自己加一层怀疑的地方, 因为整章的乐观基调(「相信随着研究深入,大模型终能具备通用人工智能所需的能力」)建立在它上面4

③ 预训练那一节混了两代结论

第 9.2 节讲的 1.7 倍 / 20 倍问题。这不是小瑕疵—— 它直接影响「我该拿多少数据训我的模型」这个实操判断。

④ 完全没提的三件事

缺什么为什么重要
混合专家结构(MoE)今天主流开源模型大量采用,它改变了「参数量」和「计算量」的关系
推理模型用强化学习直接激励推理能力,是这本书之后最大的变化
训练稳定性的工程细节损失突然飙升、梯度爆炸、要不要跳过某批数据——真正训过大模型的人最头疼的部分

⑤ 一处用词提醒

书里的「对齐」(alignment)只指「和人类期望一致」。 在更广的语境里,这个词还包含安全研究的一大摊内容(欺骗性对齐、能力泛化的失控等)。 书里只在 RLHF 那一节点了「安全、有用、无害」六个字,别把它当成对齐研究的介绍。

14. 可带走的

  1. 大模型和上一代的差别只有两样:参数量和语料量;架构和练习题都没变;
  2. 没有硬门槛,真正的判据是「有没有涌现能力」;
  3. 涌现是一个有反对意见的主张,不是事实——反方说那可能只是评测指标不连续造成的错觉;
  4. 上下文学习改写了成本结构:做一个新任务从「标一千条数据 + 训一次」变成「写一段话」;
  5. 指令遵循让模型第一次能服务普通人,今天的智能体全靠这一条;
  6. 思维链 = 把中间步骤写进输出,等于给模型一张草稿纸;它的来源书里明确标为「推测」;
  7. 幻觉是固有的,因为接龙这道题的目标本来就是「写得像」不是「说得对」;
  8. 完整训练是三段:预训练管懂多少,有监督微调管听不听得懂,人类反馈强化学习管答得合不合人意;
  9. 1.7 倍不是法则,是 GPT-3 的实际配比;20 倍是 Chinchilla 的结论,不是 LLaMA 的;
  10. 数据并行 = 每张卡放整个模型喂不同数据;模型并行 = 把模型切开放;
  11. ZeRO 分三级切分:切优化器状态 → 再切梯度 → 再切参数;越切越省显存,但通信越贵;
  12. 数据配比是各家的核心秘籍,而且「删掉一半」有时比「再加一倍」更划算;
  13. 指令微调只对回复算损失,不对指令算——这是动手时最容易做错的一处;
  14. 多轮对话能力完全来自有监督微调,和预训练无关;正确的构造方式是一次性拟合每一轮回复;
  15. 奖励模型让人排序而不是打分,因为数值会放大标注者之间的价值观差异;
  16. PPO 要同时装四个模型,两个不更新的是刹车;70 亿参数的配置约需 240GB 显存;
  17. DPO 把强化学习问题改写成监督学习问题,只要两个模型。

15. 原文地图

主题原书章原文位置
大模型的定义与门槛第四章 大语言模型text/10-ch04.txt:24(搜「Large Language Model,中」) · text/10-ch04.txt:31(搜「数百亿」) · text/10-ch04.txt:33(搜「Grok-314B」)
三阶段与 ChatGPT 的起点第四章 大语言模型text/10-ch04.txt:38(搜「Supervised Fine-Tuning」)
涌现能力第四章 大语言模型text/10-ch04.txt:73(搜「涌现能⼒ 」) · text/10-ch04.txt:74(搜「相变现象」)
上下文学习与提示工程第四章 大语言模型text/10-ch04.txt:83(搜「In-context Learning」) · text/10-ch04.txt:86(搜「⽆需额外的训练或参数更新」) · text/10-ch04.txt:96(搜「Prompt Engineering」)
指令遵循第四章 大语言模型text/10-ch04.txt:102(搜「指令微调」) · text/10-ch04.txt:106(搜「不再需要每⼀件事都先教模型」)
逐步推理与思维链第四章 大语言模型text/10-ch04.txt:119(搜「鸡兔同笼」) · text/10-ch04.txt:123(搜「Chain-of-Thought」) · text/10-ch04.txt:124(搜「对代码的训练获得的」)
四个特点第四章 大语言模型text/10-ch04.txt:141(搜「多语⾔、跨语⾔模型」) · text/10-ch04.txt:152(搜「RoPE」) · text/10-ch04.txt:161(搜「Adapter」) · text/10-ch04.txt:168(搜「幻觉,是指」)
参数与语料的量级对照第四章 大语言模型text/10-ch04.txt:211(搜「BERT-base」) · text/10-ch04.txt:219(搜「GPT-3 96」)
规模法则与数据配比第四章 大语言模型text/10-ch04.txt:221(搜「Scaling Law」) · text/10-ch04.txt:222(搜「1.7倍」) · text/10-ch04.txt:223(搜「20倍 token」)
分布式训练与 ZeRO第四章 大语言模型text/10-ch04.txt:228(搜「1024张 A100 训练⼀个多⽉」) · text/10-ch04.txt:232(搜「数据并⾏」) · text/10-ch04.txt:241(搜「模型并⾏」) · text/10-ch04.txt:253(搜「Model States」) · text/10-ch04.txt:261(搜「ZeRO-1」)
预训练数据与清洗第四章 大语言模型text/10-ch04.txt:273(搜「预训练过程中学会的」) · text/10-ch04.txt:282(搜「CommonCrawl」) · text/10-ch04.txt:305(搜「URL 过滤」) · text/10-ch04.txt:312(搜「语料去重」) · text/10-ch04.txt:317(搜「SlimPajama」)
有监督微调的动机与做法第四章 大语言模型text/10-ch04.txt:322(搜「博览群书」) · text/10-ch04.txt:335(搜「所谓指令微调」) · text/10-ch04.txt:345(搜「500~1000」)
指令数据的格式与损失掩码第四章 大语言模型text/10-ch04.txt:355(搜「45.6%」) · text/10-ch04.txt:384(搜「instruction」) · text/10-ch04.txt:400(搜「Instruction:」) · text/10-ch04.txt:412(搜「input + output」)
多轮对话的三种构造第四章 大语言模型text/10-ch04.txt:416(搜「多轮对话」) · text/10-ch04.txt:459(搜「第三种⽅式是最合理」)
RLHF、对齐与奖励模型第四章 大语言模型text/10-ch04.txt:465(搜「Reinforcement Learning from Human Feedback」) · text/10-ch04.txt:467(搜「对⻬(alignment)」) · text/10-ch04.txt:489(搜「RM,Reward Model」) · text/10-ch04.txt:497(搜「数值形式的标量奖励」) · text/10-ch04.txt:504(搜「chosen」)
PPO 的四个模型与代价第四章 大语言模型text/10-ch04.txt:520(搜「Proximal Policy Optimization」) · text/10-ch04.txt:524(搜「四个模型」) · text/10-ch04.txt:536(搜「KL 散度」) · text/10-ch04.txt:553(搜「240G」)
DPO第四章 大语言模型text/10-ch04.txt:558(搜「DPO」)

Footnotes

  1. 出处:「第四章 大语言模型」第 24 段(text/10-ch04.txt:24,搜「Large Language Model,中」)与第 27 段(text/10-ch04.txt:27,搜「预测下⼀个 token 任务」)。

  2. 出处:「第四章 大语言模型」第 31 段(text/10-ch04.txt:31,搜「数百亿」)与第 33 段(text/10-ch04.txt:33,搜「Grok-314B」)。

  3. 出处:「第四章 大语言模型」第 38 段(text/10-ch04.txt:38,搜「Supervised Fine-Tuning」)。原文:一般认为 GPT-3(1750 亿参数)是大模型的开端,基于它经过预训练、监督微调、强化学习与人类反馈三阶段训练得到的 ChatGPT 主导了大模型时代的到来。

  4. 出处:「第四章 大语言模型」第 73 段(text/10-ch04.txt:73,搜「涌现能⼒ 」)与第 74 段(text/10-ch04.txt:74,搜「相变现象」)、第 80 段(text/10-ch04.txt:80,搜「我们相信随着研究的不断深⼊」)。 2 3

  5. 补充(不在书里):《Emergent Abilities of Large Language Models》,前三位作者 Jason Wei、Yi Tay、Rishi Bommasani,首次公开于 2022 年 6 月 15 日。摘要给的定义是:涌现能力「在小模型上不存在,在大模型上存在」,并且「无法简单地通过外推小模型的表现来预测」。来源:https://arxiv.org/abs/2206.07682(查阅于 2026-08-25)。

  6. 补充(不在书里):《Are Emergent Abilities of Large Language Models a Mirage?》,作者 Rylan Schaeffer、Brando Miranda、Sanmi Koyejo,首次公开于 2023 年 4 月 28 日。核心论点是:涌现能力「是研究者选择的评测指标造成的,而不是模型行为随规模发生了根本变化」;换成线性或连续的指标,性能提升是平滑可预测的。来源:https://arxiv.org/abs/2304.15004(查阅于 2026-08-25)。

  7. 出处:「第四章 大语言模型」第 85 段(text/10-ch04.txt:85,搜「上下⽂学习是指允许语⾔模型」)与第 86 段(text/10-ch04.txt:86,搜「⽆需额外的训练或参数更新」)。

  8. 出处:「第四章 大语言模型」第 89 段(text/10-ch04.txt:89,搜「10G 以上显存」)与第 96 段(text/10-ch04.txt:96,搜「Prompt Engineering」)。原文给的成本对照包括:BERT 类模型微调一般需要 10GB 以上显存,训练样本数在一千到数十万条不等且都要人工标注。 2 3

  9. 出处:「第四章 大语言模型」第 102 段(text/10-ch04.txt:102,搜「指令微调」)。

  10. 出处:「第四章 大语言模型」第 106 段(text/10-ch04.txt:106,搜「不再需要每⼀件事都先教模型」)、第 109 段(text/10-ch04.txt:109,搜「⼴泛地服务于各⾏各业」)、第 113 段(text/10-ch04.txt:113,搜「WorkFlow」)。 2 3

  11. 出处:「第四章 大语言模型」第 119 段(text/10-ch04.txt:119,搜「鸡兔同笼」)与第 123 段(text/10-ch04.txt:123,搜「Chain-of-Thought」)。 2

  12. 出处:「第四章 大语言模型」第 124 段(text/10-ch04.txt:124,搜「对代码的训练获得的」)。原文措辞:「据推测,这种能力可能是通过对代码的训练获得的」。

  13. 补充(不在书里):《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》,前三位作者 Jason Wei、Xuezhi Wang、Dale Schuurmans,首次公开于 2022 年 1 月 28 日。摘要里的关键结果是:给一个 5400 亿参数的模型配八个带推理链的示例,就在 GSM8K 小学数学基准上取得了当时最好的成绩,超过了经过微调并配了验证器的 GPT-3。来源:https://arxiv.org/abs/2201.11903(查阅于 2026-08-25)。

  14. 出处:「第四章 大语言模型」第 141 段(text/10-ch04.txt:141,搜「多语⾔、跨语⾔模型」)与第 144 段(text/10-ch04.txt:144,搜「显著超越中⽂的能⼒」)。 2

  15. 出处:「第四章 大语言模型」第 150 段(text/10-ch04.txt:150,搜「512 token 为惯例」)、第 152 段(text/10-ch04.txt:152,搜「RoPE」)、第 154 段(text/10-ch04.txt:154,搜「InternLM」)。补充(不在书里):旋转位置编码的原始出处是《RoFormer: Enhanced Transformer with Rotary Position Embedding》,第一作者 Jianlin Su,首次公开于 2021 年 4 月 20 日;摘要里点的三个性质是:用旋转矩阵编码绝对位置、在自注意力里自带相对位置依赖、以及随相对距离增大而衰减的依赖关系。来源:https://arxiv.org/abs/2104.09864(查阅于 2026-08-25)。 2 3

  16. 出处:「第四章 大语言模型」第 161 段(text/10-ch04.txt:161,搜「Adapter」)。

  17. 出处:「第四章 大语言模型」第 168 段(text/10-ch04.txt:168,搜「幻觉,是指」)与第 172 段(text/10-ch04.txt:172,搜「减弱幻觉⽽⽆法彻底根除」)。 2 3

  18. 出处:「第四章 大语言模型」第 184 段(text/10-ch04.txt:184,搜「三个阶段——Pretrain」)。

  19. 出处:「第四章 大语言模型」第 482 段(text/10-ch04.txt:482,搜「不断做作业」)。原文的完整比喻:预训练是把所有基础知识教给他,有监督微调是教他怎么读题、怎么解题,人类反馈强化学习就类似于真正的练习。

  20. 出处:「第四章 大语言模型」第 189 段(text/10-ch04.txt:189,搜「⼯程量最⼤的第⼀步」)与第 196 段(text/10-ch04.txt:196,搜「体量和资源消耗」)。

  21. 出处:「第四章 大语言模型」第 211 段(text/10-ch04.txt:211,搜「BERT-base」)至第 219 段(text/10-ch04.txt:219,搜「GPT-3 96」)的表格。

  22. 出处:「第四章 大语言模型」第 221 段(text/10-ch04.txt:221,搜「Scaling Law」)、第 222 段(text/10-ch04.txt:222,搜「1.7倍」)、第 223 段(text/10-ch04.txt:223,搜「20倍 token」)。 2

  23. 补充(不在书里):《Scaling Laws for Neural Language Models》,第一作者 Jared Kaplan,首次公开于 2020 年 1 月 23 日。摘要说损失随模型规模、数据集规模和计算量呈幂律下降,跨越七个数量级以上;并明确写道「更大的模型样本效率显著更高,因此计算最优的训练方式是:训练非常大的模型、用相对不多的数据,并在远未收敛时就停下」。来源:https://arxiv.org/abs/2001.08361(查阅于 2026-08-25)。

  24. 补充(不在书里):《Training Compute-Optimal Large Language Models》,第一作者 Jordan Hoffmann,首次公开于 2022 年 3 月 29 日。摘要的结论是「模型规模每翻一倍,训练标记数也应翻一倍」;验证方式是用 700 亿参数的 Chinchilla 在相同算力预算下胜过 2800 亿参数的 Gopher,并在 MMLU 上取得 67.5% 的平均准确率。来源:https://arxiv.org/abs/2203.15556(查阅于 2026-08-25)。

  25. 出处:「第四章 大语言模型」第 228 段(text/10-ch04.txt:228,搜「1024张 A100 训练⼀个多⽉」)。

  26. 出处:「第四章 大语言模型」第 232 段(text/10-ch04.txt:232,搜「数据并⾏」)、第 237 段(text/10-ch04.txt:237,搜「收集所有实例的」)、第 241 段(text/10-ch04.txt:241,搜「模型并⾏」)。

  27. 出处:「第四章 大语言模型」第 245 段(text/10-ch04.txt:245,搜「张量并⾏」)。

  28. 出处:「第四章 大语言模型」第 253 段(text/10-ch04.txt:253,搜「Model States」)与第 257 段(text/10-ch04.txt:257,搜「Residual States」)。补充(不在书里,来自通用知识):Adam 是最常用的一种优化器,它为每个参数额外维护两个统计量,所以在混合精度训练下它的状态占用是参数本身的数倍。

  29. 出处:「第四章 大语言模型」第 261 段(text/10-ch04.txt:261,搜「ZeRO-1」)与第 269 段(text/10-ch04.txt:269,搜「ZeRO-1 最⾼」)。 2

  30. 补充(不在书里):《ZeRO: Memory Optimizations Toward Training Trillion Parameter Models》,作者 Samyam Rajbhandari、Jeff Rasley、Olatunji Ruwase、Yuxiong He,首次公开于 2019 年 10 月 4 日。摘要的主张是「消除数据并行与模型并行训练中的显存冗余,同时保持低通信量和高计算粒度」,并提到用它做出了当时世界最大的语言模型 Turing-NLG(170 亿参数)。来源:https://arxiv.org/abs/1910.02054(查阅于 2026-08-25)。

  31. 出处:「第四章 大语言模型」第 273 段(text/10-ch04.txt:273,搜「预训练过程中学会的」)。

  32. 出处:「第四章 大语言模型」第 277 段(text/10-ch04.txt:277,搜「核⼼秘籍」)与第 282 至 294 段的表格(text/10-ch04.txt:282,搜「CommonCrawl」)。 2

  33. 出处:「第四章 大语言模型」第 296 段(text/10-ch04.txt:296,搜「训练⼀个中⽂ LLM」)。

  34. 出处:「第四章 大语言模型」第 301 段(text/10-ch04.txt:301,搜「质量往往⽐体量更加重」)、第 305 段(text/10-ch04.txt:305,搜「URL 过滤」)、第 308 段(text/10-ch04.txt:308,搜「语料过滤」)、第 312 段(text/10-ch04.txt:312,搜「语料去重」)。 2

  35. 出处:「第四章 大语言模型」第 317 段(text/10-ch04.txt:317,搜「SlimPajama」)。原文:实验证明高质量的 6270 亿标记数据集能获得比 1 万亿标记数据集更好的效果。

  36. 出处:「第四章 大语言模型」第 322 段(text/10-ch04.txt:322,搜「博览群书」)与第 324 段(text/10-ch04.txt:324,搜「⽆法与其他下游任务或是⽤户指令适配」)。 2

  37. 出处:「第四章 大语言模型」第 326 段(text/10-ch04.txt:326,搜「Supervised Fine-Tuning」)、第 332 段(text/10-ch04.txt:332,搜「通⽤」)、第 335 段(text/10-ch04.txt:335,搜「所谓指令微调」)。 2

  38. 出处:「第四章 大语言模型」第 345 段(text/10-ch04.txt:345,搜「500~1000」)与第 348 段(text/10-ch04.txt:348,搜「数 B token 左右」)。

  39. 出处:「第四章 大语言模型」第 351 段(text/10-ch04.txt:351,搜「InstructGPT」)与第 355 至 373 段的表格(text/10-ch04.txt:355,搜「45.6%」)。

  40. 出处:「第四章 大语言模型」第 375 段(text/10-ch04.txt:375,搜「较⾼的获取难度」)与第 379 段(text/10-ch04.txt:379,搜「种⼦ Prompt」)。 2 3

  41. 出处:「第四章 大语言模型」第 384 段(text/10-ch04.txt:384,搜「instruction」)与第 392 段(text/10-ch04.txt:392,搜「翻译成英⽂」)。

  42. 出处:「第四章 大语言模型」第 400 段(text/10-ch04.txt:400,搜「Instruction:」)与第 405 段(text/10-ch04.txt:405,搜「Response」)。

  43. 出处:「第四章 大语言模型」第 412 段(text/10-ch04.txt:412,搜「input + output」)。原文:「模型预测的结果不仅是 output,而应该是 input + output,只不过 input 部分不参与 loss 的计算」。

  44. 出处:「第四章 大语言模型」第 415 段(text/10-ch04.txt:415,搜「多轮对话」)与第 431 段(text/10-ch04.txt:431,搜「与预训练是没有关系的」)。 2

  45. 出处:「第四章 大语言模型」第 437 段(text/10-ch04.txt:437,搜「三种⽅式」)与第 459 段(text/10-ch04.txt:459,搜「第三种⽅式是最合理」)。原文给的理由:模型本质还是做因果语言模型任务、进行单向注意力计算,预测时从左到右依次拟合,前轮的输出预测不会影响后轮的预测。 2 3

  46. 出处:「第四章 大语言模型」第 465 段(text/10-ch04.txt:465,搜「Reinforcement Learning from Human Feedback」)与第 467 段(text/10-ch04.txt:467,搜「对⻬(alignment)」)。 2 3

  47. 出处:「第四章 大语言模型」第 477 段(text/10-ch04.txt:477,搜「智能体怎么在复杂」)。 2

  48. 出处:「第四章 大语言模型」第 489 段(text/10-ch04.txt:489,搜「RM,Reward Model」)与第 491 段(text/10-ch04.txt:491,搜「本质上是⼀个⽂本分类模型」)。 2

  49. 出处:「第四章 大语言模型」第 497 段(text/10-ch04.txt:497,搜「数值形式的标量奖励」)。原文:标注者之间存在价值观差异,数值形式的标量奖励会把这些差异放大,导致模型难以拟合到正确的标量奖励;所以往往改成对同一条提示下的不同回复排名,再把排名转成奖励。 2

  50. 出处:「第四章 大语言模型」第 504 段(text/10-ch04.txt:504,搜「chosen」)与第 513 段(text/10-ch04.txt:513,搜「最⼤化 chosen_example」)。 2

  51. 出处:「第四章 大语言模型」第 516 段(text/10-ch04.txt:516,搜「175B 的 LLM 和 6B 的」)。原文明说「哪一种更好,至今尚没有定论」。

  52. 出处:「第四章 大语言模型」第 520 段(text/10-ch04.txt:520,搜「Proximal Policy Optimization」)。

  53. 出处:「第四章 大语言模型」第 524 段(text/10-ch04.txt:524,搜「四个模型」)。

  54. 出处:「第四章 大语言模型」第 531 段(text/10-ch04.txt:531,搜「Actor Model 和 Ref Model」)至第 548 段(text/10-ch04.txt:548,搜「actor loss 和 critic loss」)。补充(不在书里,来自通用知识):KL 散度是衡量两个概率分布相差多远的一个量,书里用了这个词但没有解释;在这里它度量的是被训练的模型偏离原模型有多远。

  55. 出处:「第四章 大语言模型」第 553 段(text/10-ch04.txt:553,搜「240G」)与第 555 段(text/10-ch04.txt:555,搜「丢失了 Pretrain 和 SFT 赋予的能⼒」)。 2

  56. 出处:「第四章 大语言模型」第 558 段(text/10-ch04.txt:558,搜「DPO」)与第 562 段(text/10-ch04.txt:562,搜「更简单易⽤的平替版本」)。 2 3

  57. 补充(不在书里):《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》,作者依次为 Rafael Rafailov、Archit Sharma、Eric Mitchell、Stefano Ermon、Christopher D. Manning、Chelsea Finn,首次公开于 2023 年 5 月 29 日。摘要的关键表述是:DPO 能以闭式解提取出最优策略,使标准的 RLHF 问题只用一个简单的分类损失就能求解,过程中不需要采样,也不需要大量调超参数。来源:https://arxiv.org/abs/2305.18290(查阅于 2026-08-25)。

  58. 补充(不在书里):《Training language models to follow instructions with human feedback》,前三位作者 Long Ouyang、Jeff Wu、Xu Jiang,首次公开于 2022 年 3 月 4 日。摘要里最有说服力的结果是:13 亿参数的 InstructGPT,其输出在人类评价中被认为优于 1750 亿参数的 GPT-3;方法正是书里讲的三步——用标注者示范做有监督微调、用人类比较数据训奖励模型、再用 PPO 做强化学习。来源:https://arxiv.org/abs/2203.02155(查阅于 2026-08-25)。