文章核心观点 文章是一篇对当前开源强化学习训练框架的技术调研与对比分析,作者基于其多模态模型在实际环境中进行多轮强化学习训练的业务需求,重点评估了verl、slime、AReaL、RL2等框架,并最终选择了AReaL框架 其核心观点在于,当前强化学习训练框架在适配复杂、长尾的Agentic环境时面临挑战,而异步训练架构与灵活的环境交互设计是解决这些挑战的关键方向 [2][3][11] 强化学习训练框架的现状与挑战 - 开源社区强化学习训练框架呈现百花齐放的状态,包括老牌的openlhf、trl、unsloth、verl以及今年新开源的slime、AReaL、Rlinf、RL2、ROLL等 [2] - 目前没有一款框架能很好地适配多模态模型进行Agentic强化学习训练,主要难点在于Agentic环境与具体业务强相关,难以从框架层面抽象出通用函数或类来适配所有环境 [2] - 作者在调研中主要纠结于几个关键点:框架的社区活跃度与环境适配代码修改量、训练过程中的GPU编排问题、数据流向与数据结构的设计,以及异步训练的支持程度 [2][3][5][6] 同步与异步训练架构的对比 - 在2025年前半年的RLHF和RLVR时代,训练长尾效应不明显,因此早期成熟的强化学习训练框架(如verl)主要采用训练和推理同步的架构方案 [3] - 同步训练架构遵循先推理后训练的固定流程,可能导致训练效率低下和GPU资源空转,例如在相同GPU集群上交替卸载模型,或在不同集群上采用流水线方案 [3][5] - 异步强化学习训练成为新框架的优先支持特性,它能提升效率,但会引入数据偏移问题,使训练从on-policy退化为off-policy,并且需要为训练和推理分配不同的GPU资源以优化资源利用率 [11] 关键技术实现与设计考量 - 训推分离:当前几乎所有强化学习训练框架都采用训练与推理分离的架构,训练引擎使用FSDP、Megatron,推理引擎采用sglang或vllm,中间通过Ray进行资源分配与调度 [12] - 权重更新机制:训练侧更新模型权重后,需将新权重传递给推理引擎,涉及不同模型切分方案间的适配,常用技巧包括分桶传输、通过Router转发等以降低通信开销 [16][17][18] - 训推Gap问题:由于推理引擎的优化(如KV量化、算子融合)可能导致其输出的logits与训练引擎存在差异,解决方法包括使用重要性采样来拟合分布差异,并需注意推理量化(如4bit)可能因分布差异过大而被裁剪,导致训练不稳定 [19][20][21][22] - Token一致性:为避免二次编码导致的token分布不一致,所有强化学习训练框架在rollout返回时会同步返回输出的token ids,直接供训练引擎使用 [23] 环境交互与Agentic训练支持 - 环境交互部分在所有强化学习框架中均为异步实现,以避免阻塞 [28] - verl框架的Agent多轮训练逻辑相对僵化,其设计以工具调用视角为主,处理流程写死,难以适应每个rollout环境状态不一致的复杂交互需求 [24][25] - AReaL和slime框架在环境适配上设计更巧妙,支持通过自定义函数或工作流基类来实现复杂的、自定义的环境交互逻辑,灵活性更高 [26][27] 异步训练与长尾问题解决方案 - 异步训练核心:采用生产者-消费者模型,推理引擎作为生产者进行rollout,训练引擎作为消费者获取数据进行训练,通过消息队列管理数据 [29] - 陈旧度管理:引入staleness参数控制数据有效性,当rollout数据的模型版本号与当前最新模型版本号差距超过设定值(通常为1-2)时,数据将被丢弃,以防止因模型分布偏离过大导致训练无效 [32] - 部分Rollout:这是解决长尾任务导致资源浪费的关键技术,当需要更新推理引擎权重时,可暂停正在进行的rollout任务,更新权重后从中断处继续,从而兼顾训练连续性与模型更新及时性 [37][38] 强化学习算法与奖励设置的思考 - 当前大语言模型的强化学习算法主要分为序列级奖励和Token级奖励两类,根本上都是PPO算法的变体 [39] - 奖励设置在Token粒度上难度较大,因为很难为序列中的每个Token设计客观合理的奖励,而实际业务的动作粒度通常由多个Token组成,因此是否存在针对业务动作粒度的最优奖励方案仍有待验证 [39] - 强化学习训练的成功关键被认为在于环境和奖励的设置,当前主流方案仍依赖大语言模型或智能体作为评判者,并辅以多种提示词技巧,但根本上仍无法完全避免奖励黑客问题 [42] 各框架特点总结与选择建议 - verl:代码工程化程度高,侧重训练与推理引擎的调度,践行SPMD思想,但异步训练支持较晚,且Agent循环控制流较为僵化,修改成本高 [12][25][43] - slime:代码简洁,流程明确,但早期对FSDP适配及异步训练的支持尚不成熟 [43] - AReaL:代码结构复杂但质量高,异步训练方案成熟,环境交互设计灵活,支持自定义工作流,是作者最终的选择 [2][29][44] - RL2:代码逻辑简单,适合初学者入门以理清强化学习训练的基本逻辑 [45]
聊聊关于 Agentic RL 训推框架的一点看法和思考
自动驾驶之心·2025-12-16 08:03