DPO, PPO, GRPO
在小米实习的第二个任务,是对VLM进行R1类似路线的复现,查看其能否实现VLM的推理能力增强。因此,在此记录一下我在尝试理解RL、DPO、PPO、GRPO的路径
RLHF参考
强化学习小白入门与概念辨析
PPO源码理解
PPO中GAE的推导
RLHF的流程与公式
代码参考
公式难以理解的话,看看代码还挺有用的,感觉代码对我来说更好理解一点
dpo局限性
样本全面性假设
参考该分析文章
评论中的一段话:
1 | 论文附录第一个证明里面reward用policy表达有个暗含的前提是对y求期望也就是要把y的样本采集全了,然后配分和赋予reward才是有效的* |
这个直接影响了数学公式转换中等价条件的成立, 因而尤其重要
但实际情况下,这个假设成立比较困难,又回到了数据收集的困难上来。
当然,数据不太全面,有时候问题也不大,只是会导致训练效果差一点。(这就是黑箱模型训练的玄学吗,全凭实践!)
此外,与PPO算法相比:
1 | 如果两个方法的训练数据都是足够多的,那么他们能训练到的最优的模型是一样的。但是从 rl 的角度,dpo 是离线方法,ppo 是在线方法,在线方法类似于生产了更多的数据。 |
RL方法中的并行策略与显存分配
跑DPO和PPO、GRPO这种强化学习方法的时候,容易遇到OOM的问题。在Pretrain和SFT阶段,我脑海中能很轻易地理解DP、PP、TP等一些概念。但涉及到多个模型,我就捉襟见肘了。
究竟是模型分布在不同的卡组上呢,还是一张卡上有混合的模型部分呢?
Deepseek对此的答案是:
1 | 在强化学习(如DPO、PPO、GRPO)中,处理多个模型时容易遇到OOM问题,主要原因是这些方法通常需要同时加载多个模型(如策略模型、参考模型、价值模型等),显存需求较大。以下是一些关键点: |
仍然没有解决我的疑问。 我想,可能是accelerator、deepspeed的并行方法我没有理解过,对我来说是一个黑箱。