跳到主要内容

01-outline — The Craft of Post-Training 拆解切分(审后修订版)

原书 13 章、89 万字符(正文,不含目录与索引)。我们的拆解 20 章 + 总纲,每章 12k–25k 字符。

本版相对初版的十三处修改(审大纲的意见,逐条落实):

#改了什么
1原书 Ch12 拆成两章:18 视觉 + 19 声音、时间与其他模态(补回语音 + 视频/3D/传感器约 1.7 万字符)
215 章补两节:记忆管理agent 怎么评(补回原书 Ch9 两整节)
316 章补一节:领域推理(IRAC / 鉴别诊断),并给「思维树」留名
4章序换了:补课章从 03 提到 02,因为 01、02(原 02)通篇在用「参数 / 权重 / 激活」
5补课章补一节:输出是一张概率表,以及怎么从表里挑一个(温度)
608§1 从目录行换成那笔系统账(四个模型同时在显存里、约三倍)
701§4 与 12§3 的数对齐,并照实写明书里 24GB / 48GB 两处自相矛盾
820§2 取消(成熟度表进顶层全景);20§8 只留机制,不重述 §1
916§2 卸掉「奖励链条还是结论」,整块交给 16§5
1007 补 on-policy / off-policy(后面 09 三处都在用它,却从没讲过)
1117§2 拆两行、12§6 拆两行(生面孔密度超配额)
12全书主线第 11 步从并列清单改成一条对照(有没有外部裁判)
13补课章标题改口径;13 章补「三章技法怎么叠」;20 章补课程学习;末尾加「有意不覆盖」

切分依据是新词密度,不是字数。 原书章序基本可用,五处硬调整:

调整为什么
原书 Ch1 后半 + Ch2 前半合成我们的 03「提示词不够」与「改权重之前的三条便宜路」是同一段论证,拆开两头都不完整
补课章排到 02(原书 Ch2 的解剖节 + 切词节 + 书外补课)08:13 明说假定读者已懂反向传播与 Transformer;我们的读者不懂。它必须排在 01、03 之间——因为 03(改权重之前)整章在用「权重」「激活」
原书 Ch7(效率)拆成 11 / 12 / 13全书新词最密的一章之一(约 46 个承重词),一章塞不下
原书 Ch12(多模态)拆成 18 / 19一章七行装不下 7.7 万字符;而且拆开才装得下语音与视频/3D
原书 Ch2 的切词内容分两处落「token 是什么」进 02(内部机制),「领域词被切碎怎么办」进 14(领域适配手段)

不许合并的两章:02(补课章,拿掉后面全塌)、14(全书落点)。


一、全书一条主线(总纲第 3 节的骨架)

只读这一节、不看任何拆解章,也要能把这本书的主张复述出来。每一步先说上一步逼出了什么问题。

  1. 基础模型出厂时是「有能力、没目的」的原料。 它读遍了网页,能接着任何一句话写下去,但没人告诉过它该扮演谁、什么不能说。 逼出的问题:那把目的装进去这件事,凭什么轮到一家普通公司来干?
  2. 因为这是企业唯一能把自己的比较优势变现的那一层。 预训练拼的是钱和物流,推理拼的是工程优化,只有「它该怎么表现」关乎这家公司自己的判断。而「智能可以直接买」失败于三点:买来的不随你的规模长、供应商换代时你积累的东西会流失、人格租不来。 逼出的问题:那这家公司到底站在什么位置上?它既不是发烧友,也不是基础实验室。
  3. 它站在「关键中间层」。 后训练有三档尺度,卡住它们的东西各不相同:一张卡的那档卡在显存,几十上百张卡的那档卡在这笔账划不划算,几千张卡的那档卡在电力和厂房。企业在中间。而这一层是被技术造出来的——没有把 700 亿参数模型的微调从数据中心卡压到工作站卡上的那几项技法,中间层根本不存在。 逼出的问题:那是不是碰到问题就该微调?
  4. 不是。越便宜的越先试。 写提示词、外挂检索、教它引用检索到的文档、直接在推理时给它的中间数值加一个方向——四条路都比改权重便宜。真正把你逼到必须改权重的,是三类生产要求:每次输出口径要一致、措辞要过得了合规、内容要在你这个领域里真的准确。 逼出的问题:好,要改权重了。最便宜的改法是什么?
  5. 给它看示范(SFT)。一周能解决八成的问题。 但它有硬边界:有些品质你示范不出来。判据是一句话——「我能亲手为这个输入写出完美回答吗?」能,SFT 就够;只答得出「我看到好的能认出来」,SFT 就到头了。 逼出的问题:认得出、演不出的东西,怎么变成可以优化的目标?
  6. 训一个打分器(奖励模型)。 它真正的作用不是替人当代理,而是把「A 比 B 好」这种比较变成一个可以求导的量——变得可导,才谈得上优化。然后一边朝高分走,一边用一条绳拽住别离原来的自己太远。 逼出的问题:这套要同时在显存里养四个模型、约三倍开销,还不稳,有没有更便宜的?
  7. 有:DPO 把打分器消掉。 那条绳约束下的最优解有闭式表达,反解出奖励代回比较式,分母那一项恰好抵消——这就是它成立的全部理由。打分器没被消灭,只是变成隐式的:模型自己的概率比就是奖励。口径是举证责任在复杂度一侧:默认用便宜的,明确失败了才上贵的。 逼出的问题:等一下,你怎么知道它真的变好了?
  8. 评估的难是结构性的:算得出来的指标,和你真正想要的东西只有弱相关。 所以这里 Goodhart 定律格外毒,而且最毒的一层不是模型作弊——是指标会塑造做开发的那些人的行为。解药是三种口径一起看(自动指标、模型评判、人评),三者同升才算真进步,而它们发散本身就是最重要的信号逼出的问题:验过了,可这东西跑不动也养不起。
  9. 压。 用更少的位表示同一个模型、只训其中一小块、换个更小的模型、把服务本身做快。压到这里,第 3 步那句伏笔才被兑现:中间层之所以存在,正是因为这些技法把 700 亿参数的微调压进了单机可及的显卡。 逼出的问题:到这一步你手上仍然只是一个「通用但跑得动」的模型。它凭什么是你的?
  10. 领域适配——这是全书真正的落点。 病灶叫 fluently clueless:广度是拿深度换来的,而且模型的自信是普遍的、知识不是。企业最值钱的知识恰恰是写不下来的那部分。解法反直觉:别让专家写下他们知道的(他们做不到),让专家去判断——作者亲历的金融项目里,写手册的那批专家自己说不清规则,却对「哪个回答更好」高度一致。判断与产出是两种不同的认知过程。第 6 步那台偏好机器,在这里接上了企业最值钱的资产。 逼出的问题:这一套还能往外推到哪儿?
  11. 往外推的四步问的是同一个问题:谁来告诉它对不对。 有外部裁判的地方走得最远——工具的返回值、编译器、单元测试,反馈环可以按计算速度跑;没有外部裁判的地方,它只是在优化自己已经相信的东西。所以第 15、16 章是在给它找裁判(让它动手、让它想清楚),第 17、18、19 章是在演示裁判缺席时会烂成什么样(数据自己造会崩塌;多模态的自动指标压根不可靠,人评不是可选项)。 逼出的问题:那明年我到底该把钱投在哪?
  12. 只投「基线推进之后仍然差异化」的能力。 今天要微调才有的能力,明年可能提示词就够了;通用能力交给会自动变好的接口。最耐久的优势是专有数据加深度组织整合;最稀缺的资源不是算力也不是数据,是人。技法会全部换掉,不换的只有三条:数据质量压过数量、评估必须对着部署而不是对着基准、每个决定都是取舍且没有普遍最优。

二、全书统一的一条主走查

书本身的例子横跨医疗、法律、金融、制造,散得厉害。拆解统一用一条输入,二十章逐章往前推一步。

一家区域性健康保险公司,要一个模型来写「理赔拒付说明信」。 具体一份记录:保单号 P-4471 · 被保人 42 岁 · 申请项目「腰椎 MRI」 · 拒付理由代码 CT-06「未完成 6 周保守治疗」 · 依据保单第 7 条第 3 款。 要产出一封寄给被保人的说明信。

