PPO(Proximal_Policy_Optimization,近端策略优化)
2026/7/23大约 5 分钟
在前面看到的 RLHF(基于人类反馈的强化学习)Step 3 中,PPO(Proximal Policy Optimization,近端策略优化) 承担了最核心的参数更新任务。它是由 OpenAI 在 2017 年提出的一种高效、鲁棒的策略梯度(Policy Gradient)强化学习算法。
为了让你彻底搞懂大模型是如何通过 PPO 算法完成价值观对齐的,我们抛开复杂的数学推导,从它的核心痛点、物理工作机理以及在大模型训练中的四个关键角色来硬核拆解:
一、 PPO 解决的最核心痛点:防止大模型“练废”
在强化学习中,大模型被称为 Policy(策略)。传统的策略梯度算法(如 REINFORCE)有一个致命的缺陷:对步长(Learning Rate)极度敏感。
- 参数更新过大(迈大步):如果某一操作让“AI 裁判”(奖励模型)打了极高的分数,算法在反向传播时就会疯狂往这个方向更新参数。由于大模型的参数量巨大,一步迈得太大,整个模型的语言能力可能会彻底崩塌,直接变成只会吐复读机词汇的废品(称为 Policy Collapse)。
- 参数更新过小(迈碎步):训练速度极慢,万卡集群空转,消耗不起昂贵的 TFLOPS 算力。
PPO 的核心贡献就是:在数学上发明了一个“紧箍咒(裁剪机制)”,既允许模型大步向前走,又强行限制它不能走得太偏,从而保障了超大规模参数训练的稳定性。
二、 PPO 的黄金底层机制:演员-裁判的四体演练
在大模型(LLM)的 PPO 训练期,显存里通常需要同时拉起 4 个完全不同角色的大模型实例。理解了这 4 个模型的物理分工,你就理解了 PPO 的执行全貌:
1. Actor Model(演员模型 / 核心 Policy)
- 角色:就是当前正在挨训、准备推向生产环境的那个大模型(如 Llama-3-Chat)。
- 任务:负责接收 Prompt 输入,然后吐出 Token 回答。
2. Ref Model(参考模型 / Reference)
- 角色:是一个冻结了参数、绝对不更新的初始模型(通常是刚做完 SFT 后的那个健康模型)。
- 任务:当演员模型(Actor)为了迎合裁判而开始说一些奇怪、不合人类语法但高分的话时,PPO 会拿 Actor 的回答和 Ref 计算 KL 散度(KL Divergence)。如果 Actor 的语言风格偏离 Ref 太远,就会遭到严厉的数学惩罚。
3. Reward Model(奖励模型 / 裁判)
- 角色:我们在前面聊到的“AI 裁判”。它的参数也是固定的。
- 任务:针对 Actor 吐出来的完整回答,在最后打出一个绝对的分数(比如 $+2.5$ 或 $-1.2$)。
4. Critic Model(评论家模型 / Value Network)
- 角色:一个同样在不断更新参数的辅助模型,它不生成文字,只输出一个实数。
- 任务:它在大模型吐出每一个 Token 的瞬间,预估当前这句话未来能拿多少总分(估计价值)。Actor 最终能拿到的更新幅度,不取决于绝对的高分,而取决于“实际得分是否超出了 Critic 的预期”(这在强化学习中叫优势函数 Advantage)。
三、 PPO 算法的核心魔法:裁剪目标函数 (Clipped Objective)
PPO 最精妙的公式设计是它的目标函数(也就是计算损失 Loss 的地方)。它主要通过以下两层防线确保模型不跑偏:
1. 概率比值限制 (Probability Ratio)
PPO 会计算新策略(当前的 Actor)和老策略(上一轮的 Actor)输出某个 Token 的概率比值 $r_t(\theta)$。
- 如果比值等于 1,说明没变。
- 如果比值等于 2,说明当前 Actor 极度倾向于吐出这个 Token。
2. 强行截断 (The Clip Operation)
PPO 的 Loss 函数强行引入了一个超参数 $\epsilon$(通常设为 0.1 或 0.2)。
- 如果算法发现新策略的膨胀程度超出了 $1 + \epsilon$(比如超过了 1.2 倍),公式内部的
clip函数就会强行把多出来的部分削平,不给任何额外的梯度回传。 - 物理含义:这相当于告诉模型:“我知道这个回答裁判喜欢,你已经往这个方向优化得够多了,再多我就不认了!”
🛠️ 四、 Infra 工程师眼中的 PPO:集群调度噩梦
在真实的 AI 算力底座(K8s / Slurm)上,PPO 是所有大模型微调阶段吞吐率(MFU)最低、显存(HBM)最容易爆的黑洞。
- 显存物理爆炸:
正如上面所说,4 个模型(Actor, Ref, Reward, Critic)同时挤在显存里。即便是全用 7B 模型,4 个合起来的参数量也极为恐怖。 - Infra 解法:
- 混合编排(Ray / Megatron):不能把 4 个模型无脑全塞进同一个 GPU 进程。现代 Infra 团队会把 Ref 和 Reward 这两个不需要计算梯度的模型,通过时分复用或者放置在专门的“推理节点”上;而把 Actor 和 Critic 部署在“训练节点”上。
- 点亮 ZeRO-Stage 3 + 极限通信:各个模型节点之间需要超高频、高并发地传输状态和 Token。必须在启动命令前配置好
NCCL_CROSS_NIC=1(多网卡并发条带化)和NCCL_NET_GDR_LEVEL=5(GPUDirect RDMA),利用无损网络死守通信带宽,防止卡间同步延迟拖垮 PPO 的端到端训练吞吐量。
