大模型(LLMs)强化学习——PPO 面经
来源:AiGC面试宝典 日期:2024年5月5日
一、大语言模型 RLHF 中的 PPO 主要分哪些步骤?
大语言模型 RLHF 中的 PPO 分为三个核心步骤:
- 采样(Sampling):生成答案
- 反馈(Feedback):计算奖励
- 学习(Learning):更新参数
对应的实现逻辑如下:
policy_model = load_model()for k in range(2000):
# 步骤1:采样(生成答案)
prompts = sample_prompt()
data = respond(policy_model, prompts)
# 步骤2:反馈(计算奖励)
rewards = reward_func(reward_model, data)
# 步骤3:学习(更新参数)
for epoch in range(4):
policy_model = train(policy_model, prompts, data, rewards)📝 通俗解释:PPO训练就像训练一个学生。采样相当于学生做题(根据问题生成答案),反馈相当于老师批改打分(reward model给答案评分),学习相当于学生根据批改意见订正(更新模型参数)。这三个步骤循环进行,让学生(模型)越来越聪明。
二、举例描述一下大语言模型的 RLHF?
大语言模型的 RLHF,实际上是模型"先试错再学习"的过程。
RLHF 好比是老师与学生的角色扮演:
- 我们扮演老师的角色,给出有趣的问题。
- 模型则像小学生一样,不断尝试给出答案。
- 模型会根据我们给出的问题,写出它觉得正确的答案,但这些答案不一定是对的。
- 我们会结合正确答案进行打分:表现得好→给予表扬;表现不佳→给予指导反馈,帮助它不断改进,直到达到令人满意的水平。
📝 通俗解释:想象一下,你教一个小孩写作文。他写完后,你会告诉他哪些句子写得好,哪些需要改进。RLHF就是这个道理——让模型通过"试错"学习,奖励好的回答,惩罚差的表现,最终变得越来越聪明。
三、大语言模型 RLHF 采样篇
3.1 什么是 PPO 中采样过程?
PPO 中采样过程:学生回答问题的过程,是模型根据提示(prompt)输出回答(response)的过程,或者说模型自行生产训练数据的过程。
| prompt(问题) | response(回答) |
|---|---|
| 请告诉我三种常见的动物。 | 猫、狗、鹦鹉。 |
| 如何评价电影《爱乐之城》? | 音乐的经典令人赞叹不已,结局却让人感到五味杂陈。 |
| 詹姆斯和库里谁更伟大? | 他们都很伟大,我无法比较。 |
📝 通俗解释:采样就像考试时学生看到题目后写出答案。在PPO中,模型看到问题(prompt),然后写出自己的回答(response)。这些回答会成为后续训练的数据。
3.2 介绍一下 PPO 中采样策略?
PPO 中采样工作通过一种策略(Policy)来实现,Policy 由两个模型组成:
演员模型(Actor):我们想要训练的大模型。在用 PPO 训练之前,它是 RLHF 第一步训练出来的 SFT(Supervised Fine-Tuning)模型。输入一段上下文,它将输出下一个 token 的概率分布。
评论家模型(Critic):强化学习的辅助模型。输入一段上下文,它将输出下一个 token 的"收益"(即预期能获得的奖励)。
📝 通俗解释:Actor(演员)就像学生,负责"输出答案";Critic(评论家)就像老师,负责"评估答案好不好"。学生写出答案后,老师来打分并告诉学生哪里可以改进。这两个角色配合,让学生(模型)越来越厉害。
3.3 PPO 中采样策略中,如何评估"收益"?
收益(Return):从当前 token 开始,模型能够获得的总奖励(浮点数标量)。这里的奖励包括 Reward Model 给出的奖励。
📝 通俗解释:收益就像考试的总分。如果一道题答对了,不仅当前这道题得分,后面的相关题目也可能因此受益。PPO中的"收益"就是综合考虑从现在到未来的所有奖励总和。
四、在 PPO 过程中,Reward Model 的效果上会有什么问题?
在 PPO 过程中,Reward Model 的准确率会逐渐下降,这就是所谓的 Reward Model 的 OOD(Out-of-Distribution)问题:
- Reward Model 的训练样本一般来自 SFT 模型的 responses
- 在 PPO 过程中,Policy Model 刚开始和 SFT 生成的 response 很相似,所以 Reward Model 准确率较高
- 但随着 Policy Model 逐渐偏离 SFT,Reward Model 的准确率会持续下降
📝 通俗解释:这就像让一个老师批改从未见过的作业。一开始学生写的答案和老师见过的差不多,老师批改很准;但后来学生开始"创新",写出老师没见过的答案,老师就不知道怎么打分、容易打错了。这就是Reward Model的OOD问题——模型生成的答案"超纲"了,Reward Model不认识。
五、如何解决 Reward Model 的 OOD 问题?
方案一:Llama2 的做法(重新标注)
在训练过一段时间 RLHF 以后,重新对 Policy 采样 pair 对,人工标注数据,然后继续训练 Reward Model。
缺点:太费人力,难以持续。
方案二:Reward Modeling 论文的方法(Meta Learning)
参考论文 Secrets of RLHF in Large Language Models Part II: Reward Modeling [2]:
- 整体思想:由于 Policy Model 在 Reward Model 训练时会向 reward 高的方向更新
- Reward Model 应该对 reward 高的 response pair 更有区分度
- 设置梯度更新逐渐倾向于对 reward 高分的 training response pair 倾斜
缺点:由于缺少对模型 on policy 的采样,效果不太好。
方案三:West-of-N 方法(合成偏好)
参考论文 West-of-N: Synthetic Preference Generation for Improved Reward Modeling [3]:
- 不再用人进行标记,而是通过 Reward Model 本身对新的模型 on policy pair 进行打分
- 取一个 query 的 response set 中最高分和最低分的数据组成 pair
- 加入到 Reward Model 的训练中
缺点:上限受原先 Reward Model 的能力影响。
📝 通俗解释:解决Reward Model"不认识新答案"的问题,有三种思路:
- 找人帮忙(Llama2方法):让人重新标注新出现的数据,但太费时费力
- 让老师更聪明(Meta Learning方法):让Reward Model更关注高分答案,学会区分好坏
- 自己给自己打分(West-of-N方法):用现有的Reward Model给新答案打分,取最好的和最差的来训练自己
个人总结
如何做出泛化能力比较强的 Reward Model,会是一个比较难、也是比较限制模型发展的问题。
六、RLHF 中 PPO 有什么问题?为什么大家都设计很多方法去替代它?
PPO 主要存在以下问题:
1. 模型复杂度高(Notable Complexity)
由于 PPO 中需要4个模型同时加载在 GPU 中:
- Policy Model(策略模型)
- Reference Policy Model(参考策略模型)
- Value Model(价值模型)
- Reward Model(奖励模型)
会占用大量 GPU 资源。
📝 通俗解释:PPO训练就像同时请四个老师来教一个学生——演员老师(负责输出)、参考老师(负责对比)、评论家老师(负责打分)、奖励老师(负责评估)。每个老师都要占一台电脑(GPU),成本很高。
2. GPU 利用率低(Online Learning Problem)
由于模型是在线采样:
- Policy 过 batch samples 时,Reward Model 会空置
- Reward Model 给 pair 打分时,Policy Model 也会空置
- 导致 GPU 利用率不高
📝 通俗解释:就像一个厨房只有一个厨师在工作。切菜时炉子空着,炒菜时砧板空着——PPO中各个模型不能同时工作,导致硬件资源浪费。
3. 调参困难(Hyperparameter Tuning)
PPO 的超参数调节比较困难,需要一些经验丰富的"炼丹高手"才能调好。
📝 通俗解释:PPO就像一台复杂的机器,有很多旋钮(超参数)要调整。转错一点,机器就可能罢工。需要有经验的老师傅才能调对。
参考资料
- Asynchronous Methods for Deep Reinforcement Learning (2016): https://arxiv.org/abs/1602.01783
- Proximal Policy Optimization Algorithms (2017): https://arxiv.org/abs/1707.06347
- Fine-Tuning Language Models from Human Preferences (2020): https://arxiv.org/abs/1909.08593
- Learning to Summarize from Human Feedback (2022): https://arxiv.org/abs/2009.01325
- LLM 预训练之 RLHF(一):RLHF 及其变种: https://zhuanlan.zhihu.com/p/657045745
- 拆解大语言模型 RLHF 中的 PPO: https://zhuanlan.zhihu.com/p/645225982
- 大模型的面试题系列-8: https://zhuanlan.zhihu.com/p/686257197
- 大模型的面试题系列-12: https://zhuanlan.zhihu.com/p/686773718
- 大模型的面试题系列-13: https://zhuanlan.zhihu.com/p/686978224
参考文献
- [1] Touvron H, Martin L, Stone K, et al. Llama 2: Open foundation and fine-tuned chat models[J]. arXiv preprint arXiv:2307.09288, 2023.
- [2] Wang B, Zheng R, Chen L, et al. Secrets of RLHF in Large Language Models Part II: Reward Modeling[J]. arXiv preprint arXiv:2401.06080, 2024.
- [3] Pace A, Mallinson J, Malmi E, et al. West-of-N: Synthetic Preference Generation for Improved Reward Modeling[J]. arXiv preprint arXiv:2401.12086, 2024.