3 个月前

CodeT:基于生成测试的代码生成

CodeT:基于生成测试的代码生成

摘要

针对给定编程问题生成代码解决方案的任务,可借助Codex等预训练语言模型实现,这些模型能够生成多个多样化的代码样本。然而,该任务面临的一个主要挑战是如何从模型生成的多个候选解中筛选出最合适的解决方案。评估代码解决方案的质量与正确性的自然方式是将其在一组测试用例上运行,但手动构建这些测试用例通常成本高昂且耗时。本文提出一种新方法——CodeT,该方法利用相同的预训练语言模型自动为生成的代码样本构造测试用例,从而显著降低人工投入,并提升测试场景的覆盖范围。随后,CodeT使用生成的测试用例执行代码样本,并采用双层执行一致性验证机制,综合考量代码输出与生成测试用例的一致性,以及不同代码样本之间输出的一致性。我们在四个基准数据集(HumanEval、MBPP、APPS 和 CodeContests)上,基于五种不同规模与能力的预训练语言模型进行了全面实验。实验结果表明,与以往方法相比,CodeT在代码解决方案选择任务上实现了显著性能提升,在不同模型与基准上均展现出卓越且一致的增益。例如,在HumanEval数据集上,CodeT将pass@1指标提升至65.8%,相较于code-davinci-002模型实现了18.8%的绝对提升,并超越此前最先进方法超过20%的绝对性能增益。

代码仓库

microsoft/codet
官方
pytorch
GitHub 中提及

基准测试

基准方法指标
code-generation-on-appscode-davinci-002 175B
Introductory Pass@1: 31.92
code-generation-on-appscode-davinci-002 175B (CodeT)
Competition Pass@1: 6.2%
Interview Pass@1: 14.3%
Introductory Pass@1: 47.3%
code-generation-on-mbppcode-cushman-001 12B (CodeT)
Accuracy: 55.4
code-generation-on-mbppcode-davinci-002 175B + CodeT
Accuracy: 67.7
code-generation-on-mbppCodeGen-Mono 16B + CodeT
Accuracy: 49.5
code-generation-on-mbppcode-davinci-001 175B + CodeT
Accuracy: 61.9
code-generation-on-mbppInCoder 6.7B + CodeT
Accuracy: 34.4

用 AI 构建 AI

从想法到上线——通过免费 AI 协同编程、开箱即用的环境和市场最优价格的 GPU 加速您的 AI 开发

AI 协同编程
即用型 GPU
最优价格
立即开始

Hyper Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供
CodeT:基于生成测试的代码生成 | 论文 | HyperAI超神经