Skip to content

Code TaskRL 论文阅读

📅 发表于 2025/12/21
🔄 更新于 2025/12/21
👁️ -- 次访问
📝 0 字
0 分钟
code-rl
#Klear-Reasoner
#LongCoT SFT
#精细化RL数据
#GPPO算法
#SkyWork-OR1
#数学代码数据构建
#多阶段长度扩展
#高温采样
#on-policy
#AceReason-Nemotron
#分阶段RL
#鲁棒数据构建Pipeline
#Code-R1-Interpreter
#数据潜力
#多阶段课程学习
#DeepCoder-14B-Preview
#迭代扩展长度
#AceCoder
#RewardModel
#Rule奖励

(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-8BQwen3-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

LongCoT SFT

数据构建

  • 高质量数据源
    • 数学:OpenThoughts, NuminaMath, AceReason-Nemotron-1.1
    • 代码:OpenThoughts, OpenCodeReasoning, AceReason-Nemotron-1.1, TACO, Apps, Codeforces
  • 数据去重Exact Match9-gram
  • CoT数据蒸馏:使用DeepSeek-R1-0528生成LongCoT数据,1prompt 16responses
  • Qwen3-8B评估问题难度:保留所有Response,大部分都比较难。
  • 最终1.5M 数学和代码数据

标准SFT训练目标

LLM=1Nj=1Nt=1Tjπθ(atst)

RL 算法

精细化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

GPPO

背景

悲观更新

  • 设定一个条件当我觉得安全时才让你正常全额更新
  • 只要你太激进(过度乐观、过度悲观),我就把你限制住

核心思想

  • IS比例 δ=rt(θ)超出截断范围不切断梯度,而是利用 δsg(δ) 温和地回传梯度

    • 前向时,分子分母相同 值为1

    • 反向时分母为常数分子为变量梯度可以正常回传

    • sg(δ):停止梯度,计算数值时,该值等于输入值。

单token loss,设置三种条件

  • 过度悲观:优势为负比率过低A^(j)<0δ<1ϵl

    lt(j)=β11ϵlsg(δ)δA^(j)
  • 过度乐观:优势为正比率过高A^(j)>0δ>1+ϵh

    lt(j)=β21+ϵhsg(δ)δA^(j)
  • 信任区域内正常更新

    lt(j)=δA^(j)

核心公式

  • 目标函数如下,其中δ=rtj(θ),是IS权重比例。

    LGPPO(θ)=ExD[1j=1MTjj=1Mt=1Tjmin(rt(j)A^(j),clip(rt(j),1ϵlsg(δ)δ,1+ϵhsg(δ)δ)A^(j))]
  • 梯度

    θLGPPO(θ)=ExD[1j=1MTjj=1Mt=1TjFj,t(θ)ϕθ(aj,t,sj,t)A^(j)]Fj,t(θ)={1ϵl,δ<1ϵlandA^(j)<01+ϵh,δ>1+ϵhandA^(j)>0δ,其他情况, 如: δA^(j)clip(δ,1ϵl,1+ϵh)A^(j)

Reward 设置

  • 数学:1、-1,无思考的话,也要进行惩罚。
  • 代码:soft reward,按测试用例比例计算得分。

GPPO vs CISPO

GPPO vs CISPO

核心区别在clip条件上

  • GPPO:有条件的clip2种条件1个正常更新
  • CISPO无脑clip

三种场景核心差别

  • 坏动作、概率变高A<0,rt(θ)>1
    • GPPO:无限制,使用δ强力惩罚
    • CISPO:仅clip到 1+ϵh
  • 好动作、概率变高,A>0,rt(θ)>1
    • GPPO:条件clip到1+ϵh
    • CISPO:clip到1+ϵh
  • 好动作、概率变低A>0,rt(θ)<1
    • GPPO:无限制,使用δ恢复
    • CISPO:clip到 1ϵl

Case

  • 模型犯错了,优势为负(A=-10),IS比例却很大(r=100)
  • CISPO:r=clip(δ,1ϵl,1+ϵh)=clip(100,0.9,1.1)=1.1, 梯度1.1 * (-10)=-11
  • GPPO:不符合条件1和2,符合条件3,正常更新,梯度 100*(-10)=-1000

SFT Loss

RL 带有SFT Loss
  • 正样本增加SFT Loss

    LLM(θ)=1jϕTjjϕt=1Tjπθ(atst)L(θ)=LGPPO(θ)+αLLM(θ)
  • 优点:

    • 可以增加正样本利用效率:能更快记住正确路径
    • 有助于缓解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, ϵh=0.28
    • reward:单元测试通过率
    • SFT Loss α=0.1
    • 未使用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

对比分析

SFT-数据正确和质量影响

数据正确性

  • 实验设置

    • OpenR1-Math-220k,数据带有correct标记。把数据分为only-true和原始mixed集合。
  • 实验结果

    • 对于简单任务仅使用正确数据,效果好。

      • AIME24 45 > 40, AIME25 31 > 30, LiveCodeV5 20.79 > 20.07,一般
    • 对于困难任务混合正确+错误数据,不对数据做过滤,效果好。

      • 整体都比纯正确数据效果好。

数据质量和数量平衡

  • 使用OpenThoughts的数据质量排名,top1, top2...
  • 结论:仅用高质量top1、top2数据做sft效果更好,即质量大于数量。
    • 高质量数据:具有高一致性(内部逻辑一致),低质数据引入噪声负面作用
RL算法影响

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系数的调整步长,初始自适应系数为c0=0
    • e<tgt-ent,ck+1=ck+Δ,e>tgt-ent,ck+1=ckΔ
    • 实验:tgt-ent=0.2, Δ=0.0005
  • 去掉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不可解问题。
  • 奖励质量非常重要:伪正例和伪负例,都会导致训练崩溃或收敛至次优解。

未来方向

⛳ 未来方向

未来方向
  1. RL vs 蒸馏的边界探索:本研究表明即使是 7B/14B 模型,RL 也能突破蒸馏的上限。未来可进一步探索更小模型或不同架构下 RL 的潜力。
  2. 更高效的验证机制:目前代码验证极其耗时(比数学慢两个数量级),未来需要探索更高效的代码验证或奖励模型以加速 Code RL。
  3. 复杂推理的通用性:进一步研究为何数学 RL 能迁移到代码,探索这种泛化是否能延伸到物理、化学等其他科学推理领域。
  4. 长上下文推理优化:研究表明 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+CodeInterpreter
  • 算法:标准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个回答,并计算正确率pi

    • 纯文本、纯代码、混合模式等。
  • 潜力计算

    • pi=0.5:高潜力,pi=0,1:无潜力。
    potential=4pi(1pi)

多阶段课程学习

  • 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)

🌺 论文摘要

DeepCoder-14B-Preview 摘要
  • DeepCdoer-14B-Preview

  • 收集代码生成数据,构建沙盒环境,通过单元测试反馈作为稀疏奖励信号

  • 使用GRPO+ (DAPO-Trick) + 上下文多阶段扩展,14B达o3-mini和o1水平。

    • 16k -> 32k ->64k,LiveCodeBench效果:54 -> 58 -> 60.6
  • 完全开源数据、代码、训练等。

❓问题背景

问题背景
  • RL在数学方面发展快(DeepScaleR, Areal, Light-R1, DAPO),代码领域落后了。
  • 部分代码数据存在问题太简单存在噪声测试用例有缺陷等等。

📕核心方法

核心方法

高质量数据集

  • 数据源:TACO Verified, PrimeIntellect Synthetic-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 的更大突破。
  • 提升合成数据质量:尽管有过滤机制,自动合成的测试用例仍可能存在边缘情况覆盖不足或参考解错误的问题,仍有优化空间。
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2026