(2508) Klear-Reasoner
🌺 论文摘要
- paper
- 提出了 Klear-Reasoner-8B,通过LongCoT SFT + GPPO RL训练,提升数学和代码达sota。AIME24 (90.5%)、AIME25 (83.2%) 和 LiveCodeBench V5 (66.0%),超越Qwen3-8B 和 DeepSeek-R1-Distill-8B。
- SFT 发现:
少量高质数据优于大量多样数据;但对困难样本,不过滤数据能促进模型探索、提升性能。 - RL 创新:针对
传统clip导致梯度硬截断问题,提出GPPO,设定条件不做硬截断,温和回传梯度。 - 以及一些对比实验:SoftReward 比 HardReward效果好一点。
问题背景(SFT数据策略, GRPO-CLip机制存在问题)
❓问题背景
现有开源LLM在数学和代码推理上效果不足
开源7B小模型:DeepScalerR, Light-R1, Areal-boba-RL-7B, AceReason-Nemotron-1.1-7B效果均低于DeepSeekR1-0528-Distill-8B、Qwen3-8B。- Qwen3-8B:推理能力来自
LongCoT-SFT数据集
SFT 数据策略不明
- 如何平衡数据质量和多样性?如何处理错误数据
数据质量高于数量,高质量样本让学习推理模式一致简单样本不过滤会干扰模型,困难样本则不会,而且困难错误会促进探索。
现有GRPO CLIP机制存在问题
高熵token被截断- 对所有
超过clip_high的token的梯度均置为0,不更新。 - 其中可能包含
高熵token:低概率高优势token。
- 对所有
负样本收敛延迟- 对所有
低于clip_low的token的梯度均置为0,不更新 - 但RL需要
学习负样本,梯度置为0,会导致负样本学习缓慢- 模型反复犯同样的错误直到慢慢回到clip范围内,才能学习
- 对所有
- DAPO 使用Clip Higher
保留高熵token,但仍然面临截断某些样本梯度信号的问题。
📕核心方法
LongCoT SFT
数据构建
高质量数据源数学:OpenThoughts, NuminaMath, AceReason-Nemotron-1.1代码:OpenThoughts, OpenCodeReasoning, AceReason-Nemotron-1.1, TACO, Apps, Codeforces
数据去重:Exact Match、9-gram。CoT数据蒸馏:使用DeepSeek-R1-0528生成LongCoT数据,1prompt 16responses- Qwen3-8B
评估问题难度:保留所有Response,大部分都比较难。 - 最终
1.5M 数学和代码数据
标准SFT训练目标
RL 算法
精细化RL数据
多种数据源:Skywork-OR1, Acereason, NuminaMath, DeepScaleR- 数据去重:
9-Gram去重机制 多重数据过滤机制- 代码:
去掉低于16个单元测试数据 - 代码:强模型筛选:
仅保留pass@16 > 0.5的数据,使用DeepSeek-R1-0120 - 数学:关注正确和清晰性,
仅保留16 response大部分都能被rule解析的。
- 代码:
- 最终:
88k数学+18k代码。
GPPO 算法
Gradient-Preserving Clipping Policy Optimization
背景
- 解决PPO-CLIP超出范围后梯度为0的问题。
- 比例
一旦 超出范围,变量就变为一个常数,对常数求导为0,导致梯度为0。
悲观更新
- 我
设定一个条件,当我觉得安全时,才让你正常全额更新。 - 只要
你太激进(过度乐观、过度悲观),我就把你限制住。
核心思想
当
IS比例超出截断范围,不切断梯度,而是利用温和地 回传梯度。前向时,分子分母相同
值为1;反向时,
分母为常数,分子为变量,梯度可以正常回传。:停止梯度,计算数值时,该值等于输入值。
单token loss,设置三种条件
过度悲观:
优势为负且比率过低,且 过度乐观:
优势为正且比率过高,且 信任区域内:正常更新
核心公式
目标函数如下,其中
,是IS权重比例。 梯度
Reward 设置
- 数学:1、-1,无思考的话,也要进行惩罚。
- 代码:
soft reward,按测试用例比例计算得分。
GPPO vs CISPO
核心区别在clip条件上
- GPPO:
有条件的clip,2种条件、1个正常更新。 - CISPO:
无脑clip
三种场景核心差别
坏动作、概率变高,- GPPO:
无限制,使用强力惩罚 - CISPO:
仅clip到
- GPPO:
- 好动作、概率变高,
- GPPO:条件clip到
- CISPO:clip到
- GPPO:条件clip到
好动作、概率变低,- GPPO:
无限制,使用恢复 - CISPO:clip到
- GPPO:
Case
- 模型犯错了,
优势为负(A=-10),IS比例却很大(r=100) - CISPO:
, 梯度 1.1 * (-10)=-11 - GPPO:不符合条件1和2,符合条件3,正常更新,梯度
100*(-10)=-1000
SFT Loss
为
正样本增加SFT Loss优点:
- 可以增加正样本利用效率:
能更快记住正确路径。 - 有助于缓解reward hacking:强制要求模型输出概率分布接近自然语言,一个锚点,保证输出像人话一样合理分布,不会为了高分而彻底跑偏。
- 可以增加正样本利用效率:
算法实验
实验设置
✍️实验设置
模型
Qwen3-8B-Base
算法
- 先
LongCoT SFT,再GPPO RL训练。
训练数据/任务
- LongCoT SFT
- 数学:OpenThoughts, NuminaMath, AceReason-Nemotron-1.1
- 代码:OpenThoughts, OpenCodeReasoning, AceReason-Nemotron-1.1, TACO, Apps, Codeforces
- RL
- 多种数据源:Skywork-OR1, Acereason, NuminaMath, DeepScaleR,
- 9Gram去重。
评测数据
- 数学:AIME24, AIME25, HMMT2025 Feb
- 代码:LiveCodeBench V5, LiveCodeBench V6
Baseline
- OpenReasoning-Nemotron-7B, DeepSeek-R1-0528-Distill-8B, Qwen3-8B, PLOLAR-4B-Preview
- AceReasoning-Nemotron-1.1-7B, Mimo-7B-RL, AReal-boba-RL-7B, Skywork-OR1
超参
- 最大长度:
32k - SFT:学习率 8e-5,递减到最小4e-5;4 epoch
RL:- 多阶段训练:
先训数学,再训code- 数学:mini-bs=16, lr=5e-7
- 代码:mini-bs=32, lr=1e-6
- rollout.n=8,
- reward:
单元测试通过率 SFT Loss- 未使用KL loss
- 多阶段训练:
关键结果
🍑关键结果
综合性能超越SOTA
- 8B-Base-SFT效果:
- 基本持平Qwen3-8B,但原Qwen-3B是从大模型logit蒸馏来的,而本文是直接COT SFT来的。
- 8B-Base-SFT-RL 效果:
32k-Infer效果达开源SOTA的64k/96k效果- AIME24 83.2%, AIME25-75.6%,HMMT2025-60.3%,LiveCodeBenchV5-61.6%,V6-53.1%
64k + Yarn效果更好,90.5%,83.2%,70.8%,66.0%,58.1%RL 效果超过 大数据的SFT。- 效果超过了500w SFT训练的OpenReasoning-Nemotron-7B模型。
GPPO 有效性
- GPPO比GRPO+ClipHigher、CISPO效果更好,且训练更稳定
SFT 策略验证
- 使用Top-K高质量数据高于混合更多低质量数据
- 但在困难任务中,包含错误的答案比仅使用正确答案的数据效果更好。
SoftReward 在代码RL中比Hard Reward 提升1.8pt
对比分析
数据正确性
实验设置
- OpenR1-Math-220k,数据带有correct标记。把数据分为only-true和原始mixed集合。
实验结果
对于
简单任务:仅使用正确数据,效果好。- AIME24 45 > 40, AIME25 31 > 30, LiveCodeV5 20.79 > 20.07,一般
对于
困难任务:混合正确+错误数据,不对数据做过滤,效果好。- 整体都比纯正确数据效果好。
数据质量和数量平衡
- 使用OpenThoughts的数据质量排名,top1, top2...
- 结论:
仅用高质量top1、top2数据做sft,效果更好,即质量大于数量。- 高质量数据:具有高一致性(内部逻辑一致),低质数据引入噪声负面作用
GPPO
- 在LiveCodeBench和AIME24,GPPO超过GRPO-Clip-Higher和CISPO。
- 更好利用高熵token:保持梯度更新
- 加速负样本收敛:不做截断,加速收敛
- GPPO比CISPO好在:悲观更新策略,有条件clip
SoftReward 比 HardReward好一点
- 结果:LiveCodeBench V5:61 > 59.2
- SoftReward降低了奖励方差。
代码过滤错误单元测试数据
- 部分开源代码数据里的测试用例有错误,正确代码也通不过。
- 根据pass@16,过滤数据。过滤后,LiveCodeBench V5有涨点。0.57->0.59
过滤零优势样本
- rollout组样本reward一样,
优势全为0,过滤这些样本,只向差异学习,在AIME24上提升稳定。 - 保留零优势样本,有问题:
梯度稀释:降低了其他非0优势样本的更新幅度泛化性能不稳定:
GPPO vs CLip-Higher vs CISPO

