CodeGeeX: 多语言代码生成模型

您所在的位置:网站首页 matlab代码翻译程序 CodeGeeX: 多语言代码生成模型

CodeGeeX: 多语言代码生成模型

2023-03-27 23:08| 来源: 网络整理| 查看: 265

CodeGeeX: 多语言代码生成模型 2022年9月19日 | 语言:En

🏠 主页 | 💻 代码 | 🪧 DEMO | 🛠 VS Code插件 | 🤖 模型下载 | 📃 论文(即将推出!)

CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现,在鹏城实验室“鹏城云脑II”中的192个节点(共1536个国产昇腾910 AI处理器)上训练而成。截至2022年6月22日,CodeGeeX历时两个月在20多种编程语言的代码语料库(>8500亿Token)上预训练得到。CodeGeeX有以下特点:

高精度代码生成:支持生成Python、C++、Java、JavaScript和Go等多种主流编程语言的代码,在HumanEval-X代码生成任务上取得47%~60%求解率,较其他开源基线模型有更佳的平均性能。DEMO 跨语言代码翻译:支持代码片段在不同编程语言间进行自动翻译转换,翻译结果正确率高,在HumanEval-X代码翻译任务上超越了其它基线模型。DEMO 自动编程插件:CodeGeeX插件现已上架VSCode插件市场(完全免费),用户可以通过其强大的少样本生成能力,自定义代码生成风格和能力,更好辅助代码编写。插件下载 模型跨平台开源: 所有代码和模型权重开源开放,用作研究用途。CodeGeeX同时支持昇腾和英伟达平台,可在单张昇腾910或英伟达V100/A100上实现推理。申请模型权重

全新多编程语言评测基准HumanEval-X:HumanEval-X是第一个支持功能正确性评测的多语言、多任务的基准,包含820个人工编写的高质量代码生成题目、测试用例与参考答案,覆盖5种编程语言(Python、C++、Java、JavaScript、Go),支持代码生成与代码翻译能力的评测。如何使用

在HumanEval-X代码生成任务上,与其它开源基线模型相比,CodeGeeX取得了最佳的平均性能。

背景:预训练大模型代码生成

近年来,使用代码语料训练的大规模预训练模型取得飞速进步。Codex[1]通过使用Python求解初级编程问题,展示了预训练模型在该方面的潜力。此后,一系列代码生成模型亦得以面世,比如AlphaCode[2]、CodeGen[3]、InCoder[4]、PolyCoder[5]、PaLMCoder[6]等。这些模型都使用了多种编程语言进行训练,但是它们往往仅在Python上做正确性评测,在其它语言上的生成性能尚不明确。

现有的公开评测基准主要关注两种评价指标:字符串相似性(string similarity)或功能正确性(functional correctness)。第一种指标,如CodeXGLUE[7]和XLCoST[8]多语言基准,涵盖了代码补全、翻译、概括等任务。它们使用了BLEU[9]和CodeBLEU[10]这类判断相似性的指标,但这些指标并不能很好反映代码是否正确。相反地,第二种指标通过测试用例来判断代码功能上是否正确,如HumanEval[1:1]、MBPP[11]、APPS[12]等基准。然而,这些基准只支持Python,并不支持其他编程语言。缺乏评价代码正确性的多语言基准,阻碍了多语言代码生成模型的发展。

CodeGeeX: 多语言代码生成模型

架构:CodeGeeX是一个基于transformers的大规模预训练编程语言模型。它是一个从左到右生成的自回归解码器,将代码或自然语言标识符(token)作为输入,预测下一个标识符的概率分布。CodeGeeX含有40个transformer层,每层自注意力块的隐藏层维数为5120,前馈层维数为20480,总参数量为130亿。模型支持的最大序列长度为2048。

左侧:CodeGeeX训练数据中各编程语言占比。 右侧:CodeGeeX训练损失函数随训练步数下降曲线。

语料:CodeGeeX的训练语料由两部分组成。第一部分是开源代码数据集,The Pile [13]与CodeParrot。The Pile包含GitHub上拥有超过100颗星的一部分开源仓库,我们从中选取了23种编程语言的代码。第二部分是补充数据,直接从GitHub开源仓库中爬取Python、Java、C++代码;为了获取高质量数据,我们根据以下准则选取代码仓库:1)至少拥有1颗星;2)总大小



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3