← 返回资讯
林远舟
技术编辑
已审核

神秘而难以理解的大模型强化学习技术

你有没有经历过这种场面?公司请了个“专家”来分享,三小时PPT翻下来,RLHF、PPO、reward model这些词满天飞,台下听得热血沸腾。

神秘而难以理解的大模型强化学习技术

神秘而难以理解的大模型强化学习技术


2023年最让我崩溃的RLHF:从PPO到DPO,我的血泪史

开场:那个永远没等到的邮件

你有没有经历过这种场面?公司请了个“专家”来分享,三小时PPT翻下来,RLHF、PPO、reward model这些词满天飞,台下听得热血沸腾。

散会了,我凑过去问了个实际问题:“advantage function在LLM场景下具体怎么算的?”

对方一愣。

打个哈哈说“回头发邮件给你”。

这封邮件,我到现在都没收到。🤯

又去问我司的强化学习大牛,人家正忙着搞机器人抓取,头都不抬扔下一句:“这东西跟游戏里用的PPO一回事,自己看论文。”

行吧,自己啃就自己啃。

说到这儿你可能觉得我惨,但更惨的在后面——我前两年拿强化学习做过量化交易,A2C、DDPG、PPO都撸过一遍。当时用PPO调了一个日内交易策略,回测收益率干到30%,心里那个美啊。但实盘一直没敢上——收益曲线太顺滑了,明显过拟合。不过PPO比别的算法稳定是真的,超参数落在一个范围内都能收敛。

所以当我发现LLM对齐的核心还是PPO时,心里其实有点底。

但真等我上手搓模型……

那才叫一个:大象闯进瓷器店。


第一节:PPO进了语言模型,画风全变了

在标准RL里,PPO的活很清晰:策略网络看状态、做动作、拿reward、更新参数。状态空间和动作空间都有明确的维度,你说啥它理解啥。

但到了语言模型场景,这套东西直接变形了。

你想想,动作空间是什么?词汇表大小,一般5万tokens。观察空间呢?输入token序列的分布,维度是(词汇表大小^序列长度)。

吓人不?这个数字大到你想骂人。

更绝的是——环境是谁?

是人。对,就是活生生的人类。因为reward是人给的(或者通过奖励模型模拟的)。策略网络就是正在微调的LLM,它生成回复的过程就是跟环境交互。一个轨迹就是一段prompt加上生成的回复。

这本身没什么,真正让我头疼的是PPO训练时需要的四个模型:策略模型、价值模型(或者价值头)、奖励模型、参考模型。

四个模型同时塞进显存,那酸爽谁用谁知道。

我用DeepSpeed-Chat 0.3版本训Baichuan2-13B时,单卡A100 80G跑不起来啊。搞了四卡ZeRO-3才勉强塞下,训练过程比预期慢一倍。你说这是搞AI还是搞健身?天天举铁搬模型。

更气的是调参。

PPO的KL惩罚系数、clip range、GAE lambda,这些在游戏环境里随便拉一拉就能跑的值,到了语言模型里完全失效。我测试了三四组reward模型,reward曲线一路狂飙到3,但生成结果却越来越胡言乱语。

中间有一次奖励模型打分突然跳水到负数。

我排查了半天才发现——生成的句子长度太长,reward模型没见过这种格式,直接判了低分。

你看,这根本不是强化学习的问题,而是数据管道的问题。

InstructGPT那篇论文我早就读了,当时觉得挺清楚。但真正复现的时候,你会发现很多细节被一笔带过。比如reward模型训练时的pairwise ranking怎么做数据增广,比如PPO阶段初期策略模型和参考模型之间KL怎么控制。

后来LLaMA 2官方发技术报告,把RLHF部分写得稍微细了点。但我按他们的配置训了一下,出来的基座在helpfulness和harmlessness上有明显trade-off——你调一个维度另一个就崩。

至于百川2,他们直接承认自己用了RLHF,但没有公开太多PPO细节。

我猜,他们也吃了不少苦头。😏


第二节:DPO像是救星,但别当万能药

2023年5月,DPO那篇论文出来时我正在出差。酒店里一口气读完,说实话有种“原来还有这条路”的感觉。

核心思想简单得让人想拍大腿:

既然我们追求的最优策略和奖励函数之间可以推导出一个闭式关系,那为什么非得先训个奖励模型再用PPO去近似呢?直接把偏好数据构建成损失函数来更新策略不就行了?

换句话说,不需要四个模型了,训练时只要一个模型和一组偏好对。

你说香不香?

我第一时间把它应用到手头的一个客服对话对齐任务上。数据来自人工标注的偏好pair,大概十万条。用DPO取代原本的PPO方案后,训练时间缩短了60%,显存占用减半。生成结果的BLEU和人工评分甚至略好于PPO版本。

读到这儿你可能觉得DPO是万能钥匙了。

但问题也来了,而且是大问题:

偏好数据的质量直接决定DPO的成败。

有些标注员打的“chosen”和“rejected”区别很小,模型学不到东西。最离谱的是有一次我发现数据里存在循环偏好(A>B, B>C, C>A),DPO训练直接振荡了。

