语言模型训练范式:从Pretrain到PPO,GPT与Llama的训练之路

引言

用过 ChatGPT 或者各类国产大模型的朋友,可能都有过这样的疑问:这些模型到底是怎么"训练"出来的?为什么它既能陪你闲聊,又能写代码、做推理?它背后那套训练流程,是不是就是简单地"喂数据"这么简单?

本文整理自一份大模型课程课件,尝试用尽量通俗的语言,把大语言模型(LLM)的训练脉络梳理清楚。我们会从 GPT 的四阶段训练路线讲起,重点拆解 Pretrain(预训练)、SFT(有监督微调)、Reward Model(奖励模型)这三个核心环节,再聊聊 PPO 以及 Llama 系列在训练路线上做出的不同选择。读完之后,你会对大模型"从接话茬到做任务、再到做好任务"的能力演进有一条清晰的主线。

一、LLM 训练阶段总览

先来看全局。GPT 系列和 Llama 系列虽然都是大语言模型,但它们的训练阶段划分并不完全一样:

阶段 GPT 路线 Llama 路线
1 Pretrain(预训练) Pretrain(预训练)
2 SFT(有监督微调) Reward Model(奖励模型)
3 Reward Model(奖励模型) Rejection Sampling(拒绝采样)
4 PPO(近端策略优化) SFT(有监督微调)
5 —— DPO(直接偏好优化)

可以看到,GPT 走的是经典的四阶段路线:Pretrain → SFT → Reward Model → PPO;而 Llama 则演变成了五个阶段,把 SFT 往后挪了,并且用 DPO(Direct Preference Optimization)替代了 PPO。为什么会有这样的差异?我们留到后文再聊。先把每个阶段在干什么搞清楚。

二、Pretrain:最耗时、数据量最大的预训练

2.1 预训练到底在干什么

如果用一句话概括 Pretrain 阶段:让模型不停地阅读大量、大量、大量的人类文字资料,亦步亦趋地学习人类是如何使用文字的——注意,是一字一字地学习。

通过这种方式,模型能学到最多的人类知识,也能学到大量的文字表达方式。它是整个训练流程中数据量最大、也最耗时的一步。

2.2 数据量级:m、b、t 是什么概念

聊大模型,绕不开数据规模的单位。我们先统一一下口径:

单位 含义 数值
m 百万(million) 1,000,000
b 十亿(billion) 1,000,000,000
t 万亿(trillion) 1,000,000,000,000

那现在的主流模型用了多少数据做预训练?举几个例子:

  • Llama 3:15t Tokens,也就是 15 万亿个 Token;
  • Llama 4 Scout:40t Tokens;
  • Llama 4 Maverick:22t Tokens。

这里顺便解释一下 Token 的概念。Token 可以理解为模型处理文字的最小单位,大致对应一个字、一个词或者一个子词片段。我们平时说的"逐字生成",在模型内部其实就是逐 Token 生成。15 万亿个 Token,基本相当于把人类互联网上能收集到的文字资料读了个遍。

2.3 精华案例:训练数据到底是怎么被用掉的

一个模型最开始什么都不会,它怎么学?课件里给了一个非常精妙的例子——以《人类简史:从动物到上帝》(尤瓦尔·赫拉利创作的历史类著作)为例,看看模型"逐字预测"的过程。

首先要纠正一个常见的误解:在预训练阶段,模型并不需要真的输出"下一个字",而是要输出所有"候选字"的概率清单。 也就是说,给定一段上文,模型要对词表里每一个可能的下一个字都给出概率。

我们看随着上下文越来越长,候选字的概率分布是怎么变化的:

输入"人"时:

候选字
概率 13% 12% 12% 10% 9% 8% 8% 6% 5% 4% 3%

输入"人类"时:

候选字
概率 15% 11% 10% 10% 8% 6% 6% 6% 5% 4% 3%

输入"人类简"时:

候选字
概率 20% 19% 18% 12% 7% 6% 5% 4% 3% 3% 2%

输入"人类简史"时:

候选字 空格 冒号 换行
概率 16% 14% 13% 12% 10% 9% 8% 6% 4% 3% 2%

这组概率表揭示了一个非常直观的道理:模型逐字生成时,随着上下文变长,候选字的概率分布会越来越"确定"。 只给一个"人"字,下一个字可能是"的""在""家""类",分布很分散;但当上文变成"人类简"时,"介""单""史"这些字的概率明显抬升——因为模型"知道"下文大概率是"人类简介""人类简史"这类固定搭配了。上下文越充分,模型对下一个字的把握就越大。

2.4 段落联合概率与千万次迭代

