大部分关于大模型的讨论,都发生在这条流水线的某一格里,却很少有人把八格一起摊开看。摊开之后会出现一个用局部视角看不到的事实:从架构定形到退役,每一格干的都是同一件事——把上游更大的东西压成更小的表示,并且接受不可逆的丢弃。整条链上只有最后一格会产出新信息。
这就是这张图想给的上帝视角,也是这篇的主线。图先放上来,后面每一节都在解释它的一格。
一、那张图:模型的一生
flowchart LR
P1["① 受孕 · 定形<br>架构选型 MoE 与注意力<br>Tokenizer 词表即世界观<br>数据配比与 Scaling Law"]
P2["② 孕育 · 预训练<br>Next-token 压进权重<br>并行算力 TP / PP / FSDP<br>Checkpoint 可回溯的胎心"]
P3["③ 童年 · 中期训练<br>长上下文 位置编码外推<br>退火 代码与数学加料<br>模态接入 视觉塔缝合"]
P4["④ 少年 · 后训练<br>SFT 学会怎么答<br>RLHF / DPO 对齐口味<br>RLVR / GRPO 可验证奖励<br>蒸馏 长链压成直觉"]
P5["⑤ 升学考 · 评测<br>基准与数据污染<br>评测饱和<br>口径换轴"]
P6["⑥ 成年 · 推理部署<br>量化 精度换显存<br>KV Cache 前缀复用<br>PD 分离 连续批处理"]
P7["⑦ 职业生涯 · Agent 产品<br>Harness 循环与权限<br>工具调用 / MCP<br>上下文工程 与记忆<br>轨迹与信用分配"]
P8["⑧ 夕阳 · 退役<br>版本迁移下线<br>被替代而非衰老<br>权重冻结不会变差"]
P9["下一代的 ①<br>轨迹变成新语料<br>旧模型当蒸馏教师"]
P1 --> P2 --> P3 --> P4 --> P5 --> P6 --> P7 --> P8
P8 -.->|"唯一的新信息入口"| P9
classDef seed fill:#1e3a8a,stroke:#60a5fa,stroke-width:2px
classDef agent fill:#14532d,stroke:#4ade80,stroke-width:2px
class P9 seed
class P7 agent
三处读图的提示:绿色那格(⑦)是全图唯一会产出新信息的地方;蓝色那格(下一代的 ①)不是回到原点,而是螺旋上升一圈后的新起点;从 ① 到 ⑧ 的实线箭头全部单向,没有一条能往回走。
二、怎么读这张图:一条单向压缩管道
八格的动作可以统一写成一句话:把 X 压成 Y,接受丢弃。(“单向压缩管道”是我为这张图起的说法,不是行业术语,别当既有概念引用。)
| 格 | 把什么压成什么 | 丢弃了什么 | 可逆吗 |
|---|---|---|---|
| ① 定形 | 所有可能的字符串 → 十万量级的词表 | 词表切不出来的形态、罕见语言的字形 | 不可逆,且定死后几乎无法改 |
| ② 预训练 | 数十 TB 语料 → 数百 GB 权重 | 具体的原文;只留下统计规律 | 不可逆(权重里查不回原句) |
| ③ 中期训练 | 长序列的真实依赖 → 位置编码的外推能力 | 训练窗口外的真实长程结构 | 部分可逆(可继续训) |
| ④ 后训练 | 人类偏好 / 可验证结果 → 一个策略 | 偏好里的分歧与少数派答案 | 不可逆(对齐税) |
| ④’ 蒸馏 | 长思维链的搜索过程 → 短输出的直觉 | 中间的搜索轨迹 | 不可逆 |
| ⑤ 评测 | 模型的全部行为 → 几个标量分数 | 分布尾部、失败模式 | 不可逆(这是最便宜也最有害的一次压缩) |
| ⑥ 部署 | bf16 权重 → 4-bit 权重;重复前缀 → 缓存命中 | 低位精度;缓存未命中的那部分 | 量化不可逆,缓存可重算 |
| ⑦ Agent | 几十轮轨迹 → 一份上下文;一个 0/1 → 十几步的信用 | 被裁掉的历史、被误分配的功劳 | 不可逆 |
| ⑧ 退役 | 整个模型 → 数据集与蒸馏教师 | 权重本身 | 不可逆 |
这张表是全文的骨架。它的用处不是分类学,而是:当你的问题出在某一格时,你要修的其实是”这一格丢掉了什么”,而不是”这一格的参数够不够大”。
把第二格的账手算一遍
抽象的”压缩”要落到数字上才有说服力。拿 Llama 3 405B 算一笔(arXiv:2407.21783,2024-07-31;我核实过摘要里的 405B 参数 与 128K 上下文):
权重:405e9 参数 × 16 bit = 6.48e12 bit = 810 GB (bf16)
语料:15e12 token × 4 字节/token ≈ 60 TB (磁盘字节口径)
压缩比 ≈ 60 TB / 810 GB ≈ 74 : 1
每个参数摊到 15e12 / 405e9 ≈ 37 个 token
换成信息论口径(词表 128256, bit/token 是每 token 的上界):
三处必须标注的诚实:(1) 15T token 这个数字出自 Llama 3 论文正文而非摘要,我只核实了摘要里的参数量与上下文长度,token 数我没有逐页核对,按”未亲手核实的二手数字”读;(2) 4 字节/token 是我按英文文本的经验取的量级值,换成 3 或 5 字节,比值在 56:1 到 93:1 之间浮动——这是量级估算,不是测量;(3) 是上界而非真实熵,自然语言的实际每 token 熵远低于 17 bit,所以真实压缩比小于 39:1。上面的算术我用脚本验算过,但算术正确不代表口径正确,这笔账只用来说明一件事:量级是几十比一,不是几万比一。
这个量级本身就是个有用的直觉:权重不是语料的索引,它装不下语料。 37 个 token 挤进 1 个参数,模型必须丢掉绝大部分具体内容、只保留能压缩的规律——这是”为什么模型会幻觉”的最根本层答案,比”训练数据里有错”要根本得多。
三、为什么图上只有一条虚线,而且它不是闭环
现在看图右端那条虚线,以及绿色的第⑦格。整条链上,每一格的输入都来自上一格,只有第⑦格例外:Agent 在真实环境里跑出来的轨迹,包含了训练语料里不存在的信息——环境的反馈。
区别在于信息的来源:
- ①到⑥格的每一次”改进”,都是在对已有信息做更聪明的重排:换个架构、改个配比、多训几步、压得更狠。信息总量不增加,只是编码方式变了。
- 第⑦格不同。工具返回了什么、代码跑没跑过、用户接受还是拒绝了修改——这些是外部世界的回答,语料里没有。它们是这条链上唯一的新增信息。
所以那条虚线是这条流水线上唯一的进料口。注意它没有画回第①格——这不是一个闭环,是一条螺旋:轨迹变成语料之后,开始的是下一代模型的第①格,而不是让当前这个模型返老还童。权重是冻结的,它自己回不去。而这也顺手解释了 2026 年热点分布的形状:可验证奖励、环境工程、轨迹数据、沙箱、评测口径——它们全挤在第⑤到第⑦格,因为那是唯一还能往系统里注入新信息的位置。我在《大模型热词地图 2026-09》里按”谁是当下的瓶颈”给 63 个热词排过一条链,那条链的后半段和这张图的后三格是同一片区域——这张图算是给那条链补了一张地形。
顺着这条主线,站内几篇旧文各自落在图上的哪一格也就清楚了:
- 第②格的并行与显存账、第⑥格的前缀复用:《vLLM 的自动前缀缓存》
- 第④格的 RL 那一段:《为什么大模型需要强化学习》与《PPO 的训练循环》
- 第⑦格那一步”把 0/1 压回十几步”:《覆盖是一阶、定向是二阶》
- 第⑤格的口径问题:《大模型 Benchmark 地图》
还有一格值得单独点出来,因为它不在这张图上却是同一个现象:我上一篇写图像识别时量到,一张手机照片喂进视觉编码器前会先被 resize,99.07% 的像素在模型看第一眼之前就丢了(《图像识别的卡点不在看清,在定位》)。那是推理时的一次不可逆压缩,发生在图的第⑥格之前。压缩不只发生在训练管线里——只要有一次”把大的变成小的”,就有一次丢弃需要记账。
四、这个隐喻在哪里失效
任何统一叙事都有边界,不写清楚边界的统一叙事是骗人的。这个”一生 + 单向压缩”的隐喻至少有四处会崩:
一、“一生”其实是版本谱系,不是个体。 模型不像人那样只有一条时间线。同一个 base checkpoint 可以分叉出十几个后训练分支,各自独立成年、独立就业。图上第④格之后其实应该是一把扇形,画成单线是为了可读性——这是画法上的简化,不是事实。
二、“夕阳”不是衰老,是被替代。 模型不会因为运行久了而变差(权重是冻结的)。它退役是因为下一代更便宜或更强,是外部竞争而非内部衰退。生命隐喻在这里最容易误导人。
三、阶段边界在现实中是模糊的。 “中期训练”(mid-training)没有公认定义,它和预训练的退火阶段、和后训练的早期 SFT 都有重叠;不同团队画的框不一样。第③格是我为了叙事清晰切出来的,别把它当行业共识引用。
四、“压缩”这个词对第④格的 RL 是不准确的。 强化学习那一步的核心动作是搜索加筛选——采样一批轨迹、按奖励挑出好的,这个阶段信息是先增后减的。只有”把筛选结果写回权重”那一下才是压缩。我在表里把它归为压缩是为了主线的整齐,牺牲了一点准确性,这里必须补回来。
对第四点还可以再进一步(这是猜想,我没有证据):如果 RL 是这条链上唯一”先增再减”的一格,那它和第⑦格的回流箭头是同一个机制的两个位置——都是靠外部信号往系统里加信息。这个说法我没有验证,别当结论用。
五、按症状定位:你的问题落在哪一格
上帝视角的实际用途,是把”模型表现不好”这种没法下手的抱怨,翻译成”哪一格丢掉了我需要的东西”。下面这张表的每一行都给了一个可自测的判据,你不必信我的分类,自己跑一遍就知道。
| 你观察到的症状 | 可自测的判据 | 落在哪一格 | 该动的地方 |
|---|---|---|---|
| 特定语言/符号系统一贯地差 | 把输入 tokenize 出来看切分是否碎成单字 | ① 定形 | 换模型,这格改不动 |
| 常识性事实答错、且换问法也错 | 同一事实在多个 prompt 下稳定答错 | ② 预训练 | 外接检索,别指望微调补 |
| 长文档前半段的信息被忽略 | 把关键信息挪到末尾就答对了 | ③ 中期训练 | 缩短有效上下文、重排输入 |
| 格式/语气不对但知识是对的 | 给一个示例就立刻纠正 | ④ 后训练 | SFT 或 prompt,最便宜的一格 |
| 线上体感差但基准分数很高 | 自建 20 条真实样本重测,分数掉下来 | ⑤ 评测 | 换评测口径,别调模型 |
| 输出偶发崩坏、长输出后变差 | 换回未量化权重就正常 | ⑥ 部署 | 提高量化位宽或换量化方案 |
| 多轮之后开始遗忘、绕圈 | 打印实际进模型的上下文,看被裁掉了什么 | ⑦ Agent | 上下文工程,不是换模型 |
| 同类任务反复犯同一个错 | 错误可归纳成一条规则 | ⑦→⑧ 回流 | 把轨迹变成数据,喂给下一轮 |
这张表和图配着看:图给形状,表给动作。 表里有一行值得单独强调——倒数第二行是最容易被误诊的一行。多轮变差的绝大多数情况是第⑦格的上下文被裁掉了,不是第②格的模型不够强,但因为”换个更强的模型”是最容易执行的动作,它常常被优先尝试,然后浪费掉一整个迭代周期。
六、一小时的自测:把一个真实失败案例走完这张图
上面那张表值不值得信,你自己一小时就能验。这个实验专门用来检验第五节那张诊断表,不是泛泛的”你可以试试”:
- 选样本(10 分钟):从你的日志里挑 1 个真实的失败 case,要求是”重复出现过至少两次”的那种,不要挑偶发的。
- 逐格执行判据(40 分钟):按表里的顺序从①走到⑧,每一格只做那一行”可自测的判据”那一列写的事。第①格用
tokenizer.encode(你的输入)打印切分;第⑤格自建 20 条真实样本重测;第⑦格把实际进模型的 messages 数组整份打印出来,逐条对比你以为发的内容和实际发出去的内容。 - 记录一个数字(10 分钟):写下它在第几格被抓住,以及那一格的判据给出了什么具体证据。
判定标准:如果它在某一格被明确抓住,你就把”模型不行”换成了一句可执行的诊断,而下一步动作在表的最后一列。如果走完八格都没被抓住,那就是这张表漏了一格——这种情况我最想知道,因为它会改掉这篇文章的骨架。
七、通俗总结:一路缩印,只有一步能出门
如果前面的术语看糊了,这一节把整篇重讲一遍,不用任何术语。
把这件事想象成一路复印。 你有一份很厚的原始资料,第一次复印时缩到 A4,第二次拿复印件再缩印一次,第三次拿第二份复印件再缩……每一次都还能看,但每一次都有细字变成了糊块。关键在于:每复印一次,原件就被拿走了。 你手上永远只有最新那一份缩印件,回不去。
模型的一生就是这样九次缩印:把整个互联网缩成一份权重,把人类的喜好缩成一种说话风格,把很长的思考过程缩成一句直觉答案,把高精度的权重缩成低精度的、能塞进显卡的版本,把几十轮对话缩成一小段还塞得进去的上下文。每一步都能用,每一步都在糊掉一些东西。
而这一路上只有一件事不是缩印:让它真的出门干活。 工具报了个错、代码没跑通、用户把它的修改退回来了——这些是外面的世界给的新东西,原始资料里没有。这也是为什么”把它接到真实任务里跑”这件事,比再多复印几遍都值钱。
一句可以原样讲给同事的话:
模型的一生是一路缩印,糊掉的字找不回来;只有真让它出门干活那一步,才会带回新东西。
顺着这个画面,还剩一个我自己也没想清的问题:如果”出门干活”是唯一的新信息来源,那它带回来的东西质量有多差、才会让下一代反而变坏?(自己生成的数据喂回自己,这条路的边界在哪。)我手上没有能回答它的数据,等做出来再更新。
参考来源
论文
- Llama 3 — The Llama 3 Herd of Models,arXiv:2407.21783(2024-07-31):第②格的参数量与上下文长度出处。
站内相关(按图上的格)
- ②⑥ — 《vLLM 的自动前缀缓存》
- ④ — 《为什么大模型需要强化学习》、《PPO 的训练循环》
- ⑤ — 《大模型 Benchmark 地图》
- ⑦ — 《覆盖是一阶、定向是二阶》
- 全局 — 《大模型热词地图 2026-09》
- 推理时的同类压缩 — 《图像识别的卡点不在看清,在定位》