SoftReward

过滤错误单元测试数据

未来方向
⛳ 未来方向
(2505) Skywork-OR1
🌺 论文摘要
- paper, skywork-or1-32B
- 调熵系数比较难,设计
自适应熵控制,设定目标熵值和系数步长,动态调整系数。 - 在数学和代码生成上做RL训练。
问题背景
❓问题背景
- RL能增强推理能力,但目前大都集中在基座模型,而非SFT后的CoT模型。如何
高效利用RL提升LongCoT能力仍不明确。 - RL探索利用平衡:存在
熵坍塌问题。
核心方法
📕核心方法
数据构建
数据源
- 选择标准:可验证、有正确答案、有难度的。
- 数学:NuminaMath-1.5, DeepScaleR, STILL-3-Preview-RL-Data, Omini-Math, AIME24,
- 代码:LeetCode+TACO
处理流程
- 对所有做数据集内去重。
- 数学数据:105k数学数据
过滤不能提取出答案的:使用Math-Verify从Solution中提取出答案,过滤提取失败的- 过滤题目包含外部url或图片的
- 跨数据集去重
- 代码数据:13.7k (2.7k leetcode + 11k TACO)
过滤简单/不完整/单元测试损坏的样本。- 使用标准答案做验证,保留能通过所有测试用例的数据。
- 基于embedding相似度做去重。
- 使用R1-Distill-7B/32B离线做rollout8次/16次,
过滤掉全0或全1样本。 人工+LLM-as-Judge过滤:- 标准:表述清晰、信息完整、格式良好、无干扰信息。
- 每个问题和llm(2个),回答16次,
共32票,保留至少9有效票的问题。移除1-2k数学样本。
提高样本效率
- 在线和离线过滤:
训练前移除模型全1或0的样本,训练中间丢弃上一阶段准确率为1的样本。 - 拒绝采样/动态采样:如果batch中优势为0,则过滤掉。
训练策略
训练策略
多阶段长度扩展:Stage1:8k,Staeg2/3:16k/32k- 对于
超过最大回复长度的样本,直接惩罚更好。有点反直觉。 高温采样:强制使用温度=1,防止过早坍塌选择on-policy,采样数据指更新一次,效果更好。
Loss 函数
自适应熵控制:选择熵系数很难,引入2个参数。- Tgt-ent:
目标熵;: 熵loss系数的调整步长,初始自适应系数为 - e<tgt-ent,
,e>tgt-ent, - 实验:tgt-ent=0.2,
- Tgt-ent:
- 去掉KL Loss。
算法实验
实验设置
✍️实验设置
- 基座模型:DeepSeek-R1-Distill-Qwen-7B 和 DeepSeek-R1-Distill-Qwen-32B。
- 评估基准:
- 数学:AIME 2024, AIME 2025。
- 代码:LiveCodeBench (2024.08 - 2025.02)。
- 对比模型:DeepSeek-R1, Qwen3-32B, QwQ-32B, Light-R1 等。
- 核心消融实验:针对数据混合、多阶段训练、优势掩码、采样温度、KL 损失、熵控制策略以及训练资源分配(Batch Size, Group Size)进行了
详尽的对比实验。
关键结果
🍑关键结果
Rollout参数
- rollout bs和group size影响小。高温度前期随机,但后期性能上限高。
OnPolicy + OffPolicy
- 离策略会导致上崩塌。反复学习特定token,多样性归零。
- 同策略熵下降缓慢,异策略熵崩塌快。
熵崩塌
- 熵loss对训练数据和系数非常敏感。
- Clip-Higher:设的太高,熵剧烈飙升,可能
性能反而变差,比如0.265->0.28,变差。 自适应熵系数:盯着目标熵动态调整,效果能增长。
效率陷阱
- 训练时间:72% 采样,反向8%,其他。。
- 多步更新,反而效果变差,即off-policy。
计算资源
- 单纯堆卡无法缩短采样时间,
取决于最长的response。 - 增大batch size和rollout.n能带来好效果。
模型性能
- Skywork-OR1-32B:AIME24 得分 82.2,AIME25 得分 73.3,LiveCodeBench 得分 63.0。在数学任务上击败了 DeepSeek-R1 和 Qwen3-32B。
- Skywork-OR1-7B:在同尺寸模型中表现出极具竞争力的推理能力(AIME24: 70.2)。
关于熵坍塌的发现
- 过早坍塌有害:熵过快降低通常对应较差的测试性能。
- Off-policy 的风险:增加每个训练步的 SGD 更新次数(Off-policy)会加速熵坍塌,损害泛化性能。
- 控制方法有效性:自适应熵控制或适当的 Clip-higher trick 能有效减缓坍塌,提升最终性能。
训练资源分配:
- 在计算资源有限时,增加 Rollout Batch Size 和 Group Size(即增加采样多样性)比增加 SGD 更新步数更能带来性能提升
未来方向
⛳ 未来方向
- Off-policy 训练的优化:虽然 Off-policy 训练(数据复用)效率更高,但目前受限于熵坍塌问题。未来需探索在 Off-policy 设置下更有效的熵控制机制,以兼顾效率与性能。
- 更高效的资源调度:针对长 CoT 场景,Rollout 时间占据主导,未来可研究如何在有限资源下进一步优化 Rollout 策略。
- 长尾能力的探索:目前的 Benchmark 主要集中在数学和代码,未来可探索该 RL 范式在其他复杂推理任务中的泛化能力。
(2505) AceReason-Nemotron
🌺 论文摘要
- paper
- 收集数学+代码数据,质量过滤,复现R1。
- 多阶段课程学习。math-rl + code-rl,逐步扩展长度。
- GRPO训练。
问题背景
❓问题背景
- DeepSeek-R1 复现困难:R1缺乏关键细节
- 小模型困境:大家认为小模型做知识蒸馏比RL更有效,RL适用于大模型。
- 领域遗忘:针对领域做SFT会导致灾难性遗忘。
核心方法
📕核心方法
分阶段RL
- 第一阶段:Math-only-RL
严格On-policy训练,防止熵坍塌:Rollout后只进行1次梯度更新- 阶段性长度外推:8->16-24-32k
- 训练后期只训练难题:动态过滤机制,
过滤通过率大于6/16的数据
- 第二阶段:Code-only-RL
- Stage1:难度最高5级-7B,难度最高7级-14B,最大回复长度24k, rollout=8,温度0.6
- Stage2:完整训练集,最大回复长度32k,rollout=16,按epoch过滤简单样本,温度从0.6增加至1
鲁棒数据Pipeline
- 数学:结合DeepScaler和NuminaMath,最终4.9w样本。
- 利用
Rule+Model(R1)过滤噪声,仅保留高质量、答案可验证的问题。 9-gram:过滤benchmark数据,规则过滤:不合适数据(证明题、判断题、答案过长、过短等)过滤难问题:R1回答8次,去掉8次全错问题。过滤简单问题:过滤R1回答低于2k token的问题,无需推理。
- 利用
- 代码:从竞赛平台收集题目,最终8.5k训练集
- 通过
沙盒执行测试用例验证,严格剔除伪正例和伪负例。 - n-gram去重,R1难度过滤,
去掉8次都回答失败的问题。
- 通过
课程学习
分阶段增加回复长度:8k -> 16k -> 32k- 后期引入
更难Prompt,去掉完全掌握的简单样本
算法实验
实验设置
✍️实验设置
模型/算法
- DeepSeek-R1-Distill-Qwen-7B和14B
- GRPO
数据/任务
- 数学:DeepScaler+NuminaMath,结合上文过滤方法。最终4.9w个样本。
- 代码:竞赛平台数据
- 评估:
- 数学:AIME24, AIME25, MATH500, HMMT2025 Feb, BRUMO2025
- 代码:LiveCodeBench v5, v6, Codeforces ELO
数学RL
- bs=128,8k阶段 rollout.n=8,其他阶段:rollout.n=16
- 学习率:1e-6
- 熵系数0,KL系数0
代码RL
- 阶段1:最大回复长度24k, rollout=8,温度0.6
- 阶段2:最大回复长度32k, rollout=16,温度1
- bs=128,lr=5e-6
关键结果
🍑关键结果
- AceReason-Nemotron-14B 全面超越纯蒸馏模型。
- 在AIME25上达67.4,比基座提升17.2%,在LiveCodeBench v5上达58.9%,提升5.8%。
- 跨领域泛化能力得到验证。Math-only-RL后,代码准确率从37.6 -> 44.4
- 解决了SFT不可解问题。
- 奖励质量非常重要:伪正例和伪负例,都会导致训练崩溃或收敛至次优解。

