SuperAPI AI 工具集

CP-Zero

CP-Zero 是一个在 Code Contests 数据集上应用 R1-Zero 方法进行训练的开源项目,使用基于规则的奖励和 GRPO 算法。项目以 Qwen2.5-Coder-7B 为基座模型,目标是让模型根据算法题描述生成代码,并通过测试数据验证正确性来打分。项目分享了训练过程中的观察,如格式错误快速消失、编译错误先升后降、接受率持续提升,但未出现 Aha Moment,且在 2000 步后出现 think 与 answer 不一致、代码变短等现象。项目基于 verl 框架修改,格式奖励参考 Logic-RL,数据集使用 deepmind/code_contests。

访问官网

工具介绍

CP-Zero 是一个基于 R1-Zero 方法的训练项目,主要针对 Code Contests 数据集。项目使用基于规则的奖励和 GRPO 算法,以 Qwen2.5-Coder-7B 为基座模型。任务设定为:给定算法题描述,模型生成代码,并在测试数据上测试代码正确性。奖励包含两部分:格式奖励和根据正确测试数据个数给出的评分奖励。项目提供了运行脚本 main.sh 供参考。

项目分享了一些训练发现:格式分数方面,由于基座模型是 Base 模型,初始格式很难回答正确,但约 100 步后基本没有格式错误。编译错误比例方面,初始步编译错误较少,训练开始后迅速升至很高比例,然后快速降低,200-300 步后降至较低比例。接受率随训练步数持续提升,验证集上的奖励分也基本随训练步数提升。但项目并未观察到 Aha Moment,即 think 阶段没有出现反思总结等思考。训练 2000 步后,模型出现 think 内容与 answer 内容不一致的情况,例如 think 想实现 segment tree 但 answer 并未实现,且 answer 代码似乎越来越短,猜测可能因为数据集中没有强样例,使用 segment tree 实现性价比不高。回答逐渐拟人化,如会说 I blabla、we blabla,初始回复是标准列出 1 2 3 4 5 类似题解,但到 3000 步左右 think 开始出现语法不对的情况。

项目在 verl 框架上做了一定修改,例如计算 rule-base reward 时为了加速采用多线程。格式分数主要参考 Logic-RL。数据集当前使用 deepmind/code_contests。2025.04.01 更新:增加 generate 时调用命令执行代码,具体参考 verl/workers/rollout/vllm_rollout/vllm_rollout.py,当前在 7b 模型上并没有显著提升。