Workflow
verl
icon
搜索文档
聊聊关于 Agentic RL 训推框架的一点看法和思考
自动驾驶之心· 2025-12-16 08:03
文章核心观点 文章是一篇对当前开源强化学习训练框架的技术调研与对比分析,作者基于其多模态模型在实际环境中进行多轮强化学习训练的业务需求,重点评估了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]
从模型到生态:2025 全球机器学习技术大会「开源模型与框架」专题前瞻
AI科技大本营· 2025-09-26 13:49
开源与闭源AI模型性能趋势 - 2025年开源与闭源模型的性能差距已从常见的8%缩小至1.7% [1] 2025全球机器学习技术大会专题设置 - 大会特设“开源模型与框架”专题,聚焦底层构件的开源创作与实践 [1] - AI竞争已扩展至数据、模型、系统和评测四大支柱 [12] - 大会设置十二大前沿专题,覆盖大模型技术演进与智能体工程实践 [13] 参会机构与行业参与度 - 参会机构包括北大、清华、百度、阿里、腾讯、字节跳动等国内顶尖机构 [12][13] - 来自Meta、谷歌、阿里等公司的生态竞争围绕未来“AI操作系统”展开 [12] 重点开源项目与技术方向 - MNN-LLM项目专注于移动端大语言模型推理框架 [7][23] - vLLM项目致力于提供人人可用、快速且低成本的大模型推理服务 [7][23] - verl项目是灵活高效的大模型强化学习编程框架 [10][23] - SpecForge是用于训练投机采样模型的工具 [23] 大会核心演讲嘉宾与议题 - Lukasz Kaiser将分享推理模型的历史、现在与未来 [17] - 议题涵盖可验证奖励强化学习、腾讯混元翻译模型优化、MiniCPM端侧大模型等 [17][18] - 智能体相关议题包括AReaL异步强化学习、扣子罗盘效果评测、通义DeepResearch构建方法论等 [18]
强化学习框架的演进与发展趋势
自动驾驶之心· 2025-08-19 07:32
模型训练范式转变 - 2024年OpenAI发布O1系列模型后,训练重心从有监督微调(SFT)转向强化学习(RL),SFT作用弱化为参数初始化或策略引导[3] - RL算法持续迭代优化,从早期DPO到PPO,再到GRPO、RLOO、Reinforce++、DAPO等新方法,在策略更新方式、稳定性和样本效率方面不断提升[4] - RL训练流程包含三大模块:策略生成(Rollout)对应模型推理扩展阶段、奖励评估(Reward Evaluation)对应结果质量打分、策略更新(Policy Update)对应核心参数优化[4][6][7] RL训练框架设计挑战 - Rollout与训练模块需顺序执行,但分布式多卡训练趋势下,异构资源管理和参数同步机制成为关键挑战[12][13] - 底层训练框架(如Megatron-LM、DeepSpeed、PyTorch FSDP)与推理引擎(如vLLM、SGLang)架构差异大,导致参数同步和推理调度实现逻辑复杂化[14][25] - Rollout任务存在显著异构性,尤其在Agent行为模拟场景下,批次内部任务复杂度差异导致调度效率下降和资源利用率不均衡[19] 性能优化策略 - 7B参数模型在FP32精度下需约28GB显存存储参数和梯度,优化器状态额外占用84GB,单卡无法承载[21] - 分布式训练采用数据并行(DP)、张量并行(TP)、流水线并行(PP)策略,千卡规模以下DP与TP/PP性能相近,更大规模下TP/PP因避免All-Gather通信开销更具优势[22][23] - 推理引擎(vLLM、SGLang)通过KV Cache复用和算子优化提升性能,但与训练引擎的参数同步仍需解决精度差异问题[25][28] 训练与推理集成架构 - SPMD(单程序多数据)模式适用于数据量大但模型规模小的场景,MPMD(多程序多数据)模式支持异构程序执行但增加实现复杂度[29][39] - SLIME框架通过Buffer中间件实现推理引擎与训练模块间数据传输,支持命令行配置灵活适应业务需求[34][35] - ROLL框架通过集群角色定义(actor_train、actor_infer、reference等)隐藏训练与推理差异,支持按领域分开采样和奖励模型聚合[42][44] 分布式部署与资源管理 - 模型规模增大(如1000B参数)使并行计算开销显著,Reward模型较小(7-30B)适合分开部署[48] - Ray框架帮助管理分布式资源,但设计与Kubernetes云原生环境存在冲突,实际生产环境管理成本较高[53] - 非Colocation场景下,ROLL支持细粒度GPU资源配置提高资源利用效率,但要求算法侧具备更高资源调度能力[50] 框架技术选型 - OpenRLHF集成Ray、vLLM、ZeRO-3和HuggingFace Transformers,支持灵活混合部署适应异步训练需求[52][61] - SLIME代码简洁适合研究性修改,ROLL强调数据处理和异步操作支持Agentic RL探索,VERL稳定优化适合大规模集群部署[61] - 开源RL框架(VERL、SLIME、ROLL、OpenRLHF)展现技术领先性,但硬件资源(如显卡)仍存在差距[60]
多模态大模型强化学习训练框架 - EasyR1代码走读(GRPO)
自动驾驶之心· 2025-07-15 20:30
多模态强化学习框架EasyR1分析 - EasyR1是基于纯语言强化学习训练框架verl修改而来的多模态强化学习训练框架,支持Qwen2.5-VL等模型的微调 [1] - 框架采用GRPO算法进行训练,该算法不涉及Value Model,从而简化了训练流程 [45] - 代码仍在频繁更新中,文章分析的是2024年6月10日左右的代码版本 [1] 启动配置 - 启动脚本位于examples目录,通过python3 -m verl.trainer.main命令启动训练任务 [5] - 配置文件分为data、algorithm、worker和trainer四类配置项,参数可通过启动脚本覆盖 [6] - 数据配置包括训练集/验证集路径、prompt/answer/image键名、最大长度限制等参数 [9] 数据处理流程 - 数据集必须包含problem、answer和images三个key,支持json等多种格式 [40] - 数据加载使用datasets.load_dataset函数,支持本地文件和远程Hugging Face数据集 [41] - 图像处理支持<image>占位符,可拼接多张图片内容 [39] - prompt会通过jinjia模板进行格式化渲染,支持单轮问答场景 [38] 训练流程 - 训练分为init和fit两个阶段,fit阶段包含数据采样、奖励计算、优势估计和模型更新等步骤 [44] - GRPO算法中每个prompt会采样多条响应(n≥2),通过组内标准化计算优势 [81] - 训练使用KL散度约束模型更新,支持多种KL惩罚类型如low_var_kl等 [78] - 策略更新采用PPO算法,支持多epoch训练和梯度累积 [84] 性能优化 - 框架采用FSDP策略进行分布式训练,支持参数卸载以节省GPU内存 [16] - 数据在DP rank间进行平衡分配,确保每个rank获得相似数量的token [62] - 推理使用vLLM引擎,支持tensor并行和分块预填充等优化 [28] - 训练支持padding-free模式和Ulysses序列并行技术 [15]