豆包代码大模型,不小心给曝光了!
在字节开源的代码大模型评估基准FullStack Bench里面,出现了此前字节未披露过的Doubao-Coder。
不过目前还只是Preview版,还并没有上线。
它在多种编程语言上的性能表现如下,可以看到在闭源模型中排名第五。
今年6月,字节还发布了AI编程助手豆包MarsCode。据传即由Doubao-Coder模型支撑。
目前,豆包MarsCode每月为用户贡献百万量级代码。
而回到这个评估基准,据介绍FullStack Bench是目前最全面的代码评估数据集。
团队还同步开源了可随时测评代码大模型的沙盒执行环境SandBox Fusion,单服务器即可部署,也可直接在线体验。
全新代码大模型评估基准FullStack Bench
既然如此,那就先来了解一下这个最新评估基准。
有一说一,现在代码大模型越来越卷,评估AI编程水平的“考卷”也被迫升级~
代码评估基准可以帮助代码大模型不断优化。不过,当前的主流基准越来越难以反映代码大模型的真实水平了。
主要体现在题目类型相对单调,覆盖的应用领域和编程语言少,模型即便在考试中拿了高分,现实中可能还是难以应对复杂的编程问题。
为了更真实地评估AI编程水平,字节豆包大模型团队联合M-A-P社区,开源了全新代码大模型评估基准FullStack Bench。
这是一个专注于全栈编程和多语言编程的代码评估数据集,它首次囊括了编程全栈技术中超过11类真实场景,覆盖16种编程语言,包含3374个问题。
FullStack Bench的应用领域抽取自全球最大的程序员技术问答社区Stack Overflow,相比HumanEval等基准覆盖的编程领域扩大了一倍以上。
此前业界基准难以反映真实世界代码开发的多样性和复杂性。
例如,HumanEval和MBPP中近80%数据只聚焦于基础编程和高级编程问题;DS-1000中超过95%数据集中于数据分析和机器学习,且仅对Python语言进行评测;xCodeEval虽覆盖多项任务,但基本局限于高级编程和数学领域;McEval和MDEval扩展了支持的编程语言,但应用领域仍局限于基础编程和高级编程,未涉及更广泛的场景。
为模拟全栈开发的实际应用场景,字节豆包大模型和M-A-P研究团队分析了全球最大的程序员技术问答社区Stack Overflow上的问题分布,从中提炼出常见的真实编程应用领域。
团队从Stack Overflow上随机抽取了50万个问题,并使用大模型为每个问题标注应用领域类型。
研究团队筛选出占总问题数前88.1%的主要应用领域,其余领域归类为“其他”。再通过对领域分布做适当调整来保证鲁棒性,最终形成了FullStack Bench关注的超过11种应用场景及分布比例。
FullStack Bench包含3374个问题(中文及英文问题各占一半),每个问题均包括题目描述、参考解决方案、单元测试用例及标签,总计15168个单元测试。
为保证评估准确性,每个问题内容均由相关领域的编程专家设计,并经AI和人工验证进行质量复核。例如,数据分析相关问题,由数据工程专家提出并把关配套内容。
在初始数据集构建后,团队根据主流代码大模型测试结果,按问题难度、模糊性和可解性对数据质量进行了交叉评估和进一步完善。
FullStack Bench数据构成情况如下图所示。
为方便开发者对大模型代码能力进行系统性测试,豆包大模型团队还开源了一款高效的代码沙盒执行工具——SandboxFusion,用于评估来自不同语言的不同编程任务。
除了FullStack Bench,SandboxFusion还兼容超过10种广泛使用的代码评估数据集,支持23种编程语言。开发者在单服务器上即可轻松部署SandboxFusion,也可直接在GitHub上进行体验。
评测结果:解决难题,闭源模型仍优于开源模型
发布评测基准及沙盒的同时,研究团队也基于FullStack Bench测评了全球20余款代码大模型及语言大模型的编程表现。
模型包括Qwen2.5-Coder、DeepSeek-Coder-v2、CodeLlama等开源模型,以及GPT-4o、OpenAI-o1、Doubao-Coder-Preview等闭源模型。对于开源模型,根据模型大小,分为五个组别:1B+、6B+、13B+、20B+和70B+。
跨领域表现:数学编程领域差异最大
得益于强大的推理能力,OpenAI o1-preview不出所料地领先。
不过,一些开源模型也有不错的表现。如DeepSeekCoderv2-Instruct,在AP(高级编程)、OS(操作系统)和其他类别中得到高分,拉开了与其他开源模型的差距。
OpenCoder-1.5B-Instruct、Qwen2.5-Coder-7B-Instruct、Qwen2.5-Coder-14B-Instruct在其各自开源组别中拔得头筹,并超越了一些更高参数级别的模型。
为了全面评估现有大语言模型在不同场景下的表现,研究团队可视化了模型在FullStack Bench各领域的表现。
在BP(基础编程)、AP(高级编程)、MA(数学编程)、ML(机器学习)和MM(多媒体)等领域中,模型表现差异显著,其中以MA领域的差距最大。
MA最佳表现者为OpenAI o1-preview(得分80.42),而最差的是CodeLlama-34B-Instruct(得分14.34)。数学编程要求模型同时具备数学和编程能力,那些在高度专业化代码语料库上训练的模型,在MA领域往往表现较差。
这一结果进一步证明,FullStack Bench能够更全面地评估模型的综合编程能力。
跨语言表现:C++、C和Ruby上存较大差异
研究团队对不同模型在多种编程语言上的性能表现进行了分析。
大多数模型在Bash编程任务中表现良好。然而,在C++、C和Ruby的表现上存在较大差异,这表明模型设计者可能在训练语料库中对这些语言进行了选择性采样。部分1B+的小型模型在D、R和Scala语言上的表现较差,其通过率低于10%,这表明它们的多语言处理能力都较弱。
由于SandboxFusion提供了来自编译器的反馈,研究人员评估了模型在部分编程语言上的编译通过率。实验结果表明,编译通过率与测试通过率之间存在正相关关系,但编译通过并不意味着测试一定通过。同时,研究还探讨了中英文表达对模型性能的影响。
解决难题,闭源模型普遍优于开源模型
不同模型在不同难度问题上的表现存在明显差异。总体而言,1B+模型和CodeLlama系列在所有难度级别上的表现均不尽如人意。其余模型在解决简单问题时表现相似,但在中等难度问题上存在一定差距。对于难度较大的问题,闭源模型普遍优于开源模型。
使用SandboxFusion,可提升模型表现
研究人员对比了“反思策略(Reflection)”和“N次推断策略(BoN)”两种策略。在Reflection策略中,通过利用SandboxFusion的反馈上下文对答案进行N次精炼,复现了自我精炼策略 [Madaan et al., 2024]。而在BoN策略中,仅进行N次推断以获得结果。
结果如图所示,“Reflection”策略明显优于“BoN”,这表明SandboxFusion提供的反馈上下文具有较高的有效性。
了解这篇研究的详情,可见文内Arxiv链接,或关注「豆包大模型团队」公众号,查阅更详细解读。