未来方向
⛳ 未来方向
- RL vs 蒸馏的边界探索:本研究表明即使是 7B/14B 模型,RL 也能突破蒸馏的上限。未来可进一步探索更小模型或不同架构下 RL 的潜力。
- 更高效的验证机制:目前
代码验证极其耗时(比数学慢两个数量级),未来需要探索更高效的代码验证或奖励模型以加速 Code RL。 - 复杂推理的通用性:进一步研究为何数学 RL 能迁移到代码,探索这种泛化是否能延伸到物理、化学等其他科学推理领域。
- 长上下文推理优化:研究表明 32K 长度能带来性能提升,未来可探索更长上下文下的推理缩放定律(Scaling Laws)。
(2505) Code-R1-Interpreter
🌺 论文摘要
- paper, R1-code-interpreter
- 构建了144任务数据。SFT+RL 2阶段训练。
- 在RL中,使用代码沙盒,定义计算
潜力分数,构建多阶段课程学习,提升6pt效果。
问题背景
❓问题背景
- 现有Code-Interpreter 存在不足
- 主要集中在
数学任务(ToRL,ReTool),和真实应用有gap,扩展至通用任务效果不佳。- 目前
缺乏多种任务的CI研究。TooRL多个任务,但CI仅被用作生成简单代码。
- 目前
- 无法在
文本推理和代码求解间有效切换、做出正确选择
- 主要集中在
- 在
144个异构任务上,直接使用GRPO训练收益很小。- 难度不一导致
奖励信号稀疏,缺乏有效训练样本
- 难度不一导致
核心方法
📕核心方法
大规模任务构建
- 数据源整理
- 整理了144个推理规划任务,每任务200样本,rule评估
- SymBench-33,BigBenchHard-27, ReasoningGym-84
- SFT数据蒸馏
- 使用多样prompt对GPT-4o生成轨迹,仅保留正确样本,得6.5k高质量多轮文本+代码轨迹。
多阶段训练框架
- SFT:6.5k蒸馏数据做冷启动
- 4阶段RL训练:从高潜样本 -> 低潜样本
- 算法:标准GRPO,环境结果被mask
- 奖励:正确性、格式合规、效率
- 结果正确:+1分
- 所有中间结果格式都正确:+0.1分,否则-0.1分。
- 生成轮数超过6轮:-0.1分
- 代码沙箱:
- 最多8次调用,每个脚本超时时间为60秒。
- 多轮代码执行会降低GPU利用率,把
梯度计算和代码执行解耦。- 在5个64核CPU机器部署代码沙箱,RL训练时间减少39%
背景
- 在简单/单任务上,RL有提升,但混合后提升不大。
- 太简单或太难,rollout结果没有区分度,会导致梯度为0,更新由KL主导,会抑制模型学习、训练停滞。
潜力计算
每个问题,使用4种不同Agent去回答,每个Agent生成5个答案,共20个回答,并计算正确率
。 - 纯文本、纯代码、混合模式等。
潜力计算
:高潜力, :无潜力。
多阶段课程学习
- Stage1:训练前25%的高潜样本
- Stage2:加入前50%的样本
- Stage3:加入前75%的样本
- Stage3:加入所有剩余样本

