新智元报道
编辑:编辑部 HXs
【新智元导读】OpenAI o1/o3-mini级别的代码推理模型竟被抢先开源!UC伯克利和Together AI联合推出的DeepCoder-14B-Preview,仅14B参数就能媲美o3-mini,开源代码、数据集一应俱全,免费使用。
OpenAI o1/o3-mini级的推理模型,竟被抢先开源了?
刚刚,来自UC伯克利和Together AI的联合团队,重磅推出了一款完全开源的代码推理模型——DeepCoder-14B-Preview。
现在,只需要14B就可以拥有一个媲美o3-mini的本地模型,并且完全免费!
DeepCoder-14B-Preview通过分布式RL从Deepseek-R1-Distilled-Qwen-14B微调得来。
在LiveCodeBench基准测试中,它的单次通过率(Pass@1)达到了60.6%,提升幅度高达8%。
至此,又见证了强化学习的胜利。
DeepCoder在训练过程中的LiveCodeBench (LCB) 得分:训练到第180步的时候,上下文长度扩展到了32K;用32K时最佳的检查点来做推理,并且把上下文扩展到64K,这时LCB得分能达到60.6%,和o3-mini性能相当
同时,团队还开源了verl-pipe,这是verl后训练系统的扩展,集成了多项系统优化,能让端到端的训练速度提高2倍。
对此网友们称赞:这是完全开源的胜利,不仅仅是模型,数据集、代码、训练日志也开放。
值得一提的是,DeepCoder-14B-Preview基于24K个可验证的编程问题,在32个H100 GPU上训练了2.5周。
数据集构建
数学领域的研究发现,强化学习要是有可验证的奖励机制,能显著提升模型的推理能力。
在数学领域,网上能找到好多高质量、可验证的数据,编程则相对稀缺。
在早期实验中,团队评估了几个常见的代码数据集,像APPS、TACO、CodeContests、KodCode和LeetCode。
结果发现,有些数据集对模型来说太简单了,如KodCode和LeetCode;还有些数据集有噪声,或者里面的测试用例有缺陷、不完整,不可验证。这会给出错误的奖励信号,让RL训练无法稳定进行。
为解决这些问题,研究者整理出一个高质量的训练集,包括:
TACO里已验证过的问题。
PrimeIntellect的SYNTHETIC-1数据集中经验证的问题。
2023年5月1日到2024年7月31日提交的LiveCodeBench问题。
为保证数据质量,让RL训练能顺利开展,有一套严格的过滤流程:
程序化验证:每个问题都会用外部官方的解法自动检查一遍,只保留官方解法能通过所有单元测试的问题,检查过程在tests/rewards/test_code_batch.py脚本中自动完成。
测试过滤:每个问题至少包含5个单元测试。测试用例少的问题容易让模型钻空子,模型通过识别常见测试用例,学会简单地输出记忆的答案,即「奖励黑客」。
去重:研究者会把数据集中重复的问题都去掉,防止互相干扰。他们对Taco Verified、PrimeIntellect SYNTHETIC-1和LCB(2023年5月1日-2024年7月31日)这三个训练数据集做了去重处理,还检查了测试数据集LCB(2024年8月1日-2025年2月1日)和Codeforces的57个竞赛数据集。
过滤后,得到24K个高质量的编程问题,用于RL训练,其中7.5K个来自TACO Verified,16K个来自PrimeIntellect SYNTHETIC-1,600个来自LiveCodeBench。
代码沙盒环境
为了计算代码RL训练的奖励,得在代码沙盒里,对模型生成的代码进行单元测试。
每个RL迭代过程,用1024个问题来评估训练效果,每个问题至少有5个单元测试。
这么多测试任务,就得靠100多个代码沙盒一起并行运行,才能在合理的时间内,准确验证模型生成的代码。
目前,研究者用了两种沙盒:Together代码解释器和本地代码沙盒。
Together代码解释器
这个环境速度快、效率高,能直接用在RL训练上,每个问题的成本仅3美分。
Together代码解释器已支持100多个沙盒同时运行,每分钟能执行1000多次沙盒操作。
这些沙盒能访问标准输出(stdout)、标准输入(stdin),还能评估代码最后一行输出的结果。
同时,它能把代码运行的环境和主机系统隔离开,保证安全。
本地代码沙盒
本地代码沙盒是通过启动一个独立的、有防护的Python子进程来运行的。它从标准输入(stdin)接收测试用例的输入,然后把答案输出到标准输入(stdout)。
本地沙盒用的是LiveCodeBench官方代码库里的评估代码,确保测试结果和现有排行榜一致。
奖励函数
有些奖励方式容易让模型作弊,比如给思维链(CoT)惩罚,或者N个测试中有K个通过就给K/N奖励。
奖励函数采用稀疏结果奖励模型(ORM),具体奖励规则是这样的:
奖励为「1」:生成的代码必须通过所有抽选的单元测试。有些问题有几百个测试用例,全部验证不太现实,所以会根据输入字符串的长度,每个问题挑出15个最难的测试(根据输入字符串的长度来判断)。
奖励为「0」:要是模型生成的代码有一个测试用例没通过,或者答案格式不对(比如缺少python[CODE]标记),就没有奖励。每个测试用例都有6-12秒的时间限制。
训练方法
GRPO+
研究者参考了DAPO的关键思路,改进了GRPO算法,让训练过程更稳定:
GRPO+和GRPO在16K上下文训练中的平均训练奖励:GRPO的奖励曲线最后会崩溃,GRPO+因为有Clip High机制,奖励曲线保持稳定
无熵损失:加上熵损失项,很容易让训练不稳定,熵值指数级增长,导致训练崩溃。因此移除了熵损失项。
无KL损失(源自DAPO):去掉KL散度损失,LLM就不会被限制在原来监督微调(SFT)模型的置信区域内。还能省掉为参考策略计算对数概率,训练速度也就更快了。
超长过滤(源自DAPO):为保留长上下文推理能力,对超出长度而被截断的序列做了特殊处理。这项技术使DeepCoder即使在32K上下文环境中训练,在64K上下文下也能推理。这种过滤方法允许响应长度自然增长,而不会因截断而受到惩罚。
由于采用超长过滤机制,GRPO+的响应长度随训练时间稳步增长
Clip High(源自DAPO):通过提高GRPO/PPO代理损失的上限,鼓励模型尝试更多不同的可能,熵值也更稳定。这样调整后,训练更稳定,模型性能也有提升。
Clip High机制和没有熵损失,能保证GRPO+的token级熵不会崩溃,鼓励模型充分探索
迭代式上下文扩展
在DeepScaleR的介绍中,提到过迭代式上下文扩展技术。它能让模型先在短一点的上下文里学会有效思考,然后再应用到更长的上下文。
这个方法曾让1.5B参数模型的下游任务性能稳步提升,随着上下文窗口从8K扩大到16K,再到24K的过程中,在AIME测试里的准确率从33%提高到38%,最后到了43%,最终达到了o1-preview的水平。
不过,将这个技术用在14B参数模型的时候,遇到了新问题:
14B参数模型本身推理能力就很强,想要再提升,就得解决更难的问题。
这些更难的问题往往需要比8K更长的上下文窗口,而8K是之前小模型训练的起始上下文长度。
如果一开始用短上下文训练,模型输出超出这个长度就惩罚它,这样做效果不好。模型的初始性能会下降,输出的内容也会变短,长上下文的推理能力也会变弱。
为了在保证训练效率的同时,让模型能处理长上下文推理,研究者引入了DAPO的超长过滤技术。在训练的时候,会忽略那些因为太长被截断的序列,这样模型就算生成的内容长一点,也不会被惩罚。
因此,模型即使在较短的上下文中训练,也能「想得长远」。
研究者把迭代上下文扩展用在DeepCoder-14B-Preview上,把训练的上下文窗口从16K扩大到32K,LiveCodeBench基准测试中,模型表现如下:
在16K和32K上下文长度下,准确率从54%提升至58%。
在64K上下文长度评估时,达到了60.6%。
这说明模型的泛化能力很强,超出了训练时的上下文范围也能表现得很好。
和DeepSeek-R1-Distill-Qwen-14B这种基础蒸馏模型比起来,DeepCoder-14B-Preview的泛化能力就更突出了。
基础蒸馏模型一旦超出训练时的上下文长度,性能就很难提升了。
虽然DeepCoder因为平均响应长度较长,在16K上下文长度下的原始性能低一些,会因为截断和格式问题扣分,但它在长上下文的推理能力很强,最终在64K上下文长度的评估中超越了其他模型。
DeepCoder在训练过程中的平均响应长度和训练奖励:平均响应长度从8K增长到17.5K
DeepCoder的成功,正是把迭代上下文扩展和超长过滤技术结合起来了。
从图中可以看到,在训练过程中,模型的平均响应长度从8K增长到17.5K,平均奖励也从0.6提高到 0.7。说明随着时间推移,模型学会了更厉害、更有条理的思考方式。
关键技术改进
在多种编程基准上对 Deepcoder-14B-Preview 进行了评估,包括LiveCodeBench (LCB)、Codeforces、HumanEval+以及AIME2024数学竞赛。
凭借14B的参数量,模型在所有编程基准上均展现出强劲性能:在LiveCodeBench上实现了60.6%的Pass@1准确率,在Codeforces上获得了1936的评分,其表现可与o3-mini (low) 和o1模型相媲美。
训练耗时太长?系统优化来帮忙
使用长上下文对LLM进行强化学习(RL)训练非常耗时,需要在长上下文环境中反复进行采样和训练。
若无系统层面的优化,完整的训练流程可能耗费数周乃至数月。14B参数编程模型训练,每一步就得花1200至2500秒,总训练时长达到2.5周!
团队引入并开源了verl-pipeline。它是开源RLHF库verl的一个优化版本,用了多项系统级改进措施,旨在加速端到端的RL训练过程。
相较于基准的verl实现,verl-pipeline实现了高达2.5倍的速度提升。
运用这些新的系统优化来训练DeepCoder-1.5B-Preview模型,该模型在LiveCodeBench上的准确率达到了25%,相比Deepseek-R1-Distill-Qwen-1.5B提升了8%。
采样器是瓶颈
在后训练中,采样往往是拖慢整体进度的关键因素。这是因为用vLLM和SGLang这类推理引擎生成32K token的长序列时,会产生延迟。
Verl的PPO/GRPO训练流程:每次RL迭代都包含采样、奖励函数计算和训练这三个阶段;其中,采样是整个训练流程的瓶颈,训练速度受限于那些生成较长序列的掉队采样器(straggler samplers)
RL训练系统通常受限于采样时间——上图展示了Verl的PPO/GRPO流水线,其中响应长度的不一致性导致部分采样器成为掉队者。
这些掉队者会拖慢训练进度,而先完成任务的采样器则处于空闲状态,从而导致GPU利用率低下。
朴素解决方案:小批流水线化
为了减少RL训练过程中的空闲时间,研究者将采样和训练过程流水线化(Minibatch Pipelining)。
如此一来,训练器在采样器继续生成后续数据批次的同时,就会开始利用较早到达的小批数据进行模型更新。这种重叠执行有助于减少采样带来的延迟。
小批流水线:采样器和训练器分别在不同的工作机组中运行;当完成采样并释放小批量数据(用于PPO/GRPO训练)后,训练器会异步处理这些数据;在一次迭代结束时,训练器会将更新后的权重给采样器
然而,这种方法存在三个关键的局限性:
小批数据的平均序列长度往往随训练进展而增长,这增加了处理后续小批的训练时间。结果就是,最后几个小批数据常常在采样阶段结束后才能处理完毕,从而限制了流水线化带来的实际效益。
流水线化需要在采样器和训练器之间静态划分GPU资源,这减少了可用采样器的数量。不同于Verl可以在同一个GPU池中动态地切换采样器和训练器角色,这种静态划分因采样器数量减少,可能反而会延长端到端的总采样时间。
奖励函数的计算可能耗时很长,特别是对于编程类任务,每个RL迭代都需要运行数千个单元测试。在Verl的默认设置中,奖励计算是在所有采样任务完成后,在头节点(head node)上集中进行的。
尽管存在这些约束,团队在代码库的ray_trainer_pipeline.py文件中实现了小批流水线化,并且需要指出的是,这种流水线技术可以通过引入微批处理(microbatching)来进一步优化。
DeepCoder的解决方案:一次性流水线化
为实现训练、奖励计算和采样的完全流水线化,研究者引入了一次性流水线化(One-Off Pipelining)。
一次性流水线:采样器会提前一个迭代周期生成一批数据,而训练器则使用上一次迭代的数据来更新梯度;此外,奖励函数的计算与采样过程是交错进行的;这种方法不会为GRPO/PPO的策略算法引入异步离策略样本
其思路非常简单:牺牲第一个RL迭代,仅执行采样任务,然后利用这个采样得到的数据批次在下一个迭代中进行训练。
这样一来,采样和训练就能并行处理,彻底消除了采样完成后训练器的等待空闲时间。
其次,奖励计算被嵌入到采样流程中,与之交错执行。
一旦某个采样请求完成,其对应的奖励会立即被计算出来——这有效减少了奖励评估环节的开销,特别是对于计算密集型任务(例如编程任务中的测试用例执行)而言效果显著。
团队在代码库verl分支(fork)中的ray_trainer_async.py文件里实现了一次性流水线化。
端到端性能
一次性流水线完全掩盖了训练器和奖励计算的时间,数学任务训练时间缩短1.4倍,编程任务缩短2倍
上图展示了对verl、小批流水线化和一次性流水线化在两种工作负载(数学和编程)下的评估结果。
为确保公平性,所有基准方法都利用Python线程池并行计算奖励;而verl官方实现是串行计算每个样本的奖励,这种方式对于编程任务来说耗时过长,难以实际应用。
在8块A100 GPU上对Deepcoder-1.5B-Preview进行了评估,并细致调整了采样器与训练器的资源配比,旨在更好地平衡两者所需的时间开销。
对于数学任务:一次性流水线化将每次RL迭代所需时间缩短了1.4倍。值得注意的是,数学任务的奖励计算时间几乎为零,因为它仅涉及基础的Sympy检查。特别之处在于,一次性流水线化能够完全掩盖(mask away)训练器所需的时间,这与小批流水线化中最后一个小批会「溢出」(spill over)导致延迟的情况形成了对比。
对于编程任务:计算奖励需要在每次RL迭代中运行数千个单元测试,这是一个非常耗时的过程。一次性流水线化能够同时掩盖训练器时间和奖励计算时间,从而将端到端的训练总时长缩短了2倍。
最关键的是,一次性流水线化不仅切实有效,而且能成功扩展应用于复杂的编程任务。
DeepCoder使用ray_trainer_async.py(采用一次性流水线化)训练了DeepCoder-1.5B-Preview,其在 LiveCodeBench (LCB) 上的得分相较于基础的蒸馏模型提升了8%。
作者介绍
Sijun Tan(谭嗣俊)
谭嗣俊是UC伯克利计算机科学专业的三年级博士生,导师是Raluca Ada Popa。隶属于伯克利的Sky Computing Lab。
此前,他在弗吉尼亚大学获得计算机科学和数学双学士学位,导师是David Wu和Yuan Tian。
他曾在Facebook AI Research(FAIR)实习过一段时间,并在蚂蚁集团担任过高级算法工程师。
他的研究领域涵盖机器学习、计算机安全和应用密码学。目前,其研究重点是增强通用型AI智能体的能力和鲁棒性。
Michael Luo
Michael Luo目前是UC伯克利电气工程与计算机科学系(EECS)的博士生,导师是Ion Stoica教授。
在此之前,他获得了UC伯克利电气工程与计算机科学硕士和工商管理双学士学位。
他的研究兴趣主要在人工智能和系统领域。目前,其研究主要是为机器学习从业者构建可扩展的系统,以实现Sky Computing的愿景。
Roy Huang
Roy Huang目前是UC伯克利计算机科学专业的大四学生,对CV和NLP领域的研究感兴趣。
参考资料:
https://pretty-radio-b75.notion.site/DeepCoder-A-Fully-Open-Source-14B-Coder-at-O3-mini-Level-1cf81902c14680b3bee5eb349a512a51
https://huggingface.co/agentica-org/DeepCoder-14B-Preview
https://x.com/togethercompute/status/1909697124805333208
《斩神红樱脱了内裤求被c的小说》,《y85ouztigy6ysf5y》1秒流鼻血的女性胸片怎么看
“5万捷克币后续完整版免费”
女教师用🐻夹我的🍌电影
……
04月10日
“爱床sex❌❌⭕️⭕️A片”工厂请千名工人吃1吨龙虾西瓜
↓↓↓
04月10日,向绿而行“碳”新路|青岛啤酒新角色:中国工业碳达峰“领跑者”,神里绫华被❌自慰爽本子,6hj9h1p蜜7i,芥敦r18道具车,揉我奶⋯啊⋯成人无码影视
04月10日,发朋友圈前,你会犹豫吗?,9.1猎奇(官网)免费,成人免费视频🔞国产免费菠萝,藤咲爱伦,继夫不戴套挺进我的身体视频
04月10日,广东去年新收一审行政案件和行政非诉审查案件“双下降”,男生的露J㊙️无遮挡图片,可以c女性角色的游戏手游推荐,搡老女人ⅩXXX搡老女人录像,日本❌❌❌❌❌色情21
04月10日|重庆一教师在餐馆酒后咬伤学生耳朵 警方:行拘10日|911美女秘片黄在线观看游戏|微信卖偷拍片➕v|美女胸又不又❌|飞霄将军被C
04月10日|吃银杏果降压降脂?喝醋能软化血管?官方辟谣|达达利亚被❌娇喘流白色液体|成人漫画H🔞漫画免费|欧美性猛交XXXXX无码婷|扒开水手服美女❌狂揉❌免费
04月10日|中新健康丨清华大学宣布首例无线微创脑机接口临床试验成功|绝区零同人❤️涩涩|无限看片在线版免费视频大全|东北老肥熟口味重最怕三个东西|邓紫棋自慰❌❌喷水好爽……
04月10日,促进首发经济 加大保障力度,井野被鸣人扒开腿狂,穆桂英被两根粗黑疯狂进出视频,高清免费网站,女帝被扒开腿爆❌乳液狂飙作文
04月10日,美方致函台积电对某些复杂芯片实施出口限制 商务部回应,VK妆主大大的母狗,🌸国产极品🌸白皙爆乳,雯雯在乡下被继H嗯啊晓雯雯视频,香蕉成人视频下载快看视频
04月10日|西藏阿里:送证上门暖人心 便民利民显真情|腹肌男🍌伸进去里做运动|日本无码亚洲精品无码网站老牛|扒开真人❌狂揉❌难受|女学生被🔞扒衣
04月10日,建立健全老旧小区改造长效管理机制,熊猫电影yy8y在线观看免费播放,白丝小舞夹腿挣扎求饶的漫画内容,小受被扒开腿震蛋H男男动漫,亚洲A片无码㊙️色多多
04月10日,以色列军方:4名以军士兵在黎巴嫩南部被打死,91女神娇喘呻吟高潮喷水,爆❌喷水❌洗澡❌麻豆,白丝校花🌸自慰出水-游戏,精品成a人无码亚洲成a无码妖精
04月10日,邮政快递合作已覆盖全国七成以上建制村,JZZXXX@51HD,1⃣一女二三男事,艾玛沃特森裸被❌高清,欧美人与禽ZZZOZZO性伦
04月10日|冷空气减弱南下 西南地区东部等地将有小到中雨|泰勒知道自己叫霉霉吗|丰满岳乱偷高潮A片漫画软件|动漫美女❌爆乳白丝|赵美延被放跳蛋
04月10日|学习新语|领悟“六个坚持”:以人民为中心|纲手被吊起来揉搓双乳小说图片|竹菊精品视频一区二区|弹丸论破同人h色本子|鞠婧祎脱了内裤让男生揉他的胸
04月10日|35名“熊猫小记者”开启全球文化追访之旅:向他乡介绍家乡|小志与谷玉霞的恋情|初音未来被❌到爽羞羞|3D动漫同人18动漫免费|孟子义脱了内裤打开腿让人躁小说
孤单又灿烂的神:鬼怪,亚马逊正式续订《辐射》第二季|【巴黎奥运会】郑钦文:再艰难的时刻我都没有想过放弃|13女萝裸体自慰出白浆|白丝jk❌❌爆乳❌❌|免费白丝jk爆❌❌乳❌❌❌在线|挺进岳的肥肉泬免费视频
监制:邓金木
策划:赖晗
主创:唐征宇 林箴贺 陈佛烘 颜亦阳 陈林韵
编辑:王家菁、段圣祺