选它的理由:它同时压中书里那三类生产要求——每封信口径一致(一致性)、措辞过得了合规审查(合规)、引对保单条款(领域准确)。而且它天然长出后面几章要的东西:附件里有 MRI 影像(第 18 章)、有电话录音(第 19 章)、要去查保单系统(第 15 章)、真实历史信件只有 800 封(第 17 章)。

走查里凡不是书里给出的数,正文必须当场写明「这些数是为演示编的」。


三、章级切分总表

文件原书位置这一章回答什么
0101-why-post-training.md前言 · 导论 · Ch1 前半为什么这件事只能你自己干
0202-inside-the-model.mdCh2 §Transformer 解剖 + §切词 + 书外补课你要改的那些数长什么样
0303-before-changing-weights.mdCh1 后半 · Ch2 前半什么时候才轮到改权重
0404-what-fine-tuning-changes.mdCh2 后半微调到底改了什么、能改多远
0505-sft-mechanics.mdCh3 前半给它看示范,机制是什么
0606-sft-in-practice.mdCh3 后半把 SFT 真跑起来
0707-preference-and-reward-model.mdCh4 前半认得出、演不出的东西怎么变可优化
0808-ppo-and-kl.mdCh4 后半朝高分走,同时别走远
0909-dpo-family.mdCh5把打分器消掉
1010-evaluation.mdCh6你凭什么说它变好了
1111-quantization.mdCh7 §量化用更少的位装同一个模型
1212-peft-and-compression.mdCh7 §PEFT/蒸馏/剪枝只动一小部分
1313-serving.mdCh7 §服务 + §优化栈送到用户面前
1414-domain-adaptation.mdCh8让它变成你的(技法落点)
1515-agentic.mdCh9让它动手
1616-reasoning.mdCh10让它想清楚
1717-synthetic-data.mdCh11数据自己造
1818-multimodal-vision.mdCh12 §视觉让它看见
1919-beyond-vision.mdCh12 §语音 · §更远的前沿 · §跨模态声音、时间与其他模态
2020-what-to-invest-in.mdCh13 + 全书回收接下来投什么(战略落点)

四、节级大纲(一节一行:进来时以为 → 出去时知道)

01 为什么这件事只能你自己干

**主走查:**拿那份 P-4471 记录算一笔账——三档尺度各要几张卡、几千还是几百万,这家健康险公司落在哪一档。 承重词单开一节:「后训练」· 三种尺度与「关键中间层」。

  1. 进来:以为拿到开源模型就等于拿到产品 → 出去:知道它出厂时只会「接着往下写」,预训练给的是能力不是目的;「后训练」指的是它出厂之后被做的一切。
  2. 进来:以为后训练就是微调的别名 → 出去:知道后训练是个伞(含对齐、评估、部署优化),而「微调」专指权重真的被改动的那部分;分不清这两个词,后面每一章的成本判断都会错。
  3. 进来:以为要么是大厂的事、要么是玩票 → 出去:知道三档尺度卡在完全不同的东西上(显存 / 这笔账划不划算 / 电力与厂房),而企业在中间那档。
  4. 进来:以为「中间那档」天然存在 → 出去:知道它是被技法造出来的——光把 700 亿个参数装进显存就要 140GB(半精度),真要微调还得另外三笔账(第 06 章算);压完之后一张 48GB 的工作站卡就干得了,300 亿的一张两万块的 24GB 卡就够(伏笔:怎么压的,第 12 章还)。
  5. 进来:以为「买现成的智能」更划算 → 出去:知道它失败于买不出规模、知识会流失、人格租不来;而领域适配过的模型能过 VRIN 四条检验(有价值 / 稀缺 / 难仿 / 无替代)。

02 模型内部长什么样(原书假定读者已懂,我们整章补课)

**主走查:**那封信的第一句「您申请的腰椎 MRI 未获批准」在模型内部是怎么被算出来的,从切块一路走到吐出第一个词。 **承重词单开一节:**参数与「它当初怎么被调出来的」· 注意力。 **书外补充:**基础到本库自己的书架取(build-large-language-modelwhat-is-chatgpt-doinglittle-book-of-deep-learning),本章只讲后面各章真正要用到的那几件。

  1. 进来:以为模型里存着答案 → 出去:知道它是一大堆可调的数(参数),每吐一个词这些数全部参与一遍计算——这既是它慢它贵的原因,也是「微调」到底在改什么的答案。
  2. 进来:以为这些数是人设计的 → 出去:知道做法朴素得出奇:给题 → 看答得离对的差多远(损失)→ 把每个数朝「差得少一点」挪一丁点 → 换下一题,重复几万亿次;规则是这么试出来的副产品。
  3. 进来:以为模型读的是字和词 → 出去:知道一句话先被切成统计上常见的小块(token),「脑电图」这种专业词会被切得稀碎(GPT-4 把 electroencephalography 切成六块);每块换成一串数(嵌入)才进得去。
  4. 进来:以为每个词各算各的 → 出去:知道每个位置都会去看句子里的其他位置,按「跟我多有关系」打分再取走相应比例的信息(注意力),所以处理到「它」时取走的是「保守治疗」而不是「保单号」。
  5. **(新增)**进来:以为它「知道」下一个词 → 出去:知道它每一步吐出的是整个词表上的一张概率表(「未获」0.31、「不予」0.22、「已」0.04……),再按一条规则从表里挑一个;挑法可以永远取最高,也可以按概率抽签,抽签的松紧就是那个叫 temperature 的旋钮。这一行同时把 03§1「同一句问两遍答不一样」的债还掉,也给 05§3 的 loss 数值、08§4 的概率比、09§3 的隐式奖励、16§2 的自回归提供落点。
  6. 进来:以为一层层都在做同一件事 → 出去:知道层是分工的:早期层管局部句法,中层管抽象语义,后期层管任务预测——所以微调时后期层变化最大,这条直接决定第 04 章的冻结策略。
  7. 进来:以为事实存在某个地方 → 出去:知道每一层的贡献是叠加在同一条「残差流」上的,而前馈层像一张键值表(命中某种模式就取出某份信息);定点改写某条事实的研究工具(ROME/MEMIT)就建在这上面。

03 什么时候才轮到改权重

**主走查:**同一份 P-4471 记录,先用提示词写一封 → 换个说法就变卦 → 挂上检索能查到第 7 条但语气仍不稳 → 被三类生产要求逼到必须改权重。 **承重词单开一节:**检索增强(RAG)· 激活引导。

  1. 进来:以为提示词写得够细就够了 → 出去:知道它卡在三处硬约束(上下文装不下、举例子教不会复杂行为、同一句问两遍答不一样),而且「同一个提示在不同显卡上准确率差 9 个百分点」这种事真的会发生。
  2. 进来:以为模型学会了你举的那几个例子 → 出去:知道把例子里的标签随机打乱几乎不影响效果——它学到的是格式和标签空间,不是你以为的那个对应关系。
  3. 进来:以为「模型不知道就喂给它」 → 出去:知道外挂检索改的是它知道什么,微调改的是它怎么表现;要「准确且热情地推荐产品」是两件事都要,这条判据决定了后面所有选型。
  4. 进来:以为检索来的文档模型会好好用 → 出去:知道要专门训它「在有检索文档时怎么答、怎么无视无关文档、怎么逐字引用」,这条路(RAFT)比纯检索和纯微调都好。
  5. 进来:以为改行为只能改权重 → 出去:知道模型算一句话时产生的那串中间数值(第 02 章讲过它从哪来)里有可辨认的方向(正式语气、拒绝行为),推理时加减一个向量就能调制它;代价是它只能调制已有的行为,教不了新能力(这条能力守恒律第 16、17 章还会以更硬的形式回来)。
  6. 进来:以为选哪条路看效果 → 出去:知道要按最小干预原则走一张决策矩阵,还要把隐藏成本算进去——新底座半年出一代,快速变化的领域每 6–12 个月就要重训一次,以及为什么要留下模型卡、运行手册和决策记录。

04 微调到底改了什么、能改多远