算法实验
实验设置
✍️实验设置
- 数据:107任务训练,37做测试
- SFT:3epoch 防止过拟合,bs=32
- RL:rollout.n=5, bs=128,1e-6,temperature 训练1.0,预测0.6
关键结果
🍑关键结果
- 性能超越 SOTA:R1-CI-14B 在测试集上达到 72.4% 的准确率,显著优于 GPT-4o (Text-only: 58.6%) 和 GPT-4o (Code Interpreter: 70.9%)。
- 课程学习的有效性:相比于不使用课程学习或使用基于“问题难度”的课程学习,基于“改进潜力”的课程学习带来了最显著的性能提升, 6pt。
- 涌现出的自查行为 (Self-Checking):模型在 RL 训练后,自发学会了生成代码来验证自己之前的推理结果,这种行为在 SFT 阶段之后很少见。
- SFT 的必要性:实验表明,“冷启动”(直接 RL)效果极差,SFT 提供的初始能力对后续 RL 的成功至关重要。
未来方向
⛳ 未来方向
- 泛化能力的边界:尽管覆盖了144个任务,但在某些模型本身知识或推理能力极度匮乏的任务上,RL 的提升依然有限,未来需探索如何突破模型固有能力的“天花板”。
- 自查能力的利用:模型涌现出的“代码自查”行为极具价值,未来可进一步显式地引导和强化这种自我验证机制,以提高推理的鲁棒性。
- 更高效的训练:虽然已通过 CPU 卸载优化了训练速度,但多轮代码执行的 RL 训练依然昂贵(14B 模型需 ~1845 GPU 小时),进一步降低训练成本仍是重要方向。
(2505) DeepCoder-14B-Preview (Agentic)
🌺 论文摘要
收集代码生成数据,构建
沙盒环境,通过单元测试反馈作为稀疏奖励信号使用
GRPO+ (DAPO-Trick)+上下文多阶段扩展,14B达o3-mini和o1水平。16k -> 32k ->64k,LiveCodeBench效果:54 -> 58 -> 60.6,
完全开源数据、代码、训练等。
❓问题背景
- RL在数学方面发展快(DeepScaleR, Areal, Light-R1, DAPO),
代码领域落后了。 - 部分
代码数据存在问题:太简单、存在噪声、测试用例有缺陷等等。
📕核心方法
高质量数据集
- 数据源:
TACO Verified, PrimeIntellectSynthetic-1,LiveCodeBench231-2407 - 数据过滤:通过
外部官方验证、至少5个测试用例、去重。
沙盒环境
TogetherCodeInterpreter+Local Code Sandbox
奖励函数
Sparse,通过所有测试用例,才算1,其余算0
算法GRPO+ (DAPO策略)
去掉熵 Loss和KL Loss。- 对截断超长的loss进行屏蔽。
Clip-Higher
迭代扩展长度
DeepScaleR-1.5B
8k -> 16k -> 24k,AIME效果:33% -> 38% -> 43%
DeepCoder-14B-Preview
16k -> 32k ->64k,LiveCodeBench效果:54 -> 58 -> 60.6
工程优化
- One-off pipeline 提升效率。
✍️实验设置
- 模型:DeepSeek-R1-Distill-Qwen-14B
- 数据:代码数据
- 算法:GRPO+
- 评估:Codeforces, LiveCodeBench, HumanEval+, AIME24
🍑关键结果
- LiveCodeBench pass@1 达60,提升8pt。14B模型达oe-mini和o1水平。
- 完全开源数据、代码、训练等。


