01. 训练全景:一个模型从哪里来
推理系列讲的是怎样把资料助手部署上线:员工小林问“年假怎么申请?”,模型几秒后给出回答。这个系列换一个方向追问:这个模型本身是怎样训练出来的?团队想让它回答得更像公司口径时,该自己动手训练哪一段?这一篇先把地图铺开,说清一个模型从数据到上线经过哪些阶段、每个阶段产出什么、大约花多少资源、通常由谁来做。读完以后,你应该能判断资料助手的某个毛病属于哪一层,以及该从提示词、检索、微调还是更重的手段着手。
同一个问题,模型分几次学会
把“年假怎么申请?”交给不同阶段的模型,表现差别很大。
只做过预训练的模型,读过约 15 万亿个 token 的网页、书籍和代码,学会的是“接着往下写”。它看到这句话,可能续写成一张常见问题列表:“年假怎么申请?病假怎么申请?婚假有几天?”语言很流畅,却没有在回答。这种模型叫基础模型(base model),它掌握了语言和大量知识关联,还不懂“有人在问我,我该回答”。
接着用几万到几百万条“问题—标准回答”样例做监督微调(SFT,Supervised Fine-Tuning),模型学会了对话格式:先回答问题,分步骤说明,必要时追问。这时它成了指令模型,问年假能答出一段像样的流程。
但像样不等于妥当。它可能信心十足地说“提交后当天即可批准”,而公司制度里并没有这条承诺。偏好对齐用“两个回答哪个更好”的比较数据继续训练,让模型更倾向于有依据、有分寸的回答。对于算加班费、核对日期这类有标准答案的任务,还可以用程序自动判对错作为奖励,做强化学习,让模型在反复尝试中把推理过程练扎实。
后三步合称后训练(post-training)。预训练给模型能力的底子,后训练决定它怎样使用这些能力。
大语言模型的流水线
把这些阶段连起来,再加上评估和部署,就是一个大语言模型从数据到上线的完整路径:
沿着上排从左往右看,每一段的输入、产物和代价都不同:
| 阶段 | 输入 | 训练目标 | 产物 | Llama 3.1 8B 的量级 |
|---|---|---|---|---|
| 数据准备 | 原始网页、书籍、代码 | 过滤、去重、去隐私、分词 | 训练语料 | 约 15T token |
| 预训练 | 训练语料 | 预测下一个 token | 基础模型 | 146 万 H100 GPU 小时 |
| SFT | 指令—回答对 | 只对回答部分预测下一个 token | 指令模型 | 远小于预训练 |
| 偏好对齐 | 成对比较数据 | 好回答概率高于差回答 | 对齐后的助手 | 多轮迭代 |
| 强化学习 | 可自动判分的题目 | 得分高的推理更常出现 | 推理更稳的模型 | 视任务而定 |
| 评估 | 基准与业务评测集 | 不训练,只打分 | 上线或回炉的结论 | 每一轮都要做 |
预训练的规模可以手算一下。稠密 Transformer 训练一个 token 大约要 6 × 参数量 次浮点运算(第 04 篇解释这个 6 从哪来):
text
训练算力 ≈ 6 × 参数量 N × 训练 token 数 D
= 6 × 8.03×10⁹ × 15×10¹²
≈ 7.2×10²³ 次浮点运算Meta 在 Llama 3.1 模型卡里记录 8B 用了 146 万 H100 GPU 小时,70B 用了 700 万,405B 用了 3084 万。146 万 GPU 小时摊到 1000 张卡上,要连续跑约 61 天(1,460,000 ÷ 1000 ÷ 24)。按云上每 GPU 小时几美元的价格估算,单是 8B 的这一次训练就是数百万美元量级,还没算数据、失败重跑和人员。
后训练的形态在各家之间差别较大。Llama 3 论文描述的做法是多轮迭代:每轮先训练奖励模型,用它从多份候选回答里拒绝采样挑出好回答来做 SFT,最后做 DPO(一种直接用偏好对训练的方法,第 11 篇展开)。下一轮用新模型生成新数据,重复这个过程。图中“失败样例回流”的虚线就是这种迭代:评估找到的问题会变成下一轮的数据。
其他模型走同一个套路
语音识别、视觉、向量模型的名字各不相同,但训练路径惊人地相似:先用海量、廉价、标注粗糙的数据学通用能力,再用少量、精确、贴近任务的数据微调。差别主要在数据长什么样、训练目标怎样定义。
| 模型类型 | 通用阶段的数据 | 通用阶段的目标 | 任务微调的数据 | 资料助手里的用途 |
|---|---|---|---|---|
| 大语言模型 | 15T 级文本 token | 预测下一个 token | 问答对、偏好对 | 按公司口径回答 |
| 语音识别 | Whisper 用了 68 万小时音频—文本对 | 根据声音生成文字 | 带口音、内部术语的录音及转写 | 听准“OKR”“钉钉审批” |
| 图文模型 | CLIP 用了 4 亿图文对 | 让配对的图和文向量靠近 | 报销单截图及类型标签 | 识别上传的单据 |
| 向量模型 | 海量文本对 | 相关文本向量靠近、不相关的远离 | 员工问题与正确条款 | 检索找对制度条款 |
这种同构带来一个实用推论:几乎所有团队都不该从零训练,而是从别人训练好的通用模型出发。语音这一支在第 14—16 篇展开,视觉和多模态在第 17—19 篇,向量与重排在第 20 篇。
谁在做哪一段
图中间两条色带说明了分工。前沿实验室和大公司负责数据和预训练,也做通用的后训练,发布的就是我们下载的基础模型和指令模型。一次 8B 预训练要上千张卡跑两个月,70B、405B 再翻几倍到几十倍,还要有能稳定调度上万张卡的工程团队。
普通团队拿到的是一个已经会说话、会听指令的开源模型。他们能做也值得做的,是后训练里贴近自己业务的一小段,再加上评估和部署。一次典型的资料助手 SFT 用几千条问答,每条几百 token,训练三遍,总共约 1000 万 token:
text
6 × 8.03×10⁹ × 1×10⁷ ≈ 4.8×10¹⁷ 次浮点运算
H100 BF16 峰值约 989 TFLOPS,按 40% 的实际利用率估算:
4.8×10¹⁷ ÷ (989×10¹² × 0.4) ≈ 1200 秒,约 20 分钟这里按全参数训练的 6ND 估算,LoRA 冻结底座后约为它的 2/3,第 04 篇会细算。实际还要加数据加载、评估和多次调参重跑,一般是一张卡几小时的事。和预训练相比,算力差了约六个数量级。真正贵的部分在别处:整理几千条口径一致的回答,搭一套能证明“训练后更好且没变坏”的评测集。
资料助手该从哪一级着手
团队对资料助手有一串不满:回答不带条款编号、有时乱承诺、查不到时编一个答案、三月份制度改了它还在说旧规则。这些问题不该一股脑交给训练,而要按成本从低到高逐级尝试:
第 1 级,改提示词。 在系统提示里写清“回答必须引用条款编号,制度里没有的就说不知道”,再给两三个示例。改完立刻能试,没有任何 GPU 成本。很多“格式不对”的问题在这一级就能解决。
第 2 级,接检索和工具。 制度原文放进知识库,问题来了先检索相关条款,把原文交给模型再回答;员工剩余年假天数这类实时数据,通过接口去人事系统查。这一级解决的是“模型不知道”,RAG 与工具调用讲了具体做法。成本主要是工程:切块、检索质量、权限。
第 3 级,SFT 或 LoRA。 提示词写得再细,模型还是时而忘带编号、拒答措辞不统一,或者提示词长到挤占上下文时,就该把这些行为用几千条示范“训进去”。LoRA 是一种只训练少量新增参数的微调方式,8B 模型一张卡就能做,第 10 篇详细讲。
第 4 级,偏好对齐。 SFT 之后模型格式对了,却仍然偶尔说“一定能批”。这类“两个都通顺、但一个更妥当”的区别,用成对比较数据训练更有效。代价是要标注偏好数据,还要防止模型学会讨好评分标准(第 11 篇)。
第 5 级,从零预训练。 对资料助手这样的团队几乎永远不需要。需要它的场景是没有合适底座的新语言、新模态,或者有严格的数据主权要求,而且团队负担得起上面那笔账。介于两者之间的继续预训练(拿现有底座再读大量领域文本)偶尔有用,第 13 篇讨论它何时值得。
判断该停在哪一级,有一个简单的诊断:把正确的制度条款直接贴进提示里,模型还答错吗? 贴了还错,是行为问题,往第 3、4 级走;贴了就对,是知识问题,留在第 2 级把检索做好。
失败案例:把制度原文灌进模型
一个常见的误用是这样的。团队收集了 300 份制度文件,把每段条款改写成问答对,做了一次 LoRA 微调,希望模型“记住”公司制度,从此不用检索。上线第一周效果不错,演示时问年假答得头头是道。
三月份人事部门把“入职满一年享 5 天年假”改成了“入职即享 5 天,按月折算”。知识库里的文件更新了,模型里的旧知识还在。它继续按旧规则回答,问它依据是哪一条,它会编一个看上去合理的条款号。更麻烦的是,有些问题它把新旧两版混在一起答。团队只好重新整理数据、重训、重新评估,而下个月制度又会改。
这个失败有几个可以提前看出的信号:
- 要学的内容是事实而不是行为,而且会变。事实放在检索里,改文件就生效;训进参数里,每次改都要重训,也很难保证旧版本被“忘干净”。
- 回答需要出处。模型从参数里“回忆”出的内容没有可核对的来源,检索拿到的原文可以直接引用。
- 微调数据只覆盖了训练当时的版本,评测集也是同一批数据改写的,所以上线前的评估看不出问题。
正确的分工是:制度原文放检索,训练只教行为——拿到条款后怎样引用编号、条款冲突时以新版为准、检索结果里找不到时怎样说“不知道”。这样的 LoRA 换一个月的制度也不用重训。
训练之前先备好的东西
决定往第 3 级以上走时,下面几件事要先于训练脚本准备好:
- 评测集:几百条真实问题和期望行为,包括应该拒答的问题。没有它,训练后无法判断变好还是变坏(第 21 篇)。
- 底座和许可证:选哪个开源模型、许可证是否允许商用和再分发。
- 数据:口径一致、经过去重和隐私清理的训练样例;数据质量比训练技巧影响更大(第 09 篇)。
- 资源估算:显存够不够、要训多久,这是第 03、04 篇要教你手算的。
一个模型从数据出发,经过预训练得到基础能力,经过 SFT、偏好对齐、强化学习等后训练学会怎样使用能力,再经评估才能上线;语音、视觉和向量模型走的也是“先通用、再专用”的路。前沿实验室承担预训练的巨额成本,普通团队从开源底座出发,在提示词和检索解决不了、且问题属于行为时,才动用 SFT 或 LoRA。地图有了,下一篇钻进其中最小的单位,看一次训练 step 里到底发生了什么:02. 一步训练发生了什么。
