RLHF 及其变体 Iterative DPO/RLOO/GRPO/REINFORCE 算法和工程分析 - 知乎
2022年底 OpenAI 的论文 Instruct GPT 引爆了 RLHF 或者目前叫做 Post training 的概念。大体思想是用 Pair-wise 的 Preference Dataset 结合 Ranking Loss 训练一个 RM,然后用 PPO 算法结合此 RM 函数训练 SFT 后的 GPT 模型,实现模型对齐比如提升安全性,数学能力等等。除了这个 RM 是用标注数据训练出来的 ProxyRM,以及加上了一个 KL penalty 约束策略距离外,和传统的 PPO 算法在流程上并没有什么太大区别。 但是这个 PPO 算法用到 LLM 上面后也引发了一些问题,其中最为麻烦的就是 PPO 算法需要同时加载4个大模型,并且在一个系统中同时存在模型推理加速(PPO样本生成)和模型训练加速的问题,在模型规模巨大今天,这让 AI Infra 的实现和优化变得尤为挑战。尤其是面对 LLama3.1 405B 这样的巨无霸模型,实现一个多大模型RLHF系统的加速优化和稳定训练是一件尤为棘手的事情。 于是随后从 2023年到2024 年这段时间,越来越多的新的 "RLHF" 类算法出现,其中包括 DPO 等变体,也包括 RLOO/REINFORCE 等方面的工作。基本的出发点都是为了简化 RLHF 的流程,实现更低的训练成本和更好的性价比。 DPO 在这些算法中可谓是最重要的一个算法,其基本思想是既然 RLHF 中的 RM 是用标注数据训练出来的。那我为何要将 RM 和 RLHF 训练分为两个阶段,直接从理论上将两个训练步骤的 Loss 融合为一个训练 Loss。最后得到一个类似在正样本上做SFT,同时在负样本上做反向SFT的Loss(假设不考虑 KL penalty 约束): DPO 的 Loss 简明扼要,仅需 SFT 和 REF 两个模型,无需处理 PPO 繁琐的实现问题。如果我们用传统 RL 的思路来理解 DPO,其更像是一个 Offline 的 REINFORCE 算法。我们只需要认为正样本的reward为+1,而负样本的reward为-1。然后用 REINFORCE 直接基于偏好数据集训练即可。而 KL penalty 的约束也是可以加到这个 reward 值上即可,亦或用额外的 KL Div Loss 来约束。 从这个角度我们就很容易发现 DP
2022年底 OpenAI 的论文 Instruct GPT 引爆了 RLHF 或者目前叫做 Post training 的概念。大体思想是用 Pair-wise 的 Preference Dataset 结合 Ranking Loss 训练一个 RM,然后用 PPO 算法结合此 RM 函数训练 SFT 后的 GPT 模型,实现模型对齐比如提升安全性,数学能力等等。除了这个 RM 是用标注数据训练出来的 ProxyRM,以及加上了一个 KL penalty 约束策略距离外,和传统的 PPO 算法在流程上并没有什么太大区别。 但是这个 PPO 算法用到 LLM 上面后也引发了一些问题,其中最为麻烦的就是 PPO 算法需要同时加载4个大模型,并且在一个系统中同时存在模型推理加速(PPO样本生成)和模型训练加速的问题,在模型规模巨大今天,这让 AI Infra 的实现和优化变得尤为挑战。尤其是面对 LLama3.1 405B 这样的巨无霸模型,实现一个多大模型RLHF系统的加速优化和稳定训练是一件尤为棘手的事情。 于是随后从 2023年到2024 年这段时间,越来越多的新的 "RLHF" 类算法出现,其中包括 DPO 等变体,也包括 RLOO/REINFORCE 等方面的工作。基本的出发点都是为了简化 RLHF 的流程,实现更低的训练成本和更好的性价比。 DPO 在这些算法中可谓是最重要
Explore this link on the map →