five

DynaCode

收藏
arXiv2025-03-13 更新2025-03-18 收录
下载链接:
http://arxiv.org/abs/2503.10452v1
下载链接
链接失效反馈
官方服务:
资源简介:
DynaCode是由电子科技大学和德雷塞尔大学联合创建的一个动态、复杂度感知的代码生成基准。该数据集包含189万个独特的嵌套代码问题,跨越四个不同的代码复杂度级别和16种调用图结构。它旨在评估大型语言模型在代码生成任务中的性能,特别是模型处理不同复杂度代码问题的能力。

DynaCode is a dynamic, complexity-aware code generation benchmark co-created by the University of Electronic Science and Technology of China and Drexel University. This dataset contains 1.89 million unique nested code problems, spanning four distinct code complexity levels and 16 types of call graph structures. It aims to evaluate the performance of large language models in code generation tasks, particularly their ability to handle code problems with varying complexities.
提供机构:
电子科技大学,德雷塞尔大学
创建时间:
2025-03-13
搜集汇总
数据集介绍
main_image_url
构建方式
DynaCode数据集的构建基于动态评估策略,通过结合代码复杂度和调用图结构,生成嵌套的代码问题。首先,数据集从现有的代码问题中收集单元函数,并使用静态代码分析工具Radon计算其圈复杂度,将问题分类为不同的复杂度单元。接着,通过调用图结构将单元函数组合成嵌套问题,生成多样化的代码生成任务。最后,通过自动生成测试用例并执行代码,筛选出有效的嵌套代码和问题,确保数据集的多样性和复杂性。
特点
DynaCode数据集的特点在于其动态性和复杂度感知能力。它通过生成189百万个独特的嵌套代码问题,覆盖了四个不同的代码复杂度单元和16种调用图结构,提供了多样化的评估场景。数据集不仅考虑了代码的静态复杂度,还通过调用图结构捕捉了函数间的依赖关系,从而能够更全面地评估大语言模型在复杂代码生成任务中的表现。此外,DynaCode通过动态生成问题,有效避免了数据污染问题,确保了评估的公平性和可靠性。
使用方法
DynaCode数据集的使用方法主要包括代码生成任务的评估和模型性能的分析。用户可以通过调用图结构生成嵌套代码问题,并使用Pass@1指标评估大语言模型在不同复杂度任务中的表现。数据集提供了详细的错误分类和性能分析工具,帮助用户深入理解模型在复杂代码生成中的局限性。此外,DynaCode支持动态生成问题,用户可以根据需求调整问题的数量和复杂度,进一步验证模型的泛化能力和鲁棒性。
背景与挑战
背景概述
DynaCode是由电子科技大学和德雷塞尔大学的研究团队于2025年提出的一个动态代码生成基准测试数据集,旨在解决现有静态代码生成基准测试的局限性。随着大语言模型(LLMs)在代码生成任务中的快速发展,现有的基准测试如HumanEval和MBPP等因其静态特性,容易导致模型在训练过程中记忆特定测试用例,从而影响评估结果的可靠性。DynaCode通过引入动态、复杂度感知的评估框架,结合代码复杂度和调用图结构,生成了多达1.89亿个独特的嵌套代码问题,涵盖四个复杂度级别和16种调用图结构。该数据集不仅能够有效区分不同LLMs的性能,还为大语言模型在复杂代码生成任务中的表现提供了更全面的评估。
当前挑战
DynaCode面临的挑战主要体现在两个方面。首先,在领域问题方面,现有代码生成基准测试的静态特性容易导致数据污染,即模型在训练过程中记忆特定测试用例,而非泛化到新问题。DynaCode通过动态生成代码问题,有效缓解了这一问题,但如何确保生成的代码问题具有足够的多样性和复杂性仍是一个挑战。其次,在构建过程中,DynaCode需要处理代码复杂度和调用图结构的双重复杂性。代码复杂度涉及控制流、嵌套结构等,而调用图结构则要求模型能够处理多分支、多层次的函数调用关系。如何准确分类代码复杂度并构建多样化的调用图结构,是DynaCode在构建过程中面临的主要技术挑战。
常用场景
经典使用场景
DynaCode数据集最经典的使用场景是评估大型语言模型(LLMs)在代码生成任务中的表现,尤其是在处理复杂嵌套代码和多函数调用结构时的能力。通过动态生成代码问题,DynaCode能够模拟真实世界中的编程任务,避免了传统静态数据集中的记忆化问题,从而更准确地衡量模型的泛化能力。
实际应用
在实际应用中,DynaCode可以用于评估和选择适合特定编程任务的LLMs。例如,在软件开发中,开发人员可以利用DynaCode来测试不同模型在处理复杂代码生成任务时的表现,从而选择最适合的模型进行代码自动生成或辅助编程。此外,DynaCode还可用于教育领域,帮助编程学习者通过生成不同复杂度的代码问题来提升编程能力。
衍生相关工作
DynaCode的提出激发了大量相关研究,特别是在动态评估和复杂性度量领域。例如,DyVal和NPHardEval等研究借鉴了DynaCode的动态生成策略,进一步扩展了其在数学和逻辑推理任务中的应用。此外,DynaCode的复杂性度量方法也被其他基准测试如EvalPlus和BigCodeBench所采用,推动了代码生成评估领域的进一步发展。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作