CLIP-Higher, No Enropy Loss:熵未崩塌。

(2502) AceCoder
🌺 论文摘要
- paper
- 代码生成RL,
合成构建数据。训练了RewardModel,Reinforce++算法。 - 但是
Rule信号还是比RM效果好。RM存在hacking问题。
问题背景
❓问题背景
- RL中代码领域较少,主要依赖于SFT
- 奖励信号难以设计:执行测试用例,成本很高。
- 数据稀缺:缺乏大规模RL数据。
核心方法
📕核心方法
自动合成测试用例
- 生成:以Magicoder为种子,利用GPT-4o-mini把其改写为LeetCode风格问题,生成20个测试用例。
- 过滤:使用
强模型生成解法(Qwen2.5-Coder-32B),如果无法通过测试用例,则删除测试例;去掉低于5个测试用例的问题。 - 8.7w问题+138w测试用例。
RM 训练
- 构建偏好对,训练AceCode-RM,预测代码通过测试用例的可能性。
RL 算法
- 使用Reinforce++。探索2种奖励信号:
RM+Rule PassRate
算法实验
实验设置
✍️实验设置
- 基础模型:Llama-3.1-8B-Instruct, Qwen2.5-Coder-7B (Base & Instruct), Qwen2.5-Coder-32B。
- 评估基准:HumanEval(+), MBPP(+), BigCodeBench, LiveCodeBench (V4)。
- 对比基线:
- 解码策略:Greedy, Best-of-N (Oracle/Average)。
- 开源奖励模型:InternLM2-RM, Skywork-RM 等。
- RL 模型:PPOCoder, RLEF, StepCoder 等。
关键结果
🍑关键结果
奖励模型性能 (SOTA):
- 在 Best-of-N 采样实验中,AceCode-RM-7B 帮助 Llama-3.1-8B 在四个基准上平均提升了 8.4 分。
- 在 RM-Bench 的代码类别中,AceCode-RM 击败了所有开源 RM(包括 Nemotron-340B),展现了卓越的代码判别能力。
强化学习提升:
- 在 Instruct 模型基础上进行 RL 微调,HumanEval 和 MBPP 等指标均有一致提升。
- Base 模型直接 RL 的惊人效果:模仿 DeepSeek-R1,直接从 Qwen2.5-Coder-7B-Base 开始训练(仅 80 步优化),模型在 HumanEval+ 上提升了 25.0%,在 MBPP+ 上提升了 6.4%,超越了许多经过 SFT 的模型。
数据过滤的重要性:消融实验表明,经过“生成-过滤”流程清洗后的测试用例数据,训练出的 RM 性能远超未过滤数据(Best-of-N 性能差距约 2.5 分)。
未来方向
⛳ 未来方向
- 解决 Reward Hacking:在使用学习到的 RM 进行 RL 训练时,有时会出现性能下降(相比于使用规则奖励),这可能是因为模型学会了欺骗 RM。未来需研究如何缓解这一问题。
- 扩大 RL 训练规模:目前的实验仅在 Base 模型上进行了短时间的 RL 训练(80 步),未来若扩大训练步数和计算量,有望获得类似 DeepSeek-R1 的更大突破。
- 提升合成数据质量:尽管有过滤机制,自动合成的测试用例仍可能存在边缘情况覆盖不足或参考解错误的问题,仍有优化空间。