理解了逐字预测,再来看训练目标。预训练真正优化的东西叫段落联合概率——让一个模型能一字不落地生成整个段落的概率。

还是用《人类简史》的例子,模型逐步生成"人类简史:从动物到上帝"的过程是这样的:

P(类) → P(类)、P(简) → …… → P(类)、P(简)、P(史)、P(:)、P(从)、P(动)、P(物)、P(到)、P(上)、P(帝)、P(\n)
→ 继续 P(尤)、P(瓦)、P(尔)、P(·)、P(赫)、P(拉) ……

每一个字的预测都依赖前面所有字,整段的联合概率就是这些条件概率的连乘。训练的目标,就是不断调整模型参数,让它对海量真实段落的联合概率越算越准。

这个调整规模有多夸张?我们算笔账:假设每 4000 个 Token 是一个段落,那么 15 万亿 Token 就相当于 37.5 亿个段落。LLM 被要求逐一调整这 37.5 亿个段落的联合概率,模型版本从 v1.1 → v1.2 → v1.3 → v1.4 → ……,经历上千万次迭代,才最终收敛。

2.5 训练成本:烧的都是真金白银

预训练的贵,是字面意义上的贵。两个真实案例:

模型 数据集规模 GPU 规模 单次训练时长
Llama 2 65B 1.4 万亿 Tokens 2048 个 A100 GPU 21 天
Llama 3.1 405B 15 万亿 Tokens 16384 个 H100 GPU 54 天

一个 H100 的价格在 25 万人民币左右,16384 个 H100 光是硬件投入就是天文数字,再跑上 54 天——这就是为什么说预训练是巨头的游戏。

2.6 Pretrain 结束,我们得到了什么?

预训练完成后,我们得到的是一个非常熟悉人类语言的模型:它阅读过海量人类文献资料,语言能力与人类近似,给出初始文字后猜下一个字的能力也与人类近似。

但它有一个核心问题:预训练模型说起话来非常像"接话茬",而不是在"做任务"。 你问它一个问题,它可能会顺着你的话续写下去,却未必真正回答你的问题。这就引出了下一个阶段——SFT。

三、SFT:让模型从"接话茬"到"做任务"

3.1 先梳理清几个概念:有监督、无监督、自监督、半监督

在讲 SFT 之前,我们先把机器学习中几个容易混淆的概念辨析清楚。

有监督学习:使用有标签的数据进行训练。比如情感分类任务:

  • "商家送货速度棒棒哒!" → 正向
  • "送货速度可太慢了,差评。" → 负向

再比如相似度判断任务:

  • "这可太好吃了" 与 "味道确实是真不错" → 相似
  • "多吃水果对身体有好处" 与 "痛风病人不要吃海鲜" → 不相似

每条数据都有人工标注好的答案,模型照着学,这就是有监督。

无监督学习:使用无标签的数据进行训练,数据本身不带答案。

自监督学习:前面讲的 Pretrain 阶段的处理方式就叫自监督——用文本自身来构造监督信号。一句话摆在那里,盖住最后一个字让模型去猜,"标准答案"就是原文本身,不需要人工标注。这也是为什么预训练能用得起万亿级的数据:标签是白来的。

半监督学习(Semi-supervised):把 Pretrain 和 SFT 两个阶段组合起来,就叫半监督。它的典型场景是"不缺数据,但缺标签"——海量无标签文本拿去做预训练,少量有标签数据拿去做微调。

3.2 SFT 解决什么问题

SFT(Supervised Fine-Tuning,有监督微调)要解决的核心问题,正是上一节留下的尾巴:预训练模型只会"接话茬",不会"做任务"。

这里要介绍一个重要概念——指令微调(Instruction Tuning)。它的思想很朴素:如果你未来希望模型做什么类型的任务,就用什么样的数据去做指令微调。想让模型会对话,就喂对话数据;想让模型会分类,就喂分类数据。常见的任务类型包括:对话任务、分类任务、判断任务、推理任务、代码生成任务等等。

从关系上说,Instruction Tuning 是 Fine Tuning 的一种,而这类微调基本都使用有监督(Supervised)学习,也就是我们说的 SFT。

3.3 SFT 的数据量:小得惊人

跟预训练动辄万亿 Token 相比,SFT 的数据量普遍不大,大概只有几十万条,大约是预训练阶段的 1/5000。做个直观的对比:

阶段 数据规模(以 InstructGPT 为例)
Pretrain 3000 亿个 Token(假设每 4000 个 Token 一个段落,约 7500 万段落)
SFT 几十万条标注数据(约为预训练的 1/5000)

