输入一个注释,tab,几十行代码就出来了。这就是我们开发的大型多语言代码生成模型CodeGeeX。一、原理模型CodeGeeX是一个基于transformers的大规模预训练编程语言模型。它是一个从左到右生成的自回归解码器,它将代码或自然语言标识符(标记)作为输入,并预测下一个标记的概率分布。CodeGeeX包含40个transformer层,每个self-attention块的隐藏层维度为5120,前馈层维度为20480,参数总数为130亿。该模型支持的最大序列长度为2048,足以覆盖大部分使用场景。语料库CodeGeeX的训练语料库由两部分组成。第一部分是开源代码数据集ThePile和CodeParrot。ThePile包含GitHub上超过100星的开源存储库的子集,我们从中选择了23种编程语言的代码。第二部分是补充资料,直接从GitHub开源仓库爬取Python、Java、C++代码。为了让模型区分不同的语言,我们在每个样本的开头添加前缀,形式为[comment]language:[language],例如:#language:Python。我们对数据进行了重复数据删除和清理。整个代码语料库包含23种编程语言和总共1587亿个标识符(不包括填充符)。CodeGeeX平台由清华大学知识工程实验室研发,其中鹏城实验室提供算力支持,智浦AI和华为MindSpore提供技术支持。具体来说,CodeGeeX采用华为MindSpore框架实现,使用鹏城实验室“鹏城云脑II”平台中的192节点升腾910AI处理器,耗时两个月编写20多种编程语言的语料库。训练有素。此外,我们也将模型适配到其他平台,目前支持升腾和英伟达两个平台。2.功能如上所述,CodeGeeX使用从左到右生成的自回归解码,因此CodeGeeX可以完成很多生成类的编程问题,如“根据注释生成代码”、“根据代码生成解释”、“根据生成代码”代码补全上下文”、“不同语言之间的代码翻译”等,您可以根据自己的需要输入相应的提示,从而生成有趣的内容。我们在这里简要描述两类功能:代码生成和代码翻译。代码生成代码生成包括生成类的能力,例如“根据注释生成代码”和“根据上下文完成代码”。目前,CodeGeeX可以支持Python、C++、Java、JavaScript、Go等多种主流编程语言的代码生成。它在HumanEval-X代码生成任务(我们将在另一篇文章介绍)上实现了47%~60%的解决率,与其他开源基线模型相比具有更好的平均性能。这是CodeGeeX在HumanEval-X中每个问题的5种语言的回答率。我们按照Python的答题率进行排序:我们观察了每道题的具体答题情况,发现不同语言的题目是不一样的。回答率差别很大,有些问题更适合用特定语言回答。跨语言代码翻译有时,我们期望将一种语言实现的代码转换成另一种语言的代码。理解和重新输入是非常费力的。CodeGeeX可以实现一键翻译,像自然语言翻译一样流畅:我们评估了模型在多语言代码翻译上的性能:上图显示了4个模型在5种语言之间的翻译性能。4个型号分别是:InCoder-6.7BCodeGen-Multi-16BCodeGeeX-13BCodeGeeX-13B-FT(微调的CodeGeeX);5种语言分别是:PythonC++JavaJavaScriptGo上表显示模型对特定语言有偏好,例如CodeGeeX擅长将其他语言翻译成Python和C++,而CodeGen-Multi-16B擅长在翻译成JavaScript和Go时。这可能是由于训练集中语料的比例不同。在这20个翻译对中,我们还观察到两种语言之间的翻译性能往往呈负相关,这可能表明现有模型不足以很好地学习所有语言。三、插件1、VSCode插件基于CodeGeeX的强大功能,我们开发了VSCode插件,在VSCode插件市场搜索“codegeex”即可找到。该插件可以完全免费下载和使用。VSCode版本的CodeGeeX插件未来也将全面开源。大家可以在此基础上进一步优化。2.JetBrains插件我们还发布了JetBrainIDE插件,支持IntelliJIDEA、PyCharm、GoLand、CLion等,目前该插件已正式登陆JetbrainIDE插件市场。使用前需要确保你的IDE版本为2021.1以上,安装扩展并全局启用。CodeGeeXforJetbrainsIDEs支持两种使用模式:自动模式和交互模式。3.其他IDE平台的插件其他IDE平台的插件也在开发中,即将推出。同时,我们也欢迎感兴趣的同学加入我们,共同发展,共同推进AI辅助编程生态的建设。*目前CodeGeeX,我们有以下几种开放形式:1)代码和模型,完全开源开放:https://models.aminer.cn/code...2)在线演示demo:代码生成:https://models.aminer.cn/code...代码翻译:https://models.aminer.cn/code...3)提供VScode插件:https://marketplace.visualstu...其他平台插件,有兴趣的可以一起开发4)提供API接口:https://tianqi.aminer.cn/open...5)论文将于近期发表。*
