我们研究发布了 NousCoder-14B:一个经过Qwen3-14B强化学习预训练的竞技类编程模型。
Nous Research推出了 NousCoder-14B,这是一个经过强化的奥运编程模型,使用验证性奖励进行强化学习(RL)后训练。在2024年8月1日至2025年5月1日的LiveCodeBench v6基准测试中,该模型实现了67.87%的Pass@1准确率。这比在相同基准上Qwen3-14B的基础模型60.79%的基准提高了7.08个百分点。研究团队使用48个B200 GPU在4天内对24k个可验证编码问题进行训练,并在Hugging Face上以Apache 2.0许可证发布了权重。
LiveCodeBench v6基准的设计是为了竞技编程评估。这里使用的测试拆分包含454个问题。训练集使用与Agentica和Together AI的DeepCoder-14B项目相同的配方。它结合了TACO Verified、PrimeIntellect SYNTHETIC 1和2024年7月31日之前创建的LiveCodeBench问题。
基准测试仅包括竞技编程风格的任务。对于每个问题,解决方案必须遵守严格的时间内存限制,并必须通过大量隐藏的输入输出测试。Pass@1是指首次生成的程序通过所有测试的的问题占比。
所有用于训练的数据集都是由可验证代码生成问题组成。每个问题都有一个参考实现和多个测试案例。"训练集包含24k个问题,来源于:"
- TACO Verified
- PrimeIntellect SYNTHETIC 1
- 2024年7月31日之前的问题
测试集是LiveCodeBench v6,跨度为2024年8月1日至2025年5月1日的问题。
每个问题都是一个完整的竞技编程任务,包括描述、输入格式、输出格式和测试用例。这种设置对于强化学习很重要,因为它提供了在代码运行后易于计算的二进制奖励信号。
强化学习环境使用Atropos框架构建。NousCoder-14B使用标准LiveCodeBench提示格式进行提示,并为每个问题生成Python代码。"每个滚动都得到一个与测试案例结果相关的标量奖励:"
- 如果生成的代码通过了该问题的所有测试案件,则奖励为1
- 如果代码在任何一个测试案件中的输出错误、超过15秒的时间限制或超过4GB内存限制,则奖励为-1
为了安全且大规模地执行不可信的代码,该团队将Modal用作自动缩放的沙盒。系统针对研究团队描述的主要设计在每个滚动中启动一个Modal容器。每个容器运行该滚动的所有测试用例。这避免了将训练计算与验证计算混合,并保持了强化学习循环的稳定性。
研究团队还管道化推理和验证。当一个推理工作员完成生成后,它将完成发送到Modal验证器,并立即开始一个新的生成。使用多个推理工作员和固定的Modal容器池,该设计将训练循环的推理计算绑定,而不是验证绑定。
团队讨论了3种验证并行化策略。他们探索了每个问题、每个滚动和每个测试案例一个容器的方案。他们最终避免了按测试案例设置,因为容器启动开销太大,并采用了一种方法,即每个容器评估许多测试案例,首先关注一小部分最难测试案例。如果这些失败,则系统可以提前停止验证。
NousCoder-14B使用群组相对策略优化(GRPO),这不需要单独的价值模型。在GRPO之上,研究团队测试了3个目标:动态sAmpling策略优化(DAPO)、群组序列策略优化(GSPO)以及一个称为GSPO+的GRPO修改变体。
所有3个目标共享相同的优势定义。每个滚动的优势是该滚动的奖励除以组内奖励的平均数和标准差。DAPO在标记级别应用重要性加权和裁剪,与GRPO相比,引入了三个主要变化:
- 一个较高的裁剪规则,增加了相对低概率标记的探索
- 一个标记级别的策略梯度损失,每个标记具有相同的权重
- 动态采样,因为在组内所有正确或所有错误的组都因为零优势而被丢弃
GSPO将重要性加权移动到序列级别。它定义了一个序列重要性比率,该比率将整个程序中的标记比率聚合起来。GSPO+保持序列级校正,但它重新缩放梯度,使无论序列长度如何,标记都同等加权。
在LiveCodeBench v6上,这些目标之间的差异微小。在81,920个标记的上下文中,DAPO达到了67.87%的Pass@1,而GSPO和GSPO+分别达到了66.26%和66.52%。在40,960个标记的情况下,所有3个目标都在63%的Pass@1附近。
Qwen3-14B支持长上下文,训练遵循迭代上下文扩展计划。团队首先使用32k上下文窗口训练模型,然后继续在最大Qwen3-14B上下文窗口40k处训练。在每个阶段,他们都选择在40k上下文中具有最佳LiveCodeBench得分的检查点,然后在评估时间使用YaRN上下文扩展达到80k个标记,即81,920个标记。
一个关键技术是过长过滤。当生成的程序超过最大上下文窗口时,他们将其优势重置为零。这从梯度信号中将该滚动删除,而不是对其进行惩罚。研究团队报告说,这种方法避免因纯粹优化原因将模型推向较短的解决方案,并且在测试时扩展上下文长度时有助于保持质量。
主要结论
- NousCoder 14B是一个基于Qwen3-14B的竞技编程模型,使用基于执行的RL进行训练,在LiveCodeBench v6上达到了67.87%的Pass@1,比同一基准测试上Qwen3-14B模型的60.79%基准提高了7.08个百分点。
- 该模型在来自TACO Verified、PrimeIntellect SYNTHETIC-1和2024年7月31日之前的LiveCodeBench任务的24k个可验证编码问题上进行训练,并在2024年8月1日至2025年5月1日的454个问题的不重叠LiveCodeBench v6测试集上进行了评估。
- RL设置使用Atropos,Python解决方案在沙盒容器中执行,如果解决所有测试案例则奖励为1,如果任何失败或违反资源限制则奖励为-1,以及推理和验证异步运行的管道化设计。
- 群组相对策略优化目标DAPO、GSPO和GSPO+用于长上下文代码RL,所有目标都运行在组归一化奖励上,并且性能相似,DAPO在最长81,920个标记的上下文中达到了最佳的Pass@1。
- 训练使用迭代上下文扩展,首先为32k,然后为40k个标记,然后在评估时间使用基于YaRN的扩展达到81,920个标记,包括用于稳定性的过长滚动过滤,并且作为完全可复制的开源堆栈提供,包括Apache 2.0权重和RL管道代码。
更多信息,请查看模型权重和技术细节。也请免费关注我们的Twitter并为我们的100k+ ml SubReddit加入订阅。等一下!你在Telegram上吗?[现在你也可以加入我们的Telegram群组。](https://t.me/machinelearningresearchnews)