这背后的逻辑是:预训练阶段模型已经学到了语言能力和世界知识,SFT 只需要用少量高质量的数据"点拨"一下,教它怎么把这些能力用在具体任务上。

3.4 SFT 结束,我们得到了什么?

SFT 完成后,我们得到的是一个会做各类任务的模型,尤其是对话任务。你问它问题,它能正经回答了,而不是自顾自地续写。

但新的核心问题又出现了:会做任务,和能优秀地做任务,还是有很大差距。 模型的回答可能对也可能错,可能 helpful 也可能胡说八道。怎么让模型的回答质量更进一步?这就需要 Reward Model 登场了。

四、Reward Model:给模型的回答"打分"

4.1 为什么需要奖励模型

从 Reward Model 这一阶段开始,训练用上了 LLM 自己生成的数据,这是个重要的转折点。

为什么需要它?因为评估是一件很难的事情

  • 评估一个模型的整体能力,很难;
  • 评估一个具体问题的回答好不好,也很难;
  • 而继续训练,需要对每一条回答逐一评估——靠人一条条看,根本不现实。

所以思路是:训练一个专门打分的模型(Reward Model),让机器替人完成海量评估工作。

4.2 训练流程六步走

Reward Model 的训练流程可以拆成六步:

  1. 准备 Prompt 和 Response:准备一系列 Prompt(几万到几十万条),让模型给每个 Prompt 生成多个 Response;
  2. 设计标注方案:想清楚怎么标注——是打分?评级?还是排序?
  3. 找人标注:找一批人来做标注工作(课件中提到一个真实的行业细节:肯尼亚 2 美元每天的标注工);
  4. 训练 Reward Model:拥有了标注数据之后,正式开始训练奖励模型;
  5. 达成目标:训练好的 Reward Model,对任意给定的一个 Prompt-Response pair,都能给出一个打分;
  6. 投入后续使用:利用 Reward Model 去完成后续步骤(也就是强化学习微调阶段)。

简单来说,Reward Model 就是一个"阅卷老师",把人类对回答质量的偏好,固化成了一个可以自动打分的模型。

五、PPO 与 Llama 的训练路线差异

5.1 PPO:用奖励模型的打分做强化学习

GPT 路线的最后一个阶段是 PPO(Proximal Policy Optimization,近端策略优化)。课件对 PPO 的算法细节没有展开,这里我们只做概念性的介绍。

PPO 的核心作用,一句话说清:用 Reward Model 给出的打分作为奖励信号,通过强化学习的方式继续微调模型。 模型生成回答 → Reward Model 打分 → 得分高的行为被"鼓励",得分低的行为被"抑制" → 模型参数据此更新。如此反复,模型就越来越倾向于产出高质量的回答。

可以说,Pretrain 和 SFT 是"模仿人类",而 Reward Model + PPO 则是让模型在"人类偏好"的指引下自我进化。

5.2 Llama 的路线选择

回到开头那张对比表,Llama 的训练路线是:Pretrain → Reward Model → Rejection Sampling → SFT → DPO。

与 GPT 路线相比,有几个值得注意的差异:

  • 顺序调整:Llama 把 Reward Model 的训练提前到了 SFT 之前,并在中间加入了 Rejection Sampling(拒绝采样)环节;
  • 用 DPO 替代 PPO:最后一步偏好优化,Llama 用的是 DPO(Direct Preference Optimization,直接偏好优化),而不是 PPO。

DPO 的思路同样围绕"人类偏好"展开,但实现路径与 PPO 不同。由于课件未对这两条路线的具体细节做更多展开,这里就不深入展开了,感兴趣的同学可以查阅相关论文进一步学习。

六、总结:从"接话茬"到"做好任务"

最后,我们把整条主线串起来。大模型的训练,本质上是一场能力的三级跳:

  1. Pretrain:学会"接话茬"——模型在海量文本上一字一字地学习,掌握了人类语言和知识,但只会顺着上文往下接;
  2. SFT:学会"做任务"——用少量高质量的指令数据点拨模型,让它能正经完成对话、分类、推理、写代码等任务;
  3. Reward Model + PPO/DPO:学会"做好任务"——用奖励模型把人类偏好变成可自动计算的分数,再通过强化学习让模型的回答质量精益求精。

从 15 万亿 Token 的预训练,到只有预训练 1/5000 数据量的 SFT,再到用机器打分替代人工评估的奖励模型——大模型训练的每一步,都在"数据、成本、效果"之间寻找最优解。理解了这条主线,再看各种新模型、新范式的新闻,相信你会有更清晰的判断。

posted @ 2026-07-27 11:02  coderliu_cn  阅读(42)  评论(0)    收藏  举报