Recoleta Item Note

ExecVerify: White-Box RL with Verifiable Stepwise Rewards for Code Execution Reasoning

ExecVerify 用可验证的程序执行中间步骤奖励来训练代码模型,不再只模仿教师解释文本。它把“看代码猜执行”变成一个能逐步核对答案的强化学习问题,并显示这种能力还能迁移到代码生成。

code-reasoningreinforcement-learningwhite-box-verificationcode-generationexecution-traces

ExecVerify 用可验证的程序执行中间步骤奖励来训练代码模型,不再只模仿教师解释文本。它把“看代码猜执行”变成一个能逐步核对答案的强化学习问题,并显示这种能力还能迁移到代码生成。

  • 现有代码执行推理训练多依赖 SFT 学习教师写出的解释链,但训练时无法显式验证中间执行步骤是否真的正确,容易学成“文本模仿”而非语义理解。
  • 训练数据通常缺少可控难度与结构覆盖,会混入过于简单或几乎不可解的样本,影响小模型学习真实执行过程。
  • 代码执行推理能力不足会进一步拖累下游任务,如代码生成、程序修复和语义理解,因此这是代码智能中的关键短板。
  • 先做约束式数据合成:围绕 Python 内置类型、方法和控制流模式自动生成程序,并按从简单到复杂的结构约束构造多难度课程式数据。
  • 对每个程序执行得到解释器 trace,再自动生成两类白盒可验证问题:下一条执行语句预测(control-flow)以及变量值/类型预测(data-flow)。
  • 白盒强化学习训练模型:奖励既看最终 I/O 是否正确,也看中间步骤问题是否答对;奖励函数把终态正确性与步骤级正确性组合起来。
  • 还加入反向 O→I 预测,让模型根据输出找可执行输入,减少只靠正向模式匹配。
  • 采用两阶段训练:第一阶段提升执行推理;第二阶段再用单元测试奖励做代码生成 RL,把推理能力迁移到生成功能正确的程序上。
  • 在代码执行推理上,7B 基座从平均 60.8 提升到 80.8+ SFT + white-box RL),比 + SFT + I/O RL76.3 更高,也超过 Qwen2.5-Coder-32B-Instruct77.9 平均分。
  • 细项上,+ SFT + white-box RLCRUXEval-O 85.6LiveCodeBench-Exec 82.3REval State 74.5REval Path 73.0;相比 7B base 的 61.0 / 58.0 / 51.7 / 49.7 有明显提升,说明对白盒中间状态学习尤其有效。
  • 在代码生成上,最佳两阶段模型 + SFT + white-box RL + UT RL 平均 57.1,高于纯 + UT RL53.9+ I/O RL + UT RL54.6+ SFT + I/O RL + UT RL54.9;论文称相对强后训练基线 pass@1 最多提升 5.9 个点
  • 具体生成指标包括:HumanEval+ 84.8MBPP+ 75.1LiveCodeBench Hard 5.9BigCodeBench Hard 25.7;相对 7B base 的 84.1 / 71.7 / 3.0 / 18.2 均有提升。
  • 数据构建方面,作者从 239,992 原始样本和 239,466 变异样本出发,执行过滤后保留 201,537191,463,再按难度筛到 119,358 个训练样本;Stage I 实际使用 30K SFT + 30K RL
  • 消融显示两类白盒问题互补:完整版平均 80.8,仅 control-flow 为 79.9,仅 data-flow 为 78.1。库相关 I/O 预测上,7B base 56.0SFT+I/O RL 62.5SFT+White-Box RL 64.7,接近 32B 的 70.4
Built with Recoleta

Run your own research radar

Turn arXiv, Hacker News, OpenReview, Hugging Face Daily Papers, and RSS into local Markdown, Obsidian notes, Telegram digests, and a public site.