**主走查:**拿 300 封精修过的历史拒付信去微调,学习率从 2e-5 提到 2e-4 会发生什么;训完之后模型答不出「法国首都是哪」意味着什么。 **承重词单开一节:**损失地形与「别走远」· 灾难性遗忘。 ★ 全书最重要的一条伏笔在这里立起来:「别走远」。 它后面换四个名字回来(第 05 章的低学习率、第 08 章的 KL 约束、第 12 章的低秩、第 20 章的持续学习)——原书从没说过它们是同一件事,这是我们相对原书最大的增值。

  1. 进来:以为微调就是继续训练,数据越多越好 → 出去:知道所有参数一起构成一个高维空间,训练是在这个空间的「地形」上往低处走;预训练已经把模型放在了一块宽而平的盆地里。
  2. 进来:以为学习率只是快慢旋钮 → 出去:知道它是「一步迈多大」——迈太大会直接跳出那块盆地,模型能力当场崩掉;所以微调的学习率通常比预训练低一个数量级。这就是「别走远」,给它命名。
  3. 进来:以为模型只会越训越好 → 出去:知道灾难性遗忘是机制不是意外,而且反直觉:10 亿到 70 亿参数这个范围内越大的模型忘得越厉害,规模不是防御;所以微调前要先列一张「必须存活」的清单做遗忘审计。
  4. 进来:以为要动就动全部 → 出去:知道只训最后四分之一的层就能拿到九成效果,冻住底部一半能省一半内存、快两到三成;三种冻结策略(固定 / 逐层解冻 / 按梯度自适应)各适合什么。
  5. 进来:以为选底座就是选最大的 → 出去:知道 700 亿参数模型用一千条例子能达到的效果,70 亿参数模型可能要一万条——但推理成本会终身伴随;还有许可这颗地雷(有的底座限制月活上限,而且许可条款会变)。

05 给它看示范:SFT 的机制

**主走查:**一份 P-4471 记录 + 一封人写的标准答复,怎么变成一条真正喂进去的训练样本(带完整的对话模板与损失掩码)。 **承重词单开一节:**teacher forcing 与误差复合 · 交叉熵与困惑度。

  1. 进来:以为要教模型新知识 → 出去:知道 SFT 教的是「碰到这种输入该怎么答」,机制和预训练一模一样、只换了数据;八成的问题一周就能解决,大多数团队绕远路才发现这件事。
  2. 进来:以为训练和使用是同一回事 → 出去:知道训练时每个位置都被喂真值(所以一次前向能同时监督整句),而推理时它接的是自己不完美的输出——它从来没练习过从自己的错误里爬出来这笔债第 15、16 章还)。
  3. 进来:以为 loss 只是个越小越好的数 → 出去:知道 loss 2.3 意味着正确那个词平均只拿到 0.1 的概率、1.8 意味着 0.165(信心涨了六成半);困惑度就是它取指数后的样子,读得出「模型在几个选项里猜」。
  4. 进来:以为把问答拼在一起喂就行 → 出去:知道损失只该落在回答上(落在问题上等于教它复述问题),而格式和底座的对话模板对不上,是微调失败最常见的原因
  5. 进来:以为数据越多越好 → 出去:知道 1000 条精挑的通常打得过 10000 条平庸的;先人工筛几百条建立「好数据长什么样」;重复样本会带来成倍的梯度信号,结果是背下来而不是学会。
  6. 进来:以为超参靠调 → 出去:知道几个关键旋钮各自在管什么:学习率低一档是为了留在盆地里(回指第 04 章),大批量梯度估得准但偏向陡峭的极小值、泛化差,序列打包省的是填充位。

06 把 SFT 真跑起来

**主走查:**这次训练要多少显存(70 亿参数 × 16 字节 ≈ 112GB),怎么变成一张 24GB 卡干得了的活;loss 曲线出现哪几种形状分别说明什么。 **承重词单开一节:**显存的四笔账 · 分片(把一个模型拆到多张卡上)。 **书外补充:**框架实现不重讲,指 ai-frontier-referencetrl / unsloth / accelerate 拆解。

  1. 进来:以为跑不动就换大卡 → 出去:知道显存是四笔账加起来的(参数 + 梯度 + 优化器状态 + 中间激活),半精度全量微调大约每个参数 16 字节,所以 70 亿参数要 112GB——这个数解释了后面所有省显存技法的动机,也回答了 01§4 那个 140GB 是怎么回事。
  2. 进来:以为半精度就是半精度 → 出去:知道两种半精度差别在小数位和指数位的分配,而训练要的是大动态范围,所以现代卡默认用 bf16 而不是 fp16。
  3. 进来:以为多卡就是快几倍 → 出去:知道有两类做法(每张卡各算一份数据然后汇总梯度,和把参数/梯度/优化器状态切开分给各卡),后者能把 80GB 的活塞进四张 24GB 卡;以及分布式独有的故障(死锁、静默发散、一卡爆全崩),所以先单卡跑通。
  4. 进来:以为 loss 在降就是好 → 出去:能对着一张诊断表读曲线:不降、狂抖、突刺、缓升、训练降验证升、训练接近零——训练 loss 接近零是警报不是成功
  5. 进来:以为验证就是跑评估 → 出去:知道验证分五个层级(看曲线要几秒、抽查生成要几分、几十条多样提示要几小时、对比测试、正式评估要几天),多数失败在前三层就被抓住;以及检查点该留几个、成本花在哪三处。
  6. 进来:以为效果不好就该上更高级的算法 → 出去:拿到一句能当场判的判据——「我能亲手为这个输入写出完美回答吗?」 能,就还是 SFT;只答得出「我看到好的能认出来」,才该毕业到下一章。

07 认得出、演不出:偏好与奖励模型

**主走查:**两封候选拒付信摆在合规专员面前,他选了 B;这一对数据怎么变成一个可以求导的损失。 **承重词单开一节:**奖励模型「把偏好变得可微」· reward hacking。 ★ CoastRunners 那条打转的船在这一章出场,后面还会以三个不同的名字回来(第 07 章末的 reward hacking、第 10 章的 Goodhart、第 16 章的写长作弊、第 17 章的自我改进回路)。

  1. 进来:以为强化学习是游戏 AI 的事 → 出去:先拿一条在泻湖里打转撞标靶的赛艇认识三个词(策略 / 奖励 / 跑一回合);它着火、从不完赛,得分却比人类高两成——「它精确地做了研究者要求的事,一件研究者想要的事都没做」。
  2. 进来:以为要教模型好坏就得写出好答案 → 出去:知道识别和生成是两种成本差着量级的认知操作:专家写一条示范要半小时、时薪五十到一百美元,而比较一对答案只要三十秒。
  3. **(新增,也可并进 §2)**进来:以为训练数据就是一堆现成的例子 → 出去:知道有两种拿数据的方式——让模型当场生成再评(能探到新地方,但每一步都要等它一个词一个词写完,慢且贵,叫 on-policy),和拿别人早就写好的一批固定数据(便宜,但只能学到这批数据覆盖到的地方,叫 off-policy);这一分岔后面决定了 PPO 与 DPO 的全部取舍(09§3、09§4、09§6 三处都在用它)。
  4. 进来:以为标注就是打分 → 出去:知道成对比较为什么胜过打分(十个人有十种「7 分」),信息量最大的比较是两个都像样的那种;以及一致率怎么量(某对齐数据集人际一致率约 63%,而 κ 低于 0.4 就该重写标注指南)。
  5. 进来:以为「A 比 B 好」没法拿去训练 → 出去:知道有个 1950 年代的锦标赛模型把它变成了一个可导的损失——奖励模型真正的作用不是替人当代理,而是把偏好变得可微,可微才谈得上优化。
  6. 进来:以为打分器给的分有绝对意义 → 出去:知道损失只看两个分的差,所有分一起加个常数结果不变——所以绝对尺度是任意的,要靠重新锚零点来固定;打分器准确率七成是经验线,而百分之百多半意味着它学会了表面特征。
  7. 进来:以为打分器准就够了 → 出去:知道模型会学会拿高分而不是变好,这和过拟合不同——它真学到了新东西,只是学错了任务;最常见的一种是偏爱长回答,以及防御为什么只能是纵深而不是根治。

08 朝高分走,同时别走远:PPO 与 KL