你想想,模型都懵了:你到底要我学啥?

这也就是后来SPO(引入纳什均衡)要解决的问题。

另外,DPO也不是完全跟RL决裂。它的推导依然基于Bradley-Terry模型,假设偏好是全局一致的,只是把优化过程从RL变成了监督学习。但在多轮对话场景里,奖励累积的问题DPO没有直接处理。

所以后来有人搞了multi-turn DPO。

2023年下半年,开源社区冒出了一堆DPO的变体。RRHF就更狠了,说我不但不要奖励模型,连策略模型和参考模型都能压缩成一个,用排名损失直接对齐。

我试过RRHF,效果确实接近DPO,但需要自己生成候选回复并排序,数据流程又复杂了。

每个方法都宣传自己“简单高效”,等你真上手,每个都有暗坑。

行吧,这就是技术圈的日常。


第三节:框架换了三趟,每趟都有新意外

2023年初我选DeepSpeed-Chat,因为它是第一个把RLHF流水线打包的工具。

但用下来问题不少。

首先是版本分裂。DeepSpeed-Chat早期版本和最新的DeepSpeed混用会导致各种CUDA kernel不兼容。有次我更新了DeepSpeed,DeepSpeed-Chat直接跑不起来,查了一下午发现是某些自定义算子失效了。

而且它的文档写得比较简单,reward model的训练数据格式要求很死板,我得花时间写转换脚本。说白了,工具是好的,但不太懂我这种普通用户的痛苦。

到了年中,Hugging Face的TRL开始支持PPO和DPO,社区明显往那边迁移。

我试了TRL的trl.SFTTrainer + trl.PPOTrainer,API清爽很多,但默认配置对LLaMA的支持还没有优化,得自己写data collator。不过TRL最吸引我的是它把reward model作为独立组件,你可以用自己的模型打分,灵活性高。

后来我用TRL单独做了DPO的对比实验,比DeepSpeed-Chat快了一截。

LLaMA 2发布时带了一套RLHF的具体实现,但那个代码仓库纯粹是科研风格,到处是硬编码参数。不过它的技术报告里“奖励模型对生成长度敏感”这一点对我帮助很大。

我在做Baichuan2的RLHF时,特别对生成长度做了分桶,reward模型在不同长度范围内各训一个,然后投票。

效果明显改善。

还有2023年末出现的推理加速框架,比如vLLM的PagedAttention和DeepSpeed-MII的Chunked KV Cache。对齐训练不太直接用它们,但在RLHF的数据生成和推理阶段,它们对效率提升很明显,尤其是beam search和prefix共享加速。

回过头看,2023年整个RLHF生态就像西部拓荒:框架日新月异,但每个都有坑。

到今天我最推荐新手直接上TRL+DPO,省事。

如果非要用PPO,得做好显存和调参的心理准备,而且得先花时间搞稳定的reward model——那个才是天花板。


结语:不再神秘,但依然敬畏

去年年末我跟团队复盘时说过一句话,现在分享给你:

2023年对齐技术最大的进步不是哪个算法更优,而是让更多人开始正视“数据”和“稳定训练”比“算法创新”更重要。

你看,PPO这个黑盒我不再觉得神秘了,它就是一个有潜力的工具,但对LLM来说,环境和reward的构建才是真正难的地方。DPO的出现降低了门槛,但你得认真对待偏好数据本身的质量。

我的预感是,2024年会出现更多不依赖RL的对齐方法,比如纯粹的智能体反馈、自生成数据蒸馏,甚至直接把alignment loss塞进SFT里(已经有ORPO这么干了)。强化学习方向里的价值函数、时序差分这些概念,在大模型里应用的空间会越来越小——语言模型自己的表征能力太强了,很多RL里的近似技巧在自回归生成面前反而显得笨拙。

但话说回来,如果你真想理解AI怎么学会“讨好”人类,RLHF这条路线绕不开。哪怕你最终用的只是DPO一行loss,背后的RL思维——用交互替代标注、用整体回报替代局部拟合——才是真正决定效果上限的东西。

2023年我花了无数个通宵调reward曲线、调试显存泄漏、纠结KL惩罚系数。每个深夜都在怀疑自己是不是选错了方向。

但当我看到最终模型能够拒绝一个危险指令、或者主动追问用户需求时,又觉得这事儿值得。

做RLHF,不仅要懂强化学习,还得有个好心态。

说白了,你得学会跟模型的“脾气”死磕,而它的脾气,往往比你的大。


说真的,搞RLHF,算法是骨架,数据是血肉,但只有心态才是最后能带你上岸的那条船。 🚢

565
11301 阅读
3 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月20日 15:40

林远舟

技术编辑

全栈工程师出身,做过 5 年技术社区运营。对 AI 编程工具、开发者生态有深入研究,喜欢用实测数据说话。

读者评论 3

Dev小王 2天前
终于有人把这个说清楚了,收藏了。
回复 点赞 (8)
A
AI研究员 5天前
观点有道理,不过我觉得还需要考虑算力成本的问题。
回复 点赞 (11)
M
创业者Mark 1周前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)