Skip to content

约 9 分钟阅读

01. 训练全景:一个模型从哪里来 ​

推理系列讲的是怎样把资料助手部署上线:员工小林问“年假怎么申请?”,模型几秒后给出回答。这个系列换一个方向追问:这个模型本身是怎样训练出来的?团队想让它回答得更像公司口径时,该自己动手训练哪一段?这一篇先把地图铺开,说清一个模型从数据到上线经过哪些阶段、每个阶段产出什么、大约花多少资源、通常由谁来做。读完以后,你应该能判断资料助手的某个毛病属于哪一层,以及该从提示词、检索、微调还是更重的手段着手。

同一个问题,模型分几次学会 ​

把“年假怎么申请?”交给不同阶段的模型,表现差别很大。

只做过预训练的模型,读过约 15 万亿个 token 的网页、书籍和代码,学会的是“接着往下写”。它看到这句话,可能续写成一张常见问题列表:“年假怎么申请?病假怎么申请?婚假有几天?”语言很流畅,却没有在回答。这种模型叫基础模型(base model),它掌握了语言和大量知识关联,还不懂“有人在问我,我该回答”。

接着用几万到几百万条“问题—标准回答”样例做监督微调(SFT,Supervised Fine-Tuning),模型学会了对话格式:先回答问题,分步骤说明,必要时追问。这时它成了指令模型,问年假能答出一段像样的流程。

但像样不等于妥当。它可能信心十足地说“提交后当天即可批准”,而公司制度里并没有这条承诺。偏好对齐用“两个回答哪个更好”的比较数据继续训练,让模型更倾向于有依据、有分寸的回答。对于算加班费、核对日期这类有标准答案的任务,还可以用程序自动判对错作为奖励,做强化学习,让模型在反复尝试中把推理过程练扎实。

后三步合称后训练(post-training)。预训练给模型能力的底子,后训练决定它怎样使用这些能力。

大语言模型的流水线 ​

把这些阶段连起来,再加上评估和部署,就是一个大语言模型从数据到上线的完整路径:

大语言模型先用海量文本预训练出基础模型,再经 SFT、偏好对齐、强化学习等后训练,评估通过后部署,失败样例回流到数据;前沿实验室做全链路,普通团队只做后训练的一段与评估部署;语音、视觉、向量模型也是先通用训练再用任务数据微调

沿着上排从左往右看,每一段的输入、产物和代价都不同:

阶段输入训练目标产物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 篇会细算。实际还要加数据加载、评估和多次调参重跑,一般是一张卡几小时的事。和预训练相比,算力差了约六个数量级。真正贵的部分在别处:整理几千条口径一致的回答,搭一套能证明“训练后更好且没变坏”的评测集。

资料助手该从哪一级着手 ​

团队对资料助手有一串不满:回答不带条款编号、有时乱承诺、查不到时编一个答案、三月份制度改了它还在说旧规则。这些问题不该一股脑交给训练,而要按成本从低到高逐级尝试:

资料助手改进手段的五级阶梯:改提示词、接检索与工具、SFT/LoRA、偏好对齐、从零预训练,成本逐级上升;误用是把常改的制度原文灌进 LoRA,正确做法是知识放检索、行为交给训练

第 1 级,改提示词。 在系统提示里写清“回答必须引用条款编号,制度里没有的就说不知道”,再给两三个示例。改完立刻能试,没有任何 GPU 成本。很多“格式不对”的问题在这一级就能解决。

第 2 级,接检索和工具。 制度原文放进知识库,问题来了先检索相关条款,把原文交给模型再回答;员工剩余年假天数这类实时数据,通过接口去人事系统查。这一级解决的是“模型不知道”,RAG 与工具调用讲了具体做法。成本主要是工程:切块、检索质量、权限。

第 3 级,SFT 或 LoRA。 提示词写得再细,模型还是时而忘带编号、拒答措辞不统一,或者提示词长到挤占上下文时,就该把这些行为用几千条示范“训进去”。LoRA 是一种只训练少量新增参数的微调方式,8B 模型一张卡就能做,第 10 篇详细讲。

第 4 级,偏好对齐。 SFT 之后模型格式对了,却仍然偶尔说“一定能批”。这类“两个都通顺、但一个更妥当”的区别,用成对比较数据训练更有效。代价是要标注偏好数据,还要防止模型学会讨好评分标准(第 11 篇)。

第 5 级,从零预训练。 对资料助手这样的团队几乎永远不需要。需要它的场景是没有合适底座的新语言、新模态,或者有严格的数据主权要求,而且团队负担得起上面那笔账。介于两者之间的继续预训练(拿现有底座再读大量领域文本)偶尔有用,第 13 篇讨论它何时值得。

判断该停在哪一级,有一个简单的诊断:把正确的制度条款直接贴进提示里,模型还答错吗? 贴了还错,是行为问题,往第 3、4 级走;贴了就对,是知识问题,留在第 2 级把检索做好。

失败案例:把制度原文灌进模型 ​

一个常见的误用是这样的。团队收集了 300 份制度文件,把每段条款改写成问答对,做了一次 LoRA 微调,希望模型“记住”公司制度,从此不用检索。上线第一周效果不错,演示时问年假答得头头是道。

三月份人事部门把“入职满一年享 5 天年假”改成了“入职即享 5 天,按月折算”。知识库里的文件更新了,模型里的旧知识还在。它继续按旧规则回答,问它依据是哪一条,它会编一个看上去合理的条款号。更麻烦的是,有些问题它把新旧两版混在一起答。团队只好重新整理数据、重训、重新评估,而下个月制度又会改。

这个失败有几个可以提前看出的信号:

  • 要学的内容是事实而不是行为,而且会变。事实放在检索里,改文件就生效;训进参数里,每次改都要重训,也很难保证旧版本被“忘干净”。
  • 回答需要出处。模型从参数里“回忆”出的内容没有可核对的来源,检索拿到的原文可以直接引用。
  • 微调数据只覆盖了训练当时的版本,评测集也是同一批数据改写的,所以上线前的评估看不出问题。

正确的分工是:制度原文放检索,训练只教行为——拿到条款后怎样引用编号、条款冲突时以新版为准、检索结果里找不到时怎样说“不知道”。这样的 LoRA 换一个月的制度也不用重训。

训练之前先备好的东西 ​

决定往第 3 级以上走时,下面几件事要先于训练脚本准备好:

  1. 评测集:几百条真实问题和期望行为,包括应该拒答的问题。没有它,训练后无法判断变好还是变坏(第 21 篇)。
  2. 底座和许可证:选哪个开源模型、许可证是否允许商用和再分发。
  3. 数据:口径一致、经过去重和隐私清理的训练样例;数据质量比训练技巧影响更大(第 09 篇)。
  4. 资源估算:显存够不够、要训多久,这是第 03、04 篇要教你手算的。

一个模型从数据出发,经过预训练得到基础能力,经过 SFT、偏好对齐、强化学习等后训练学会怎样使用能力,再经评估才能上线;语音、视觉和向量模型走的也是“先通用、再专用”的路。前沿实验室承担预训练的巨额成本,普通团队从开源底座出发,在提示词和检索解决不了、且问题属于行为时,才动用 SFT 或 LoRA。地图有了,下一篇钻进其中最小的单位,看一次训练 step 里到底发生了什么:02. 一步训练发生了什么。

别急,先让缓存热一下。