**主走查:**同一对偏好数据在这套流程里走一圈——打分 → 减基线得到优势 → 概率比裁剪 → 加上偏离惩罚。 **承重词单开一节:**优势与基线 · KL 约束。 ★ 「别走远」第二次回来(第 04 章立的名)。 顶层全景要交付的一句话: 这一章讲的是「缰绳怎么握」——朝高分走的同时不许离原来的自己太远。 **书外补充:**数学推导指 the-rlhf-book 对应章,本章只讲「为什么需要这一步」和工程取舍。

  1. **(改写)**进来:以为 PPO 是一个算法 → 出去:知道这一步要同时在显存里养四个模型(正在训的策略 / 冻住的参考 / 打分器 / 估「这局大概能得多少分」的价值网络),约三倍显存、四个都可能出问题——所以它既不稳又贵。09§1 的回指落在这里。
  2. 进来:以为要教模型必须知道正确动作 → 出去:知道策略梯度只需要知道「哪些做法结果好」,然后把导致好结果的做法的概率抬高一点——一个迷宫里的机器人就够解释清楚。
  3. 进来:以为奖励是正的就该强化 → 出去:知道奖励全是正数时所有做法都会被强化、学不到东西;减掉一个基线之后剩下的「比平均好多少」(优势)才是有用的信号,而且减基线不会让方向偏。
  4. 进来:以为每次更新越猛越好 → 出去:知道要把「新旧概率的比值」裁在一个小区间里(常用 0.8–1.2),意思是「可以进步,但别这么起劲」——一次跨太大等于跳出盆地。
  5. 进来:以为偏离惩罚是可有可无的正则项 → 出去:知道它有两个职责(限制作弊的探索范围 + 防遗忘),健康区间大概在 3–10,系数太高就不动、太低就漂——这是「别走远」的第二个名字
  6. 进来:以为出事了就调学习率 → 出去:拿到一张失败模式对照表和一个固定的排查顺序(先随机采样看打分器给的分对不对 → 再看偏离量 → 最后读输出);以及「有用 / 无害 / 诚实」三者本来就会相冲,权衡由偏好数据的构成决定。

09 把打分器消掉:DPO 一族

**主走查:**第 08 章那一对数据换到这条路上走一遍,和上一章并排看差在哪儿。 **承重词单开一节:**闭式解与「分母那一项抵消」(整章的命门,必须真讲透,不许只说结论)。

  1. 进来:以为偏好优化就得这么贵 → 出去:知道上一章那套要同时养四个模型、约三倍显存、还不稳(回指 08§1),所以 2023 年那篇论文出来时「整个领域松了一口气」。
  2. 进来:以为「不用打分器」是工程技巧 → 出去:能跟着走完那三步——带偏离约束的最优策略有闭式表达 → 把它反解出奖励 → 代进第 07 章那个比较式,归一化的那一项恰好在相减时抵消。这就是它成立的全部理由,不是经验,是代数。
  3. 进来:以为打分器被消灭了 → 出去:知道它只是变成隐式的:模型自己的概率比就是奖励;所以训起来像 SFT——不用打分器、不用训练中生成(off-policy,第 07 章讲过)、不用价值网络。
  4. 进来:以为便宜的等于更好的 → 出去:知道它的三个局限(表达能力上限、对参考模型的依赖会带来数值不稳、离线数据学不到新情境),以及大厂的经验:冲极限能力时它扩展性不如贵的那条路。
  5. 进来:以为只有这一种 → 出去:知道一族亲戚各治一病——不需要成对数据的那种(靠「丢掉比得到更痛」这条行为经济学发现)、用同一批采样的组内均值当基线从而免掉价值网络的那种(走查:两组奖励 8/7/9/8 与 3/2/4/3 归一化之后优势完全相同,所以难易不同的题对梯度贡献相等)、以及治梯度无界、治要额外一份模型、治偏爱短回答的三种。
  6. 进来:以为选算法看排行榜 → 出去:知道这是匹配问题不是排名问题(在线/离线、探索、分布漂移、算力、数据五个维度),而且有一条能当场用的口径:举证责任在复杂度一侧——便宜的当默认,明确失败了才上贵的。

10 你凭什么说它变好了

**主走查:**新模型的 BLEU 涨了 0.04,合规专员却说更差——三角测量怎么判这一局。 **承重词单开一节:**Goodhart 的两种(模型作弊 / 人作弊)· 三角测量。 ★ GPT-4o 那件事第二次出现:第 01 章用它证明人格是后训练的产物,这里用它证明基准不是目标。

  1. 进来:以为评估就是找个指标 → 出去:知道难是结构性的——「猫坐在航天飞机上」和一串乱码错得完全不是一回事,而任何能自动算的指标都分不清;能算的东西和你要的东西只有弱相关。
  2. 进来:以为 Goodhart 说的是模型会作弊 → 出去:知道还有更毒的一层——指标会塑造做开发的那些人的行为:拿困惑度做决策的团队,会做出一串降困惑度但不提升质量的选择,而且他们不觉得自己在作弊(回指 07§7:那是模型对着打分器作弊,这里是人对着指标作弊)。
  3. 进来:以为要找到那个最对的指标 → 出去:知道正确做法是三种口径一起看(自动指标几秒、模型评判几分钟、人评几小时到几天,经验用量比大约 1000💯10),三者同升才算真进步,而它们发散本身就是最重要的信号
  4. 进来:以为自动指标能测质量 → 出去:知道每种各测什么、各漏什么(比词的重合、比语义向量、比流畅度、比通过率),以及基准会饱和——某代码基准从 28% 涨到九成以上,而它的加强版把同一批模型从 96% 打回 76%。
  5. 进来:以为让强模型当裁判就客观了 → 出去:知道四种偏差(偏长、偏和自己像的风格、偏位置、偏自信)和各自的对策;裁判至少要和被评的一样强,同族评判会共享盲点。
  6. 进来:以为人评是金标准 → 出去:知道人评也要统计:一致率只有六成时,55% 对 50% 的胜率差别整个落在噪声里;一次 A/B 每组约需一千个样本;中途偷看结果会膨胀假阳性。
  7. 进来:以为用公开基准就够了 → 出去:知道真正算数的是你自己的那套(50–100 条起步,每个部署周期把新暴露的失败加进去,一年内长成精准资产),以及污染的四条泄漏路径——包括「看着评估结果改训练数据」这种没人觉得是作弊的做法。

11 用更少的位装同一个模型:量化

**主走查:**那个 70 亿参数模型里的一组权重被压成 4 位的实际过程,以及压完之后困惑度动了多少、什么幅度该报警。 **承重词单开一节:**量化(位宽与表示范围)· 校准。

  1. 进来:以为模型大小是固定的 → 出去:知道每个数用多少位存是可选的,一层层降下去(32 位 → 16 位 → 8 位 → 4 位:能表示的取值从几十亿降到 16 个),而 4 位「好用得出人意料」。
  2. 进来:以为压到 4 位就是粗暴取整 → 出去:能跟着走一遍——一小组权重共用一个缩放系数,组内各自取到最近的那 16 个格点上;所以真正决定质量的是「组分多大」和「格点怎么摆」。
  3. 进来:以为方法都差不多 → 出去:知道分两族——要拿几百条样本试跑一遍再定参数的(逐层最小化重建误差的、专门保护那些会乘上大激活值的 1% 权重的),和不用试跑直接换表示的;前者一般好 1 到 2 个百分点,位数越低差得越多。
  4. 进来:以为下载下来的模型文件名是随便起的 → 出去:能读懂 Q4_K_MIQ2_XXS 这类后缀分别是什么意思,以及一条选型启发:在放得下(还要留出对话缓存的空间)的前提下选最高位数。
  5. 进来:以为压完跑得通就是没坏 → 出去:知道困惑度是第一道防线但它恰恰漏掉罕见能力(它被常见模式主导),所以要接一道三级质量门:困惑度涨幅 → 基准回归幅度 → 任务验收;门槛按用途定,闲聊和急诊分诊不是一个标准。

12 只动一小部分:LoRA 一族、合并、蒸馏、剪枝

