找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2917

积分

0

好友

373

主题
发表于 13 小时前 | 查看: 3| 回复: 0

NousCoder-14B竞赛编程模型技术架构图

最近,Nous Research 发布了一款专为竞赛级编程任务设计的开源模型——NousCoder-14B。这款模型在 Qwen3-14B 的基础上,利用基于可验证奖励(Verifiable Rewards)的强化学习(RL)进行了深度后训练。

它在 LiveCodeBench v6 基准测试中的表现令人瞩目:Pass@1 准确率达到 67.87%。这个成绩相比其基础模型 Qwen3-14B 的 60.79%,提升了 7.08 个百分点。本文将通过云栈社区的视角,深入拆解其背后的技术方案,重点分析数据集构建、RL基础设施设计、GRPO算法变体以及长上下文处理策略。

核心基准与评估指标

在深入技术细节前,我们需要先理解模型的评估标准。LiveCodeBench v6 是专为评估竞赛编程能力设计的基准测试,包含 454 个从 2024年8月到 2025年1月的问题。

  • 任务性质:所有测试均为竞赛编程风格,要求解决方案必须通过严格的时间和内存限制,并正确处理大量隐藏的测试用例。
  • Pass@1 指标:指模型生成的第一个程序能够一次性通过所有测试用例(包括逻辑正确性及资源约束)的问题比例。这比单纯的语法正确性要求高得多,直接衡量模型解决实际编程问题的可靠性。

数据集构建:基于执行的RL基础

在代码生成领域应用强化学习,核心难点在于奖励信号的设计。NousCoder-14B 采用了“基于执行(Execution-based)”的策略,这意味着其训练数据必须是完全可验证的。

训练集包含了约 24,000 个可验证编程问题,来源包括 TACO Verified、PrimeIntellect SYNTHETIC 1 以及 LiveCodeBench(2024年7月31日之前的问题)。每个训练样本都包含完整的任务描述、输入/输出格式、参考实现以及多个测试用例。这种结构为 RL 提供了一个廉价且明确的二元奖励信号:生成的代码运行并通过测试即为正向反馈,反之则为负向反馈。

基础设施:Atropos 框架与 Modal 沙箱

为了在48张B200 GPU上进行为期4天的高效训练,Nous Research构建了一套复杂的RL环境。

1. 奖励机制设计

模型基于标准的 LiveCodeBench 提示格式生成 Python 代码,每个生成结果根据测试用例的执行情况获得标量奖励:

  • Reward +1:通过该问题的所有测试用例。
  • Reward -1:代码输出错误答案,或在任何测试用例上超过15秒时间限制或4GB内存限制。

2. 安全且弹性的执行沙箱

在 RL 训练中执行模型生成的代码极具风险且资源消耗巨大。团队使用了 Modal 作为自动扩缩容的沙箱环境:

  • 隔离性:每个生成结果启动一个独立的 Modal 容器。
  • 稳定性:这种设计将“推理计算”与“验证计算”物理隔离,防止不稳定的代码执行影响 RL 训练循环的稳定性。

3. 流水线优化

为了最大化 GPU 利用率,系统采用了异步流水线设计。当推理 Worker 完成一次生成后,立即将其发送给 Modal 验证器,并随即开始下一次生成任务,无需等待验证结果。这种设计确保了训练循环主要受限于推理计算,而非验证计算,从而提升了整体吞吐量。

4. 验证并行策略

团队探讨了三种并行验证粒度:

  • Per-Problem(每个问题一个容器)
  • Per-Rollout(每个生成结果一个容器):最终被采纳的方案。
  • Per-Test-Case(每个测试用例一个容器):因容器启动开销过大被弃用。

在 Per-Rollout 策略下,每个容器负责运行该代码的所有测试用例。为了优化效率,系统会优先运行“最难”的测试用例集,一旦失败立即停止(Fail-fast),大幅减少了无效计算。

算法核心:GRPO 及其变体

NousCoder-14B 的核心优化算法基于 GRPO (Group Relative Policy Optimization),其最大优势在于不需要独立的价值模型(Value Model),降低了显存占用。团队在此基础上测试了三种目标函数:

  1. DAPO (Dynamic sAmpling Policy Optimization)
  2. GSPO (Group Sequence Policy Optimization)
  3. GSPO+ (Modified GSPO)

所有算法都共享相同的“优势”定义:即单个生成结果的奖励相对于组内奖励均值和标准差的归一化值。

算法对比分析

特性 DAPO (最终胜出) GSPO GSPO+
加权层级 Token 级别 序列级别 序列级别修正
裁剪策略 Clip Higher:增加低概率 Token 的探索 标准裁剪 标准裁剪
动态采样 丢弃全对或全错的组(优势为 0) - -
Pass@1 (81k Context) 67.87% 66.26% 66.52%

DAPO 的关键改进:

  • Clip Higher Rule:不仅限制策略更新幅度,还特定地增加了对低概率 Token 的探索能力,这有助于模型跳出局部最优。
  • 动态采样:如果一组生成结果全部正确或全部错误,它们提供的梯度信息极少(优势为0),DAPO 会直接丢弃这些组,将计算资源聚焦于那些能提供有效学习信号的、有区分度的样本。

长上下文策略:迭代扩展与超长过滤

Qwen3-14B 本身具备长上下文能力,NousCoder 在此基础上进行了针对性的增强训练。这种对长序列的建模能力,离不开 Transformer 架构的基础支撑。

1. 迭代式上下文扩展

训练并非一步到位,而是分阶段进行:

  • 阶段一:在 32k 上下文窗口下训练。
  • 阶段二:扩展至 Qwen3-14B 的最大原生窗口 40k 继续训练。
  • 评估阶段:利用 YaRN 技术在推理时将上下文扩展至 81,920 tokens

2. 关键技巧:超长过滤

在 RL 训练中,如果模型生成的代码超过了当前的上下文窗口,通常会被截断或导致错误。

  • 传统做法:给予负奖励。但这会迫使模型倾向于生成更短的代码,而非更好的代码。
  • NousCoder 做法:将超长生成结果的优势重置为 0。这意味着该样本既不贡献正向梯度也不贡献负向梯度,直接从训练信号中移除。这一策略有效避免了模型为了“生存”而牺牲代码的完整性和复杂性,确保了在推理由短变长时的质量稳定性。

总结

NousCoder-14B 的发布证明,在中等规模模型上,通过精心构建的高质量可验证数据与精细设计的强化学习策略,完全能够实现竞赛级编程能力的显著突破。其围绕可验证奖励构建的完整技术栈,为未来开源实战中的代码模型优化提供了一个极具参考价值的范本。




上一篇:OpenCV环境配置与C++项目集成指南:从下载到代码实战
下一篇:Shannon:全球首个开源全自动AI渗透测试框架解析,专治AI生成代码的安全漏洞
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-10 19:52 , Processed in 0.306954 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表