SuperAPI AI 工具集

simple_GRPO

simple_GRPO 是一个用于复现 R1 类大语言模型思维能力的轻量级 GRPO 开源实现,代码仅约 200 行,分布在两个文件中,依赖 deepspeed 和 torch 等标准库,无需 ray。它借鉴 Hugging Face trl 的核心损失计算公式,支持节省 GPU 显存、快速理解 RL 过程、尝试多答案生成、重组、KL 惩罚和参数调优等,训练早期可观察到“Aha moment”。项目提供引用模型解耦设计,可在不同 GPU 甚至不同机器上运行,支持 vLLM 加速推理和 reinforce++ 算法。实验显示在 A800 上 1 小时内完成训练,Qwen2.5-7B 和 3B 模型在 30 步内出现 Aha moment,准确率稳定在 60% 以上,格式合规性达 100%。

访问官网

工具介绍

simple_GRPO 是一个用于复现 R1 类大语言模型思维能力的简单 GRPO 开源实现。其核心损失计算公式参考自 Hugging Face 的 trl。项目目标是提供最简代码库,以支持:节省 GPU 显存以实现可行且高效的训练;从教学角度快速理解 GRPO 等强化学习过程;快速尝试诸多改进,如改进的多答案生成、重组、KL 惩罚和参数调优。在模型训练早期可观察到“Aha moment”。

主要能力与特性:

  • 项目代码简单,仅约 200 行,分布在 2 个文件中。仅依赖 deepspeed 和 torch 等标准库,无需 ray 等依赖。设计上允许更复杂的干预。
  • 引用模型部分解耦,允许在不同 GPU(甚至不同机器上的 4090)上运行。避免引用模型和训练模型在同一 GPU 上,防止 torch 多进程创建多个副本,并能在 80G A800 上训练 7B 模型。
  • 在 1 张 A800 GPU 上训练可在 1 小时内完成。Qwen2.5-7B 和 Qwen2.5-3B 均在前 30 个优化步骤内展现“Aha moment”。
  • 2025/02/19:添加了损失 triton 实现,有少量加速,可选择不使用。见 simple_grpo_v1 文件夹。
  • 2025/02/19:添加了重组版本,在 ref_server 上实现生成数据的采样。见 regroup_ver 文件夹。
  • 2025/02/27:添加 vllm 包以加速推理。
  • 2025/03/24:添加 reinforce++ 算法,用法与之前相同。
  • 2025/07/23:推荐查看 LSRL,下一代 RL 框架,具有自定义优化器和流线型架构,性能更佳。

使用方式: 运行时环境在 requirements.txt 中。至少需要两张 GPU。警告:运行简单使用 GSM8K 的示例脚本可能需要安装 datasets 并添加 HTTP 代理(可能)。该包仅用于简单加载 GSM8K。真实使用时用户应准备自己的数据,因此 datasets 并非严格必需。另外,如果未安装 datasets 且未在文件中加载数据集,生成过程无数据,训练过程(以及引用过程)将一直等待批次。 若有三个或更多 GPU,将有更好选择。运行相应命令,这仅使用一个 GPU 收集和运行引用模型。在 grpo_vllm_one.py 中,设置生成设备索引相对于下一步可见设备。然后打开另一个 bash。

实验环境与结果: 硬件设置:2×A800 (80GB) GPU。配置:训练使用 1 GPU 加 Zero-Stage 2 优化;推理使用专用 1 GPU(兼容 3090/4090)。 训练性能:对于 Qwen2.5-3B,准确率在 5 个优化步骤后稳定在 60% 以上,峰值约 70%;格式合规性在 30 步后达到约 100%。对于 Qwen2.5-7B,准确率在整个训练过程中保持 >90%;格式合规性在 30 步内达到 100%。两者指标均快速收敛。 展示的示例输出(Qwen2.5-3B 第 20 步和 Qwen2.5-7B 第 20 步)显示了 think 和 answer 标签内的推理过程。

已知限制:

  • 答案生成可能无效,因为一个组可能包含全部错误或全部正确的答案。需要组重组和更好的答案生成。
  • 如果生成较长的思维链,GPU 显存仍然紧张。必须拆分组以减小批次大小。
  • 这些功能已实现并在测试中,即将可用。

项目成员:该项目由复旦大学 KnowledgeWorks 实验室的梁家卿博士和肖仰华教授领导。核心开发团队包括博士生韩金益、硕士生王欣怡及其他贡献者。如果发现代码有用,请按指定格式引用。