当前位置:首页 > 技术分析 > 正文内容

字节开源全栈AI编程基准,不小心曝光豆包代码大模型

ruisui884个月前 (03-02)技术分析20

允中 发自 凹非寺

量子位 | 公众号 QbitAI

豆包代码大模型,不小心给曝光了!

在字节开源的代码大模型评估基准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链接,或关注「豆包大模型团队」公众号,查阅更详细解读。

参考链接:
[1]论文链接:https://arxiv.org/pdf/2412.00535v2
[2]数据集开源地址:https://huggingface.co/datasets/ByteDance/FullStackBench
[3]沙盒开源地址:https://github.com/bytedance/SandboxFusion
[4]沙盒体验入口:https://bytedance.github.io/SandboxFusion/playground/datasets

— 完 —

量子位 QbitAI · 头条号签

关注我们,第一时间获知前沿科技动态约

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2415.html

分享给朋友:

“字节开源全栈AI编程基准,不小心曝光豆包代码大模型” 的相关文章

内存问题探微

这篇文章是我在公司 TechDay 上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在 TechDay 上做的分享,四年前第一届 TechDay 不知天高地厚,上去讲了一个《MySQL 最佳实践》,现在想起来那...

一文让你彻底搞懂 vue-Router

路由是网络工程里面的专业术语,就是通过互联把信息从源地址传输到目的地址的活动。本质上就是一种对应关系。分为前端路由和后端路由。后端路由:URL 的请求地址与服务器上的资源对应,根据不同的请求地址返回不同的资源。前端路由:在单页面应用中,根据用户触发的事件,改变URL在不刷新页面的前提下,改变显示内容...

Vue中的路由配置常用属性

router:路由页面跳转的核心库;引入路由:import VueRouter from 'vue-router'; 注册路由:const router = new VueRouter({ })mode:模式路由有hash history两种模式:hash模式URL中包含#,#后边是...

原生微信小程序打包成安卓/IOS应用!#小程序开发

原生微信小程序打包成公。好消息,微信小程序可以直接打包成APP了你们知道吗?微信团队近日开发了一个多端开发平台。多端据文档描述,多端开发框架是支持使用小程序原生语法开发移动端应用的框架。开发者可以一次编码分别编译为小程序安卓以及iOS应用,实现多端开发。我们进入多端框架开发的文档,来看看怎么使用微信...

跨域strict-origin-when-cross-origin vue前端解决

今天在对接一个hls协议的视频直播流的时候,提示跨域问题,导致一直播放不了,一直在提示 strict-origin-when-cross-origin 跨域问题。首先上代码 import "video.js/dist/video-js.css" import videojs f...

什么是 Java 注解?

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者| 慕课网精英讲师 ColorfulC通过本篇文章你将了解什么是注解,注解的作用,Java 中内置注解有哪些以及注解的分类,如何自定义注解,如何处理注解等内容。1. 什么是注解Java 注解(Annotation)又称为 J...