面向代码优化的强化学习
强化学习(RL) 用于代码正确性已得到验证:让模型生成程序,在隐藏测试用例上运行,奖励通过测试的方案。将其扩展至代码优化看似直接:只需将执行时间加入奖励。然而在实践中,一旦奖励由计时驱动,测量噪声、奖励稀疏性或 GRPO 不稳定等小问题会压倒信号,导致 RL 失败:生成的方案几乎未提速,且更多方案失败。 我们通过三阶段使执行时间变得可学习: 1. 测试方式:构建 DMC-Optim,含大量优化测试和校准沙箱; 2. 速度到奖励的转化:在 RL 环境中组合正确性与速度,并使用离线模拟器预测最有效的配置; 3. 模型从奖励中学习:调整 GRPO 和评估方法以适应更稀疏、噪声更大的定时执行场景。 在 DMC-Optim 上,最强优化感知配置将严格 top-50% 的 pass@1 从 18.0% 提升至 31.3%(Qwen 2.5 7B),从 30.7% 提升至 50.4%(CWM 32B)。这些增益在更严格百分位(如 top-30%)进一步扩大,CWM 32B 相对提升 125%,同时保持纯正确性分数。当计时沙箱降级时,鲁棒优化 RL 相比标准 RLVR 提升 100% 至 200%(取决于评估标准)。在 LCB 上,CWM 32B 在中位数样本速度比较中,最多胜出标准 RLVR 83%。相对于每道题最快的正确人类提交,其复杂度类改进速度约为人类的一半(14% vs. 28%)。
论文精读
TL;DR 通过改造测试沙箱、奖励组合与 GRPO 适配三阶段,解决直接用执行时间奖励时噪声与稀疏导致的 RL 训练失败,在保持正确率的同时大幅提升代码速度。
问题
问题背景
利用强化学习 (RL) 提升代码生成正确性已趋成熟:模型生成程序,在隐藏测试用例上运行,奖励通过的解法。延续此思路到 代码优化 看似直接——将执行时间加入奖励信号。然而,一旦以执行时间驱动奖励,实际优化效果严重受限。
现有方法局限
将执行时间直接纳入奖励函数面临三重障碍:
- 测量噪声:代码运行时间受硬件负载、操作系统调度等因素扰动,微小计时波动会淹没真实性能差异,导致奖励信号信噪比极低。
- 奖励稀疏:只有通过正确性测试的样本才可能获得时间维度的奖励,且快慢对比仅在问题实例间有意义,样本内时间差异尺度不一致,形成极稀疏且尺度错乱的奖励分布。
- GRPO 的不稳定性:标准 Group Relative Policy Optimization (GRPO) 对此类稀疏噪声奖励高度敏感,训练中策略容易过早收敛到次优解,甚至加剧生成样本的正确性退化。 其直接后果是:生成方案的速度提升微乎其微,且更多的样本会因正确性失败而无效。
为什么这个问题难且重要
代码优化是 AI 辅助编程的下一块前沿:在维持正确性的前提下最小化资源消耗,直接影响大模型在算力敏感场景的可用性。难点在于 正确性与速度构成多目标优化,且速度信号本身不具备一致的度量体系,难以稳定映射为学习信号。RL 算法需同时克服测量不精确、奖励非平稳与策略坍塌,实际上要求重新设计训练管线中的评测、奖励构造和策略更新三个环节。业界对自生成高性能代码的需求日益迫切(如边缘部署、低延迟服务),该问题的突破将推动代码 LLM 从“能写”迈向“写得好”,并与编译器优化、系统自动调优等形成闭环。
行业类比
类似借助仿真环境训练机器人时,需通过 域随机化 和 奖励塑形 应对传感器噪声与稀疏成功信号;代码优化 RL 同样需要可控的计时沙箱与分阶段奖励策略,才能从噪声中提取有效的速度改进信号。
核心洞察
- **直接使用执行时间作为奖励会导致 RL 训练失败**,并非模型能力不足,而是测量噪声、奖励稀疏和 GRPO 不稳定性淹没了优化信号。与简单的“正确性+时间”加权不同,本文首次系统化地揭示了代码优化 RL 的环境设计瓶颈,并通过校准沙盒和组合奖励解决了这一问题,对将 RL 应用于其他性能敏感任务(如编译器优化、系统调优)提供了重要的工程教训:环境质量直接决定强化学习成败。
- **离线模拟器预测最佳奖励配置**,在真实 RL 训练前自动探索正确性与速度的权衡曲面,选择最鲁棒的奖励函数。这一设计跳出了手工调参或固定线性组合的窠臼,为优化类 RL 的奖励工程提供了可迁移的范式——先在低成本的模拟环境中寻优,再投入高成本的真实训练,显著降低了试错开销,并大幅提升了最终策略的稳定性和泛化性。
- **针对定时执行的稀疏/噪声特性调整 GRPO 与评估指标**,是取得可靠速度提升的关键。标准 RL 算法和 pass@k 评估无法反映代码加速的真实分布,本文改用 top-50%、top-30% 等分位数指标,并适配 GRPO 的训练细节,在保持正确率的同时,将相对提升幅度推到 100%–200%(退化沙盒下)。这提醒业界:将 RL 用于非确定性环境时,算法与评估必须联合设计,否则客观增益会被不合适的度量掩盖。
方法
输入与数据构建
方法以 DMC-Optim 数据集为基础,该数据集包含大量具有优化评测能力的编程问题,并为每个问题提供校准的执行沙箱。输入为问题描述,模型需要生成代码,在满足隐藏测试用例正确性的前提下,追求更短的执行时间。
关键模块:从奖励噪声到可学习信号
执行环境与校准
构建确定性的沙箱,通过多次预热运行和统计校准,为每个测试用例建立稳定的时间基线。这显著降低了硬件波动引入的测量噪声,使执行时间成为可控的奖励信号源。奖励组合与离线模拟
奖励由正确性和速度两部分线性组合而成,但权重配比至关重要。方法引入离线模拟器:在训练前,利用历史生成样本和不同奖励超参数下的代理性能,预测 Pareto 前沿上的最优配置。最终选取在加速比和正确率之间取得最佳均衡的组合,避免因速度项权重过高导致程序正确率崩溃。GRPO 适应与评估调整
针对时间奖励的稀疏性和噪声,对 GRPO 进行了三项改造:- 用时间分位数替代原始时间值,降低离群样本影响;
- 动态调整优势归一化的 window 大小,适应不同问题的难度;
- 在评估阶段,不再只看通过率,而使用严格百分位 pass@k(如 top-50%、top-30%),强调优化质量的头部表现。
输出与工程效果
经过上述阶段,模型可在不牺牲正确率的前提下实现大幅加速。在 DMC-Optim 上,Qwen 2.5 7B 的 strict top-50% pass@1 从 18.0% 提升到 31.3%,CWM 32B 从 30.7% 提升到 50.4%;top-30% 相对提升更达 125%。在 LCB 的跨平台对比中,CWM 32B 的中位数样本速度胜率达到 83%。当评测沙箱的稳定性下降时,该方法相比标准 RLVR 的鲁棒性优势可达 100%-200%。
与以往单纯将时间作为额外奖励项的 RLVR 相比,本工作的核心差异在于系统性地对测试环境、奖励塑形和训练算法进行联合设计,而非仅依赖增量式奖励加权,从而将代码优化 RL 推进到实用阶段。
实验
实验设计
- 构建 DMC-Optim 数据集,包含大规模优化问题与校准沙箱,控制执行环境噪声。
- 三阶段 RL 框架:1) 代码测试(沙箱校准)→ 2) 奖励设计(正确性+速度组合,离线模拟器预筛配置)→ 3) 学习适配(改进 GRPO 以应对稀疏/噪声的计时奖励)。
- 在 Qwen 2.5 7B 和 CWM 32B 上评测,对比标准 RLVR(仅正确性奖励)与优化感知配置。
- 评测指标包括 strict top-k% pass@1、沙箱降级鲁棒性,并与 LCB 上人类最快正确提交比较。
关键发现
- 直接加入执行时间奖励会导致 RL 崩溃,但通过组合奖励 + 校准沙箱 + GRPO 适配可稳定学习。
- 优化感知配置将 strict top-50% pass@1 从 18.0% 提至 31.3%(Qwen),从 30.7% 提至 50.4%(CWM),更严格百分位增益更大(CWM top-30% 相对提升 125%),且纯正确率不退化。
- 沙箱精度降级时,稳健优化 RL 较标准 RLVR 提升 100%–200%。
- 在 LCB 上,CWM 速度胜率 83%,复杂度类提升率(如 O(n²)→O(n))达人类最快的 50%。
与基线对比解读
- 标准 RLVR 仅优化正确性;优化感知配置通过速度奖励精细设计(离线校准、噪声鲁棒组合)使模型区分有效加速与噪声。
- 沙箱降级下的优势表明环境不确定性可建模,并非 RL 用于代码优化的根本障碍。
- 接近 50% 人类复杂度提升能力说明方法初步具备算法级优化意识,但离人类直观理解仍有明显差距。
行业影响
落地场景
该技术将强化学习(RL)应用于代码性能优化,可在任何需要自动生成高效代码的场景中发挥作用:
- 代码助手与 IDE 插件:在生成代码时直接输出更优解,例如 GitHub Copilot、Codeium 等可集成此能力,在补全时自动偏向运行更快、内存更省的实现。
- 在线评测/面试平台:如 LeetCode、HackerRank 可在答案生成后隐式优化,提升用户提交的运行时排名,或为出题方自动生成更严格的 baseline 解。
- 算法交易与量化系统:对延迟极度敏感的场景,可通过 RL 微调模型生成低延迟的 C++/Python 算法片段,减少人工 profiling 与调优成本。
- 云计算与边缘部署:自动重构推理代码以降低 CPU/GPU 耗时,用于模型服务、数据库查询优化等。
商业价值
- 降本:在云服务中,代码性能每提升 10% 可能直接节省数百万美元的计算资源成本,尤其是大规模数据处理、实时推荐系统等。通过自动优化替代部分资深工程师的手动调优,降低人力开支。
- 增收:对于 SaaS 或 PaaS 产品,提供“生成代码即最优”的差异化功能可提高客单价与竞争力;在广告推荐、高频交易中,微秒级延迟优化直接带来收入增量。
- 体验提升:开发者工具响应更快,用户生成的代码首次运行即接近性能上限,减少调试时间,提升产品净推荐值。
与现有产品/工作流的接口
集成路径清晰,无需颠覆现有技术栈:
- 训练阶段:需要构建类似 DMC-Optim 的沙箱环境和离线模拟器,用于可靠地测量代码执行时间,这在已有 CI/CD 管线中可通过容器化(Docker)和资源隔离实现。奖励塑形可直接作为现有 RLHF/GRPO 流程的扩展模块。
- 推理阶段:可直接在现有代码生成模型(如 CodeQwen、StarCoder)后接入一个
reward model做候选重排序,或在采样时采用 best-of-n 策略,利用执行时间反馈选择最优解,仅增加少量推理开销。 - 监控与迭代:生产环境可收集真实执行时间数据,用于持续奖励模型校准,形成反馈闭环。
具体 Use Case:
- 电商大促推荐系统:某全球电商平台在 Black Friday 期间,推荐服务需在 10ms 内完成召回排序。使用 RL 优化后的代码生成模型可自动改写 Python 推理服务中的热点函数,降低 P99 延迟 15%,无需高级工程师逐行 profiling,每年节省数十万美元云成本。
- 自动驾驶感知栈优化:某自动驾驶公司需在 Orin 平台上运行多个 CNN 后处理节点,使用该技术可自动生成等效但浮点运算更少的 CUDA kernel 或 C++ 算子,缩短端到端延迟,提升安全帧率,加速模型迭代。
局限
- - **对环境校准的强依赖**:方法构建在**校准沙盒**与**离线模拟器**之上,通过预测高效配置实现稳健优化。但在实际部署中,计时环境可能动态变化(硬件差异、系统负载),离线模拟器的预测准确性会衰减。摘要提到退化沙盒下标准 RLVR 性能骤降,虽然所提方法仍提升 100–200%,但这意味着离线模拟器若未能持续校准,优化效果难以保持。- **模型与任务泛化待验证**:实验集中在 **Qwen 2.5 7B** 和 **CWM 32B** 两个因果语言模型,且仅在 **DMC-Optim** 和 **LCB** 上评测。对于其他模型规模、架构(如编码专用模型)或更复杂的工程优化场景(如多目标性能与内存兼顾)是否有效,尚未提供证据。此外,**GRPO** 的适配策略在噪声更严重的场景下是否会引入额外方差,仍需探索。