DeepCoder:基于DeepSeek开源编码模型


这是来自Deepseek和阿里千问Qwen混合模型的编码模型。媲美OpenAI o1、 o3-mini级别的编码推理模型,而且完全开源!数据集、代码和训练配方全部开放。

DeepCoder是一个用"团队训练法"(分布式RL)培养出来的AI编程助手。就像让多个老师同时辅导一个学霸(Deepseek-R1-Distilled-Qwen-14B模型),通过反复做题批改(微调),把它训练成了更擅长解决编程问题的"代码小老师"。名字里的14B表示它拥有140亿个"脑细胞",特别擅长分析代码逻辑。

训练技术
为了在不牺牲模型长语境Context能力的情况下扩展推理能力,结合了:

  •  → 迭代语境加长
  •  → 过长过滤(来自 DAPO)
从 16K → 32K 训练 DeepCoder-14B-Preview,然后在 64K 时进行评估。

数据集管理
利用 RL 进行扩展推理需要可验证的奖励。

与数学不同,在线编码数据集往往噪音更大,从而导致训练期间出现错误的奖励信号。

为了解决这个问题,我们实施了一个严格的数据管道:

  •  - 正式解决方案必须通过所有测试
  •  - 每个问题≥6 个测试用例
  •  - 在训练/测试分区之间进行重复数据删除

这个管道为我们提供了 24K 个高质量的经过验证的编码问题,用于 RL 训练。 


阅读原文点击标题:
最近几个月,AI在数学解题方面进步超快(比如DeepScaleR这些模型),但在编程解题方面却落后了。主要是因为很难找到大量高质量、能自动批改的编程题目来训练AI。

我们用"强化学习"(一种让AI通过不断试错来进步的方法),把一个小型AI模型训练成了编程高手——DeepCoder-14B-Preview。这个模型用32张H100显卡,花了两周半时间学习了2.4万道能自动批改的编程题,现在做题能力已经能媲美OpenAI的模型了!我们还开源了训练工具verl-pipe,速度比原来快2倍。

【关于题库】
数学题网上有很多现成的高质量题库,但编程题不一样。我们试过很多编程题库(比如LeetCode这些),发现:

  • 有的题太简单(像LeetCode简单题)
  • 有的题乱七八糟,要么测试用例有问题,要么根本没法自动批改
最后我们精选了三个高质量题库:
  1. TACO验证过的题
  2. PrimeIntellect的SYNTHETIC-1题库
  3. LiveCodeBench上2023.5-2024.7的新题

筛选标准很严格:
✓ 每道题必须能用标准答案通过所有测试
✓ 每道题至少有5个测试用例(防止AI背答案)
✓ 删除重复题目最后得到2.4万道精品题。

【自动批改系统】
要给AI生成的代码打分,需要能自动运行测试用例的系统。我们用了两种"代码沙箱":

  1. Together在线代码运行器:便宜(每题3分钱),每分钟能跑1000+次测试
  2. 本地安全沙箱:用Python子进程隔离运行

【评分规则】
要么全对(通过所有测试),要么零分:

  • 每题随机抽15个最难的测试(按输入长度判断难度)
  • 代码超时(6-12秒)或格式错误直接零分

【训练秘诀】
原本的GRPO训练方法容易崩溃,我们改进成GRPO+:
✗ 去掉"熵损失"(防止AI乱试)
✗ 去掉KL损失(让AI更敢创新)
✓ 允许生成长答案(不因写太长而扣分)
✓ 控制探索幅度(既保持稳定又充分尝试)

【上下文扩展黑科技】
之前训练小模型时,从8K长度开始慢慢加长效果很好。但14B大模型本身就很强,硬要它先学短答案反而会变差。于是我们用了"过长过滤"技术:

  • 不惩罚生成长答案的AI
  • 让AI在16K训练时就能"思考"32K的内容最终这个模型展现出惊人能力:
  • 在16K/32K长度下正确率54%→58%
  • 即使测试64K长度的题目,正确率还能达到60.6%

结论
在这项工作中,我们引入了Deepcoder-14B-Preview14B 模型,该模型在 LiveCodeBench 上实现了o3-mini60.6 % Pass@1 准确率。

为了实现这一目标,我们精选了高质量、可验证的编码数据,并引入了算法和系统优化,以实现有效的 RL 训练。

我们的目标是让大模型的强化学习训练变得大众化。

Deepcoder-14B-Preview这是在这个方向上迈出的第二个重要里程碑,它建立在我们第一个专注于数学推理的模型的基础上DeepScaleR-1.5B-Preview。

通过完全共享我们的数据集、代码和训练方法,我们让社区能够重现我们的工作,让所有人都能接受强化学习训练。

网友:
1、惊人的性能并且完全开源!

2、在 LiveCodeBench v5 上实现 60.6% Pass@1 准确率 (8/1/24-2/1/25)
LiveCodeBench 是 LeetCode 风格问题的集合,因此其中的问题类型在日期范围内有很大的重叠

3、它真的像基准测试所说的那么好吗?我想即使它们与 Llama 4 相差甚远,它仍然胜过大多数 32B 型号

4、如果基准测试好得令人难以置信,那么它们很可能就是假的。如果我们能让这些模型针对特定语言,那就太好了。我倾向于相信他们使用基准测试运行的语言来训练模型,例如 Javascript 或 Python,而我们许多人在日常生活中并不使用这些语言。

5、我让它用Python给我做个会转的立方体。结果它哐哐哐20,000 个token之后还没停。