**主走查:**给那一层 4096×4096 的权重挂上一个秩为 16 的旁路,可训练的数就从 1677 万降到 13 万;再把底座压成 4 位,这次微调从「装都装不下」变成一张卡的活。 **承重词单开一节:**低秩(权重的变化「没那么多维」)· QLoRA。 ★ 「别走远」第三次回来(低秩就是「只准在一个低维子空间里动」);★ 第 01 章那句伏笔在这里兑现:关键中间层因这项技法才存在。 **书外补充:**数学与实现指 ai-frontier-referencepeft#01-lora-mathunsloth;本章讲的是为什么这么做有效。

  1. 进来:以为微调就得动全部参数 → 出去:知道一个反直觉的观察:微调带来的变化量其实只在很少几个方向上——既然如此,就没必要为它准备一整个矩阵那么多的自由度。
  2. 进来:以为省参数会牺牲效果 → 出去:能跟着算一遍:把变化量写成两个瘦长矩阵相乘,4096×4096 的一层在秩 16 时只需要 13 万个数(省一百多倍),而底座权重原封不动、推理时可以合并回去不留延迟。
  3. 进来:以为省显存到此为止 → 出去:知道再把底座本身压成 4 位、只让那一小块旁路保持高精度,两种省法相乘——书里给的数是 300 亿进 24GB、700 亿要 48GB 以上;书里另一处又说 QLoRA 之后 70B 落到 24GB 卡,两处对不上,我们照实写明;而且这样调出来的 700 亿,通常打得过全量调出来的 70 亿。01§4 那笔伏笔在这里兑现。
  4. 进来:以为只有这一种省法 → 出去:知道一族亲戚各自的取舍(把权重拆成大小与方向只调方向的、只在输入端加一小段可训向量的、按重要性动态分配预算的),以及一条口径:默认用最朴素的那种,有证据不足才换。
  5. 进来:以为两个模型的能力没法合并 → 出去:知道权重空间里可以做加减法(取两个微调结果的加权平均、只保留变化大的并按符号投票、随机丢弃一部分变化再放大),它合并不了根本冲突,但在能合并时极其划算。
  6. (拆分)进来:以为让小模型学大模型就是拿大模型的答案训 → 出去:知道大模型给出的整个概率分布比一个标准答案多带了信息(狗 0.9 / 狼 0.05 / 郊狼 0.02 里有相似性结构);学生超不了老师,差距太大只学到表面,适度差距(70 亿学 700 亿)最好。
  7. **(拆分)**进来:以为训练出来的网络每个数都在干活 → 出去:知道大多是冗余的,可以按幅度或按整块剪掉(但小权重乘上大激活可能仍然重要),而且稀疏要硬件吃得下才真省时间;「彩票假设」和低秩是同一个直觉的两种说法。

13 送到用户面前

**主走查:**一百个坐席同时要信,第一封 2 秒出来,第一百封要等多久;每一步优化各砍掉了什么。 **承重词单开一节:**KV cache(为什么生成第二个词比第一个便宜)。 **书外补充:**实现指 ai-frontier-referencevllm#01-paged-attention-kv-cache#02-continuous-batching-scheduler,本章只讲原理与账。

  1. 进来:以为每生成一个词都要把整句重算一遍 → 出去:知道前面每个位置算过的中间结果会被存下来复用(所以第二个词比第一个便宜),代价是这份缓存会随对话变长而吃掉显存。
  2. 进来:以为显存不够是模型太大 → 出去:知道很多时候是这份缓存被切得七零八落浪费掉了,把它按固定大小的页来管、用一张页表拼接(和操作系统管内存是同一个主意),就能把浪费收回来。
  3. 进来:以为一批请求要一起开始一起结束 → 出去:知道谁写完谁的位置立刻补进新请求(而不是等整批写完),吞吐能大幅上去;以及另一类优化省的是「不把中间那张大表实体化出来」。
  4. 进来:以为只能等大模型一个词一个词吐 → 出去:知道可以让小模型先猜五个词、大模型一次性验完(对就一次前进五步);以及硬件分层和「最小可用模型」——别从「刚好放得下」的最大模型起步,几亿参数的模型在抽取、分类、函数调用这类受约束任务上常常和 70 亿的差不多。
  5. **(新增)**进来:以为这些技法各用各的 → 出去:知道 11、12、13 三章的技法是叠着用的(4 位量化 + QLoRA 微调 + 连续批处理 + 投机解码),拿主走查算一遍各省了哪一笔,以及为什么 4 位仍能保住九成五以上的能力。

14 让它变成你的:领域适配 ★ 技法落点,写最厚

