原创 泽宇、晨旭、文恺 Datawhale
Datawhale分享
作者:王泽宇、杨晨旭、赵文恺
随着大模型性能的不断提高,越来越多的开发者开始使用大模型代码工具辅助开发,各家厂商也都推出了自己的代码大模型,但是其代码能力究竟如何备受关注。
市面现有的评测数据集大多局限于某个领域或者某类任务,并不能体现大模型广泛的、通用的代码能力,导致大家对于代码工具的选取举棋不定。
今天,字节豆包大模型团队与M-A-P社区联合推出了开源的代码大模型基准测试数据集 FullStack Bench 以及配套工具 Sandbox Fusion,覆盖全栈编程领域,数据集和工具已在 HuggingFace 和 Github 开源。
FullStack Bench 这一全新的代码基准测试,旨在全面、科学地评估代码大模型在各种真实开发场景中的表现,让开发者们不再迷茫。
论文链接:https://arxiv.org/pdf/2412.00...
我们第一时间邀请开源项目贡献者对 FullStack Bench 和 SandboxFusion 进行了详细测评,一手食用指南出炉:
代码评测基准FullStack Bench
论文表示,FullStack Bench 是一个多语言的基准测试数据集,专注于编程开发任务设计。
数据集构建
FullStack Bench 数据集的构建并不仅仅是简单的代码片段集合,而是通过深度的人工注释与多模型投票机制,确保问题的多样性和挑战性。它包含多达 3374 个问题(中英文问题各一半),涉及 16 种编程语言,以更贴近真实开发场景的方式挑战代码生成模型的极限,对模型在多种领域中的适应性和实际应用能力进行全面检测(包括数据分析、机器学习、web开发等)。
研究团队分析了全球最大的程序员技术问答社区 Stack Overflow 上的问题分布,从中提炼出常见的真实编程应用领域。如图所示,团队从 Stack Overflow 上随机抽取了 50 万个问题,并使用大模型为每个问题标注其所属的应用领域类型。
研究团队筛选出占总问题数前 88.1% 的主要应用领域,其余领域统一归类为“其他”。基于此,团队完成了问题领域类型的标注,再通过对分布做适当调整来保证每个领域的鲁棒性,最终形成了 FullStack Bench 关注的超过 11 种应用场景及分布比例。
在成功构建完 FullStack Bench 之后,研究人员对其进行了统计分析,结果如图所示。
研究人员运用 LLaMA3 分词器分别对题目以及正确代码的标记长度进行了计算,其中题目平均长度为 210.2 个 tokens。为确保评估的准确性,数据集包含总计 15168 个单元测试,平均每个问题配备 4.5 个单元测试用例。
项目特点总结
1. 广泛的应用领域:FullStack Bench 涵盖了主流的应用开发领域,包括但不限于服务端开发、网页开发等。模型需要处理从 HTML 布局到完整应用逻辑实现的全栈任务。
2. 多样性与复杂性:3K 的测试样本不仅数量庞大,而且复杂多样,从简单的函数实现到综合的项目案例,无所不包。这是现有基准无法企及的深度与广度。
3. 多语言支持:项目内置对 16 种编程语言的支持,使得研究人员可以更深入地分析模型在跨语言场景中的表现,例如 Python、JavaScript、C++ 等。
4. 双语言评测:每道测试题目均提供中英文版本,并配备清晰的参考解决方案。这种设计不仅保证了多语言模型的公平性,还提升了评估的多样性和灵活性。
5. 真实场景模拟:在设计问题时,我们参考了 StackOverflow 的问题分布,力求贴近开发者的日常工作需求,模拟真实的开发环境和挑战。
配套工具:SandboxFusion
由于 FullStack Bench 的数据格式和依赖关系不同,因此实现自动执行评估具有一定挑战性,于是 FullStack Bench 还配备了一个高效的代码沙盒执行工具 SandboxFusion。它通过统一的 HTTP API 提供了对不同编程任务的标准化评估。这意味着你可以快速启动一个容器化的测试环境来运行各种模型配置,无缝执行测试,获取运行结果。
近期出现的沙盒环境很多(如DifySandbox、MultiPLE、MPLSandbox)。但是,这些沙箱存在重大限制(例如不支持深度学习包),而 SandboxFusion 覆盖 23 种编程语言,支持前端开发、后端服务和机器学习等复杂场景。
SandboxFusion 只需单台设备即可运行,支持 docker 一键部署,除了 FullStack Bench,它还支持 10 多种其他代码评估数据集,可以实现一站式评估。
SandboxFusion 食用指南
贡献者:DW 鲸英助教@王泽宇、杨晨旭、赵文恺
完整教程链接 ⬇️
https://datawhaler.feishu.cn/...
使用 Docker 一键运行:
docker run -d --rm -p 8080:8080 volcengine/sandbox-fusion:server-20241204
Sandbox Fusion 主要提供两个功能:运行代码和判断题目对错
运行代码
在shell中执行下面的指令来请求 sandbox 执行一段 python 代码:
curl 'http://localhost:8080/run_code' \
通过样例输出,可以看到接口返回的内容包含执行是否成功、运行时间、标准输出、报错信息等,Sandbox Fusion 提供了一个相对安全、高效、功能强大的代码评测功能。
{
也可以通过提供的 playground 在线体验:
https://bytedance.github.io/S...
数据集
Datasets模块实现了各类不同 Code 数据集的判断逻辑,已经实现的开源数据集有:mbpp、human\_eval 等。
Sandbox 模块和 Datasets 模块相结合,就构成了我们模型评估的流程~
首先通过 HTTP API 获取到指定数据集每道题目的 prompt:
curl 'http://localhost:8080/get_prompts' \
[
下一步是调用LLM进行代码的生成。打开GPT,使用数据集中提供的prompt进行对话生成代码:
将生成的全部文本直接放到 POST 请求体中,进行代码评测。
可以看到,提交的 completion 包含了 LLM 的全部输出,而不需要手动从中提取出代码段部分,Sandbox Fusion 从中提取出了相应的代码段(extracted\_code),并结合数据集中的特点对代码段进行了扩充(full\_code),最后与数据集中的结果进行了匹配,得出测试结果。
Sandbox Fusion 还提供了 OJ 在线体验的 playground:
https://bytedance.github.io/S...
Coder大模型比较
代码大模型已经发布一些时日了,想必大家都已经多多少少听说或者使用过各家的代码大模型了,Qwen2.5-Coder、DeepSeek-Coder、GPT-o1、GPT-4o、CodeLlama、Claude 3.5 Sonnet 等模型各具特色,Qwen2.5的Coder也是本人经常在用的,体验效果比较好。
今年6月,字节发布了 AI 编程助手豆包 MarsCode,跟随 Datawhale 实践,在VsCode中下载插件体验了一番,效果很不错,推荐给身边朋友一起用了。这次Fullstack Bench论文测评的代码大模型中,出现了此前字节未披露过的 Doubao-Coder,听说就是 豆包MarsCode 的基座模型。
尽管还是 preview 版,Doubao-Coder 在 FullStack Bench 上综合指标取得了不错的分数,仅次于 OpenAI 和 Claude,值得期待一波~
现阶段各家大模型的得分表现:
写在最后
在使用 FullStack Bench 和 Sandbox Fusion 时,最大的感受是它们可以和 Coder 模型的训练与评测深度结合。
FullStack Bench 作为一个多语言、多场景的代码能力测试数据集,涵盖了从基础算法到全栈开发的丰富问题,贴近真实开发场景的设计具有很强的应用价值。
Sandbox Fusion 则提供了强大的代码运行和评估能力,基于 Docker 的一键部署和易用的 HTTP API 接口,让测试流程变得简单、高效。
FullStack Bench 数据集开源地址和食用指南地址贴在下面了,可以上手去试试。
开源地址:
https://huggingface.co/datase...
食用指南:
https://datawhaler.feishu.cn/...
一起“点赞”三连↓
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。