KL divergence

搜索文档
多模态大模型强化学习训练框架 - 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]