主走查:「本公司历来怎么解释模棱两可的第 7 条第 3 款」——这件没人写下来的事怎么灌进模型;五层验证在这封信上分别查什么;上线先给 10% 流量。 **承重词单开一节:**fluently clueless 与默会知识 · 「让专家判断,而不是让专家写」。 ★ 「别走远」第四次回来(数据混合比是第二个学习率);★ 第 07 章那台偏好机器在这里接上企业最值钱的资产。

  1. 进来:以为模型答得像模像样就是懂 → 出去:知道病灶叫 fluently clueless——广度是拿深度换来的,它会混淆药物类别、引用过时指南,而它的自信是普遍的、知识不是;它甚至不知道自己缺哪一块。
  2. 进来:以为把专家知道的写下来喂给它就行 → 出去:知道机构知识有三种形态(显性文档 / 隐含在系统和决策模式里的 / 会做但说不出的),最值钱的恰恰是第三种;以及一个冷战后失传、花五年数百万美元才逆向回来的真实例子说明这种流失有多贵。
  3. 进来:以为说不出就没辙 → 出去:知道别让专家写,让专家判断——作者亲历的金融项目里,写手册的正是那批专家,他们自己说不清规则,却对「哪个回答更好」高度一致;判断与产出是两种不同的认知过程,而第 07 章那套机器要的恰好只是判断。(与 07§2 的分工写死:07 讲的是两种操作的成本差,14 讲的是「写不出来」这件事本身——不是同一个论点。
  4. 进来:以为领域适配只有微调一条路 → 出去:知道有一条五级阶梯(提示 → 检索 → 领域 SFT 几百到几千例 → 继续预训练数十亿 token → 领域偏好优化),以及词表这一层能做什么:领域术语被切得稀碎时可以扩词表、甚至干脆拿 token 去表示别的东西(某医疗系统用 7105 个 token 表示临床概念)。
  5. 进来:以为往领域上训只要喂领域数据 → 出去:知道混合比是「第二个学习率」(起手大约七成领域、三成通用),只盯领域指标是最常见的错;这是「别走远」在数据这一侧的样子。
  6. 进来:以为合规只能写成规则去检查 → 出去:知道「清楚且不误导」这类标准编不成规则、但人一看就判得出,于是它可以变成奖励信号;领域打分器能超过示范的质量,还能把多位合规专家的判断融成比任何单个人都更一致的一套。
  7. 进来:以为上线前跑个基准就行 → 出去:拿到五层验证各查什么(领域困惑度只当闸门不当分数 → 遮住领域术语看它填不填得回来 → 结构化抽取的准确率与召回 → 强制二选一的辨别探针 → 它知不知道自己不知道);以及金丝雀用户是养出来的不是找出来的、留出约一成流量、怎么回退。
  8. 进来:以为微调完就完了 → 出去:知道「你 2024 年微调的模型是 2026 年的遗留系统」——模型是持续的资产不是一次性项目,要有登记、监控、维护和退役预算,而应急永远比计划维护贵。

15 让它动手:工具调用与 agent

**主走查:**让它自己去查保单系统和理赔历史,第三步工具超时了会发生什么;以及只给它读权限、不给写权限意味着什么。 **承重词单开一节:**交错生成(工具调用真正难的地方)· 误差复合(0.9 的 n 次方)。 ★ 第 05 章 teacher forcing 欠的债在这里还:只训成功轨迹的模型不会从错误里恢复。

  1. 进来:以为工具调用是模型自己在联网 → 出去:知道全过程是:你用一份结构化说明书描述工具 → 模型生成一次调用 → 你的基础设施去解析、校验、执行、把结果塞回去 → 模型接着写;「模型表达意图,基础设施决定许可」。
  2. 进来:以为难点是让它会写 JSON → 出去:知道难在来回切换——自由文本 → 结构化调用 → 交出控制权 → 读回一段它无法预测的结果 → 再接回自由文本,每个切换点都是失败点(格式坏、参数错、无视工具结果继续编)。
  3. 进来:以为工具描述是给人看的文档 → 出去:知道它就是提示词工程:「搜索网页」远不如「当问题需要超出知识截止时间的信息时用它」;参数说明里的取值范围和枚举是模型违反不了的约束,边界情况(没结果返回空 / 高负载会超时)必须写进去。
  4. 进来:以为拿成功的轨迹训就够了 → 出去:知道那样训出来的模型会无视错误、编造工具结果、死循环重试或者直接放弃——必须故意注入失败(参数错就改参重试、工具挂了换备选、超时就等、真没救就承认);还要专门教它「哪个工具别动」,做法是把正确工具从可用集合里拿掉、重新标成「不需要工具」。
  5. 进来:以为多步就是把单步接起来 → 出去:能算清那笔账——每步九成正确,十步全对只剩三成半;这条算术同时解释了后面两章的三件事(为什么要过程奖励、为什么有组合性墙、为什么长链反而更差),所以在这里讲透,后面只回指。
  6. 进来:以为计划是模型自己用的 → 出去:知道计划首先是给人看的——「要求它先说计划再动手,比任何事后分析都能抓到更多问题」;作者亲历的药物研发 agent 里,偏好数据奖励的是「先查毒性再往下走」这种计划顺序。
  7. **(新增)**进来:以为上下文窗口就是它的记忆 → 出去:知道记忆分三层(上下文窗口是隐式短期记忆 / 外部记忆库 / 显式状态跟踪像一张清单),而且训练数据要专门示范「何时存、何时取、怎么调和过时信息」——主走查上就是「它第二次又去查同一份保单」。
  8. 进来:以为安全靠把模型训乖 → 出去:知道是三层栈(基础设施的沙箱是硬限制 / 训练让它不愿做 / 高风险动作要人批准),而最小权限压过一切:「不提供的能力不会被滥用」;「防止误删文件最安全的办法是不给删除权限,次好是需要用户确认,没有第三好的办法」。
  9. (新增)进来:以为 agent 好不好看它步骤对不对 → 出去:知道要按结果而不是按动作评(按动作评等于逼它模仿你的解法),还要看效率(几步、调了几次工具、花了多少 token、多少墙钟时间);三个基准各测什么(真实 GitHub 问题 / 真实网站 / 多步跨工具且抗捷径);以及红队的三种攻法(伪装成合法任务、把指令藏在数据里、多步渐进)。

16 让它想清楚:推理

**主走查:**让它把「六周保守治疗」的适用条件逐条推一遍;看它在第 4 步悄悄把「保守治疗」换回了自己的默认定义。 **承重词单开一节:**过程奖励与结果奖励的分别 · 可验证奖励。 ★ 第 15 章那条 0.9 的 n 次方第二次出现;★ 能力守恒律第二次(组合性墙)。

  1. 进来:以为「一步一步想」就是让它多说几句 → 出去:知道它有效但不可靠——模型可能先定了答案再倒着编步骤(事后合理化),而如果推理过程根本不影响答案,把它展示出来只是虚假的保证;2024 年秋天之后,推理从提示技巧变成了可训练的能力。
  2. **(减负)**进来:以为训推理就是训它输出更长 → 出去:知道自回归结构下最近几千个 token 就是它的草稿纸(把中间步骤写出来等于换到了更多计算),以及草稿要不要给用户看是一条要明文写死的政策(全披露 / 隐藏 / 摘要给用户全轨迹给调试)。奖励该给谁,第 5 节讲。
  3. 进来:以为想得越久越好 → 出去:知道准确率和链长是倒 U 形(每步 95% 正确,十步剩六成、二十步剩三成六,回指 15§5),而且模型会学到「写长 = 高分」,三步能解的题写十五步;粗暴地罚长度给不出有用的梯度,要按题目难度分级。
  4. 进来:以为推错了它会往回改 → 出去:知道写进链条的东西抹不掉,最典型的一种失误是它用自己的默认定义替换掉合同里约定的术语(作者亲历的租赁协议项目每次推理都冒这个险);对策是给推理步设检查点、按清单逐项给分、周期性地重新核对前提。
  5. 进来:以为只要答案对就该给奖励 → 出去:知道只看终点会奖励「错的理由得出对的答案」,而逐步给分能把功劳分到步上,还能在一堆全错的链里挑出「更接近对」的那条;步级标注可以人工做(八十万条),也可以让模型从每一步往下采样多条、用「通向正确答案的比例」自动算出来;某一步的把握低于 0.7 就该剪掉换路(让它同时展开几条路、按每步把握剪枝,这种做法叫思维树)。
  6. **(新增)**进来:以为推理就是一种通用的「想清楚」 → 出去:知道推理的形状随领域变:法律是四步(争点 / 规则 / 适用 / 结论,叫 IRAC),拿它走一遍 P-4471 那封信能把整章串起来,而且这个结构把某司法考试基准从约 70% 提到 81% 以上;临床是另一种形状(病史 → 鉴别诊断排序 → 假设检验 → 逐步更新);金融是定量严谨加定性判断。
  7. 进来:以为奖励总得人来给 → 出去:知道在可验证的领域里编译器和证明检查器就是打分器,反馈环以计算速度运行;代价是极端不对称(一次步级证明训练约两万一千个 CPU 天,而且「95% 正确的证明在形式数学里等于 100% 错误」)。
  8. 进来:以为算力只花在训练上 → 出去:知道推理时的算力和预训练算力部分可以互换——按难度分配比均匀多采样效率高四倍,小模型加足够的推理算力能胜过十四倍大的模型;「你看到的不是最先进,是最付得起的」。
  9. 进来:以为多训数据就能突破 → 出去:知道有一堵组合性墙——会做三步题却败在五步题,因为它学到的不是「证明步骤」而是「三步证明」;这时正确做法是求救(交给工具),而不是继续加数据。

17 数据自己造:合成与自博弈

**主走查:**真实拒付信只有 800 封,要扩到 2 万条;以及为什么第三轮之后那些罕见的拒付理由从数据里消失了。 **承重词单开一节:**模型崩塌 · 拿模型当标注员(RLAIF)。 ★ 能力守恒律第三次,也是最硬的一次:模型无法为它不具备的能力生成训练信号。

  1. 进来:以为合成数据是凑数用的次品 → 出去:知道它把约束从「稀缺的人」换成了「充裕的算力」,而且判据不是「像不像人写的」,是训出来的模型有没有变好;质量看三维:对不对、够不够杂、像不像真实部署条件。
  2. (拆分)进来:以为合成就是让模型多写点 → 出去:知道怎么从少量种子长出量:175 条人写的种子指令自举出 5.2 万条(某基准绝对提升 33 个百分点),再把已有指令「进化」成更复杂的变体。
  3. (拆分)进来:以为量够了就行 → 出去:知道要专门造:十亿个虚拟身份治「只有一个默认视角」、只喂模板让模型自己幻觉出用户问题、把内容合成成结构化教材、把网页改写成几种体裁(预训练加速约三倍)。
  4. 进来:以为生成越多越好 → 出去:知道过滤就是信噪分离——「砍到只剩最好的一半」常常训得比全量好,因为低质样例是噪声;SFT 该激进过滤,而带奖励信号的训练可以宽松些。
  5. 进来:以为标注只能人做 → 出去:能算清那笔效率账(一个人写一部原则清单,产生的训练信号覆盖数百万样例;一个人标偏好一天大约一百条),以及一条两问的适用性判据:评估模型分得出好坏吗?它说的「更好」等于人说的「更好」吗?——事实准确类常常通过,说服力和有用性这类必须先实测。
  6. 进来:以为模型可以自己教自己无限变强 → 出去:知道这个愿景「只存在于经费申请书里」——模型无法为它不具备的能力生成训练信号;数学弱的模型生成并「验证」不了证明,拿它错误的验证去训,训出来的是「看着很数学但答案是错的」;自博弈的天花板就是人类参考数据的质量,而「把正确答案告诉它、让它倒推理由」是少数能钻出一条缝的做法。
  7. 进来:以为最坏结果是数据没用 → 出去:知道崩塌是不可逆的(2024 年发表在《自然》上,跨架构成立):先丢尾巴(罕见样例、少数视角、边缘情形),再整体收窄到自信、流利、错得它自己发现不了;所以保有高质量人类数据当分布锚的组织有结构性优势,而合成数据的正确角色是增补不是替代。
  8. 进来:以为跑个脚本就是流水线 → 出去:知道生产化要四段(生成 → 质量关卡 → 存储 → 版本与溯源),溯源才让局部重跑成为可能;以及现成工具各补哪一段(偏策展的、偏端到端的、专管字段之间相关性的)。

18 让它看见:视觉

**主走查:**理赔材料里附的那张腰椎 MRI 进模型走一遍(用书里放射科那套真实配方的数字:4 位加载、冻住视觉编码器、投影层全训、语言层挂秩 16 的旁路、单张 24GB 卡、几千条训 500–1000 步)。 **承重词单开一节:**投影层(为什么它是甜点)· 视觉幻觉。

  1. 进来:以为处理图像要另一套模型 → 出去:知道是同一副骨架换个前端:视觉编码器把图变成一串数 → 投影层把这串数搬进语言模型的表示空间 → 语言模型照常往下写;输出序列全是文字;图被切成小方块的做法和第 02 章的切词是同一个主意。
  2. 进来:以为要训整个模型 → 出去:知道投影层往往是甜点(参数够多能有意义地适配、够少能在有限数据上训),而冻不冻语言主干是最要命的决定;一张对照表给出五种策略各要多少数据、各冒什么险。
  3. 进来:以为视觉指令微调是全新的东西 → 出去:知道语言模型已经会跟随指令、编码器已经会表示图像,难的只是把两者连起来;损失只在回答上算(在视觉 token 上算等于教它去生成图像,那不是目的)。
  4. 进来:以为有图在旁边幻觉会少 → 出去:知道恰恰更难察觉——人看到图就在旁边反而更信那段描述;最阴险的是歧义信号(经典的鸭兔图:被训成「不容忍歧义」的模型会说是鸭或是兔,而正确答案是两者都不是),要靠在歧义样例上做偏好优化,而大多数训练集和标注员都在奖励自信、具体的回答
  5. 进来:以为多模态的瓶颈是算力 → 出去:知道是标注:每条要同时满足感知与语言两个约束,通常贵两到三倍;领域专长与标注技能的交集更小;而一个可行的杠杆是让强模型出草稿、专家复核(放射科医生从零标注每小时 10 张,复核修正每小时 40 张)。
  6. 进来:以为自动指标能验 → 出去:知道纯文本上还算靠谱的那些指标在这里失灵——领域训练与指令对齐叠加会互相干扰,表面指标下降而诊断准确率在上升;所以人评在这里不是可选项
  7. 进来:以为跑到 90% 的基准分就能上临床 → 出去:知道书里那条明确的警告:基准准确率测的是标准化问题加无歧义答案,而真实放射学是歧义、不确定性与病史整合;监管要的临床验证与持续监测,成本让微调那点投入相形见绌。

19 声音、时间与其他模态

**主走查:**理赔电话录音里那句「我做了六周理疗」被转写错了会怎样;以及同一封信要不要接上事故现场的视频。 **承重词单开一节:**语码转换 · 跨模态特征漂移。

  1. 进来:以为语音就是把声音转成字 → 出去:知道语音承载的远不止词(说话人身份、情绪、强调、犹豫),而通用转写模型规律性地在领域术语上翻车——书里的例子是把陪审员遴选程序 voir dire 转成 war deer,混进诉状里就一点都不好笑;「95% 准确、却把承载最多意义的那 5% 搞错」的系统可能比没有还糟。
  2. 进来:以为语音微调要海量数据 → 出去:知道几十小时精心转写的领域音频就能显著改善领域词汇识别,几百小时能接近人类准确率;但转写必须完美(训练数据里的错就是模型里的错),声学条件必须匹配部署(录音棚里训的模型到嘈杂诊室仍会吃力)。
  3. 进来:以为情绪是玄学 → 出去:知道副语言可以被训成标注(区分生气的来电者与满意的、焦虑的病人与平静的),用于客服路由与升级;以及声音克隆是同一项技术的两面,负责任的部署要主动加同意验证与滥用监测。
  4. 进来:以为多语言就是多训几种语言 → 出去:知道口语的独有难题是语码转换(说话人在句中甚至短语中间换语言),书面文字有正字法划边界而口语没有;标注要切分语言边界并各按其正字法转写,因而稀缺昂贵;低资源语言靠近亲迁移(在匈牙利语上训过的模型去适配一种音系差异很大的匈牙利方言,仍比拿英语底座容易得多)。
  5. 进来:以为视频就是很多张图 → 出去:知道逐帧独立处理恰恰丢掉了让视频区别于幻灯片的时间关系;三种做法(关键帧采样 / 跨帧注意力 / 视频专用编码器)各自的取舍,监控录像要的时间分辨率远高于教学视频。
  6. 进来:以为视频只是又一个模态 → 出去:知道它捕捉了别的数据类型都没有的东西——物理世界的因果结构(静态图显示杯子在桌上,视频显示它被放下、滑动、倾倒、摔碎),所以在大量无标注视频上训练的模型隐式学到了物理;注意:书里这一段没有尾注,我们要标成作者的综述式陈述
  7. 进来:以为 3D 和传感器数据要另起炉灶 → 出去:知道共用同一副骨架(专用编码器 → 投影层 → 语言模型),点云用 PointNet 一系、时间序列用卷积或循环结构;瓶颈仍是数据(3D 采集要专门传感器、标注员要能在三维里推理),而仿真能补一部分(几何上的仿真-真实差距通常比外观上的小);运行设备、监护病人的那个组织,握有模型提供商拿不到的传感器数据
  8. 进来:以为多一个模态只是多一个输入 → 出去:知道多出两种独有的失效:微调时视觉与文本的表示会重新错位(模型两边都还行,却丢了整合的能力,叫跨模态特征漂移),以及攻击面变宽(纯文本会被拒的请求,写进图片里可能绕过);对策包括在通用图文对的留出集上监控一致性、以及跨模态红队。

20 接下来投什么 ★ 战略落点

**主走查:**明年这套还值不值得自建——把这封信拆成「通用能力」和「只有你有的东西」两半,各归各的去处。 承重词单开一节:「涨潮抬不起来的那些船」· 推理时算力(把每次回答的成本从常数变成变量)。 ★ 「别走远」第五次也是最后一次回来(持续学习的三族遗忘缓解)。 顶层全景要交付的东西: 原书那张成熟度表(哪些已可上生产、哪些还在研究阶段,以及各自的前提条件)放在这里,读者先看见地图再逐项走。

  1. 进来:以为微调出来的能力是资产 → 出去:知道 2023 年辛苦调出来的摘要能力可能 2025 年开箱即用就有了;所以战略回应不是不投,而是只投基线推进之后仍然差异化的那部分。
  2. 进来:以为每次回答的成本是固定的 → 出去:知道它可以变成变量——简单问题快而便宜,难问题给它延长思考;于是训练目标也变了:要训它评估自己的输出、找出弱点、迭代改进,逐步打分的那种奖励模型因此比只看终点的更重要(第 16 章讲过机制)。
  3. 进来:以为参数越多每次就越贵 → 出去:知道可以只激活其中一部分(四千亿总参数里只用五百亿),而后训练它有独有的麻烦:微调会打乱已经学好的分配、部分专家吃不到训练信号(专家坍缩),常见做法是初期先冻住分配器;至于「专家会自发形成领域专长」,书自己写明还没被理解、也控制不了。
  4. 进来:以为上下文窗口越长越好 → 出去:知道容量不等于有效利用——百万 token 的窗口能「看见」整个代码库,却仍可能找不到那个函数;后训练的机会正在这个缺口上,而训练数据必须让正确答案依赖中间位置的信息,否则治不了「偏重结尾」的毛病。
  5. 进来:以为反馈总要人给 → 出去:知道下一步的核心是不对称性——人类反馈能做几千次,执行反馈(代码过没过测试、证明验没验过)能做几百万次;至于「可验证域练出来的推理会不会迁移到不可验证域」,书自己用的措辞是「早期证据显示」,是推测不是定论,我们照实写
  6. **(新增)**进来:以为训练就是把数据一股脑喂进去 → 出去:知道顺序也是可优化的:把题目按模型当前能力的边缘排序喂——太易没信号(它已经会了)、太难也没信号(全都失败时它分不清好办法和坏办法);这叫课程学习,难处在于难度估计本身要花算力,早期结果显示总算力反而可能更省。
  7. 进来:以为模型上线就定型了 → 出去:知道持续学习的障碍就是灾难性遗忘,三族缓解各有代价(混旧数据要存旧数据、罚重要参数的变化要先算出哪些重要、加新模块会让模型变大)——这是「别走远」最后一次换名字出现;它仍是研究目标,但经济诱因强到技法很可能成熟起来。
  8. (收缩)进来:以为最稀缺的是算力 → 出去:知道是人——既懂训练动力学又会调试发散训练的工程师、能给出「为什么这个回答更好」的标注员、能在技法选择上有见识地判断的技术领导;而标注队伍是会随时间复利的能力资产,这笔人力投入不如算力开支显眼,最终可能更有分量。结论一句回指 §1,不再重述。
  9. 收束:进来:以为学到了一套配方 → 出去:知道技法会全部换掉,不换的只有三条(数据质量压过数量、评估必须对着部署而不是对着基准、每个决定都是取舍且没有普遍最优);以及从哪儿起步(先 SFT、先单模态、先建评估基础设施再上需要复杂评估的技法)。

五、自查:两两对照「出去时知道」,是不是同一件事

疑似重复判定
01§4「因为有技法,中间层才存在」 vs 12§3「QLoRA 怎么做到的」01 只给结论并明记为伏笔,机制全部在 12 —— 不重,是许诺与兑现,要进兑现表
01§4 的 140GB vs 06§1 的 112GB140GB 是光装载 700 亿参数(半精度);112GB 是微调 70 亿参数的四笔账 —— 两个数管两件事,06§1 要显式把这层关系说破
03§3「知识 vs 行为」 vs 14§4「策略阶梯里的检索」03 讲检索是什么、什么时候够;14 只把它当阶梯的一级,不重讲机制 —— 不重
04§2「别走远」 vs 05§6 低学习率 vs 08§5 KL vs 12§1 低秩 vs 20§7 持续学习04 立名并讲机制,后四处各是同一约束的一种实现、每处只回指一句 —— 这正是伏笔 1,不重
06§4「读 loss 曲线」 vs 第 10 章06 只到验证的第 1–3 层(训练中看得见的信号),10 从第 4 层起(部署要的判断)—— 边界写死,不重
07§2「识别比生成便宜」 vs 14§3「让专家判断而不是让专家写」07 说的是成本(同一个专家,写要半小时、比只要三十秒);14 说的是能不能(专家根本写不出来自己遵循的规则,哪怕给他无限时间)—— 一个是经济学,一个是认知事实;14§3 必须明确回指 07§2 并当场说破这层区别 —— 不重
07§7 reward hacking vs 10§2 Goodhart07 是模型对着打分器作弊,10 是对着指标作弊;10§2 要明确回指 07§7 说「还有更毒的一层」—— 不重
08 全章 vs 09§208 讲「怎么优化」,09 讲「怎么把 08 的一半省掉」;09§1 明确回指 08§1 那笔四模型的账 —— 不重
09§5 GRPO vs 16 推理机制在 09,16 只当工具用 —— 不重
15§5 误差复合 vs 16§3 倒 U15 把 0.9 的 n 次方讲透,16 回指并加第二重原因(写长作弊)—— 不重,但 16§3 必须显式回指
16§5 过程奖励 vs 20§2 推理时算力机制在 16,20 只讲「因此它更重要」—— 不重
03§5 steering test vs 16§9 组合性墙 vs 17§6 自我改进三处是同一条能力守恒律的三个面;03 立、16 与 17 各加一层硬度,17§6 要把三处并起来说一次 —— 不重,是伏笔 3
11 量化 vs 12 PEFT11 是「同一个模型用更少的位」,12 是「只训一小部分 + 换个更小的模型」;QLoRA 横跨两者,归 12,11 末尾只埋一句 —— 不重
02§3 切词 vs 14§4 词表扩张02 讲切词是什么,14 讲领域术语被切碎该怎么办 —— 不重
17 合成数据 vs 18§5 标注瓶颈18§5 要明说「多模态的合成生成远不如文本成熟」,不重复 17 的技法 —— 不重
05§5 数据质量压过数量 vs 20§9 三条不变原则05 是 SFT 内部的经验值,20 是全书回收;20§9 要回指而不是重讲 —— 不重
18 视觉 vs 19 其他模态18 讲骨架与视觉独有的坑(幻觉、标注双重负担),19 讲换一种模态之后什么变了(时间维度、语码转换、跨模态冲突);19 不重讲骨架,只回指 18§1 —— 不重

动笔前就合掉的两处:

  • 原本打算把「提示词为什么不够」和「改权重之前的便宜路」分成两章 —— 两章的「出去时知道」都是「所以还不该改权重」,合成现在的 03
  • 原本打算给「切词」单独一章 —— 它的「出去时知道」和 02(模型内部)、14(领域适配)各有一半重叠,拆成两半分别并入,不单独成章。

本版删掉的两行(审出来的目录行 / 同义行):

  • 原 08§1(「有了打分器就直接朝高分冲 → 知道要有一条缰绳」)—— 两头都是 07 已经交付的东西,换成那笔四模型的系统账;
  • 原 19§2(成熟度表)—— 它把后五行的菜名先报了一遍,属于目录;表本身移进第 20 章的顶层全景。

六、每章要补的书外材料(动笔前一次抓完,不要边写边查)

补什么到哪儿取
02神经网络 / 参数 / 梯度下降 / 反向传播 / token / 注意力 / 采样与温度 —— 书明说假定读者已懂08:13本库书架:build-large-language-modelwhat-is-chatgpt-doinglittle-book-of-deep-learning(锚 shelf=ai-book-reference/<id>#<章>
07–08强化学习的最小词汇(策略 / 奖励 / 回合 / 回报)本库书架:reinforcement-learning-sutton-bartoan-introduction-to-deep-reinforcement-learning;数学链条指 the-rlhf-book
06 · 12训练框架与省显存实现 —— 不重讲,指过去ai-frontier-referencetrl#01-trainer-family #02-sft #03-dpopeft#01-lora-mathunsloth
13缓存分页与批调度的实现ai-frontier-referencevllm#01-paged-attention-kv-cache#02-continuous-batching-scheduler
18 · 19 · 20书里没给出处或明标推测的说法 —— 必须标成作者判断,不许写成事实reading-notes-2.md 第四节 C 类清单(尤其 §162 那段 97% 精确率整段无尾注、§159 视频那几段无尾注;「可验证域会迁移到不可验证域」书自己写的是 early evidence suggests)
10 · 20最多值得上网核三条:某毒性检测接口 2026 年底停服 · 欧盟法规执行进度 · 形式化证明的最新数字核不到就照书写并标明「截至 2026-01」

不必上网的: 书有 211 条尾注,text/165-fm-notes.txt 完全可读、题名与链接齐全,引论文按 ① 类(这本书)写即可。书 2026-01 定稿、6 月出版,今天只有两个月书龄,「书出版后被修正」这类缺口几乎不存在,不要硬找。

顺手可点的两处书内小错(也是「我们真读了」的证据): 第 12 章两次把合成数据写成「第 10 章」(实为第 11 章);尾注 203 用的是 Qwen2-VL 论文却给 Qwen2.5-VL 作注,且尾注 59 与 204 重复收录同一篇。


七、有意不覆盖(要同步抄进书卡的 notCovered)

不写什么为什么
7 处「Vibe Check」专栏(约 5 万字符:拿 coding agent 跑超参搜索、造工具轨迹、搭合成数据流水线、编排评估管道、扫 arXiv 出周报)它们讲的是「怎么让编码 agent 替你干杂活」,不是后训练本身的机制;工具与其接口半年就会换一遍,而我们的判据是「读完能把这本书讲给别人听」——少了这几个框,这个判据不受影响。代价说清楚:读者拿不到作者关于「哪些活可以交给 agent、哪些危险」的经验清单。
完整可运行的训练代码原书正文本身只给带标注的节选,完整实现在配套 GitHub 仓库;我们讲配置项各自在管什么,不抄代码
图内信息转码文本只保留图说,Figure 1-1/1-2/2-1/2-3/3-1/3-2/4-1/4-2/4-3/5-1/5-2/6-1 的图形内容不可得,凡依赖图的地方我们用 ASCII 图自己重画
具体行业的合规条文书只给框架名与适用场景(NIST AI RMF、SR 11-7、EU AI Act、FDA 510(k)),不解读条款;我们同样只给名字与适用面
各家框架的 API 细节书自己写明 TRL 等库的 API 仍在变、要以配套 notebook 为准;我们指向三个代码书架的对应拆解,不复制参数名