中文

CodeGen:一个用于代码生成的多轮程序合成开放大语言模型

机器学习 2023-03-01 v5 计算与语言 编程语言

摘要

程序合成致力于生成计算机程序作为给定问题规约(由输入输出样例或自然语言描述表达)的解。大语言模型的盛行推进了程序合成的最先进水平,但有限的训练资源和数据阻碍了此类模型的开放获取。为使其民主化,我们在自然语言与编程语言数据上训练并发布了一系列参数量达16.1B的大语言模型,称为CODEGEN,并开源了训练库JAXFORMER。我们通过展示其在HumanEval的零样本Python代码生成上与先前最先进水平具有竞争力,说明了训练模型的实用性。我们进一步研究了程序合成的多步范式,其中单个程序被分解为指定子问题的多个提示。为此,我们构建了一个开放基准Multi-Turn Programming Benchmark(MTPB),由115个多样的、被分解为多轮提示的问题集组成。我们在MTPB上的分析表明,以多轮方式向CODEGEN提供相同意图相比单轮方式显著改善了程序合成。我们将训练库JAXFORMER和模型检查点作为开源贡献提供:https://github.com/salesforce/CodeGen。

关键词

引用

@article{arxiv.2203.13474,
  title  = {CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis},
  author = {Erik Nijkamp and Bo Pang and Hiroaki Hayashi and Lifu Tu and Huan Wang and Yingbo Zhou and Silvio Savarese and Caiming Xiong},
  journal= {arXiv preprint arXiv:2203.13474},
  year   = {2023}
}