输出正文,tab 一下,几十行代码就进去了。
这便是咱们研发的大规模多语言代码生成模型 CodeGeeX。
一、原理
模型
CodeGeeX 是一个基于 transformers 的大规模预训练编程语言模型。它是一个从左到右生成的自回归解码器,将代码或自然语言标识符(token)作为输出,预测下一个标识符的概率分布。
CodeGeeX 含有 40 个 transformer 层,每层自注意力块的暗藏层维数为 5120,前馈层维数为 20480,总参数量为 130 亿。
模型反对的最大序列长度为 2048,足以涵盖大部分应用场景。
语料
CodeGeeX 的训练语料由两局部组成。
第一局部是开源代码数据集,The Pile 与 CodeParrot。The Pile 蕴含 GitHub 上领有超过 100 颗星的一部分开源仓库,咱们从中选取了 23 种编程语言的代码。
第二局部是补充数据,间接从 GitHub 开源仓库中爬取 Python、Java、C++ 代码。
为了让模型辨别不同语言,咱们在每个样本的结尾加上一个前缀,其模式为[正文符] language: [语言],例如:# language: Python。咱们对数据进行了去重和荡涤,整个代码语料含有 23 种编程语言、总计 1587 亿个标识符(不含填充符)。
平台
CodeGeeX 是由清华大学常识工程实验室研发,其中鹏城实验室提供了算力反对,智谱 AI、华为 MindSpore 提供了技术支持。
具体而言,CodeGeeX 采纳了华为 MindSpore 框架来实现,应用了鹏城实验室“鹏城云脑 II”平台中 192 节点昇腾 910 AI 处理器,在 20 多种编程语言的代码语料库历时两个月训练而成。
此外,咱们还将模型适配到了其余平台上,目前能同时反对昇腾和英伟达平台。
二、性能
如前所述,CodeGeeX 采纳的是从左到右生成的自回归解码,因而 CodeGeeX 可能实现许多生成类的编程问题,例如「依据正文生成代码」、「依据代码生成解释」、「依据上下文做代码补全」、「不同语言之间的代码翻译」等等,你齐全能够依据本人的需要,输出相应的提醒,从而生成有意思的内容。
咱们这里简要介绍两类性能:代码生成和代码翻译。
代码生成
代码生成,蕴含了「依据正文生成代码」、「依据上下文做代码补全」等生成类的能力。
目前,CodeGeeX 可能反对生成 Python、C++、Java、JavaScript 和 Go 等多种支流编程语言的代码。在 HumanEval- X 代码生成工作(咱们会在另外一篇文章中介绍)上获得 47%~60% 求解率,较其余开源基线模型有更佳的均匀性能。
这是在 HumanEval- X 中,CodeGeeX 在 5 种语言下对各问题的解答率,咱们按 Python 下的解答率做了排序:
咱们察看了每道题目的具体解答状况,发现题目在不同语言上的解答率有着较大区别,某些题目更适宜用特定语言进行解答。
跨语言代码翻译
有时候,咱们会冀望把一种语言实现的代码,转换成另一种语言的代码,了解和重敲,很消耗精力。
CodeGeeX 能够实现一键式翻译,和自然语言的翻译一样丝滑:
咱们评测了模型在多语言间代码翻译上的性能:
上图显示了 4 种模型在 5 种语言之间的翻译性能。
4 种模型别离为:
InCoder-6.7B
CodeGen-Multi-16B
CodeGeeX-13B
CodeGeeX-13B-FT(即通过微调的 CodeGeeX);
5 种语言别离为:
Python
C++
Java
JavaScript
Go
上表显示出,模型对特定语言存在偏好,比方 CodeGeeX 善于将其余语言翻译为 Python 与 C ++,而 CodeGen-Multi-16B 善于翻译为 JavaScript 和 Go,这可能是因为训练集中的语料占比存在差别。
在 20 个翻译对中,咱们还察看到两种语言相互翻译的体现经常是呈负相关的,这可能阐明现有的模型还不足以学好所有的语言。
三、插件
1、VS Code 插件
基于 CodeGeeX 的弱小性能,咱们开发了 VS Code 插件,在 VS Code 插件市场搜寻「codegeex」即可找到,该插件能够完全免费下载应用。
VS Code 版本的 CodeGeeX 插件,咱们后续同样将齐全开源进去。任何人都能够在此基础上,做出更进一步的优化。
2、JetBrains 插件
咱们目前也公布了 JetBrain IDE 的插件,反对 IntelliJ IDEA、PyCharm、GoLand、CLion 等。目前插件曾经在 Jetbrain IDEs 的插件市场正式上线。应用前,须要确保你的 IDE 版本为 2021.1 或更高版本,装置扩大并全局启用。
CodeGeeX for Jetbrains IDEs 反对两种应用模式:主动模式和交互模式。
3、其余 IDE 平台插件
其余 IDE 平台的插件也正在开发当中,很快便能够上线。同时,咱们也欢送感兴趣的同学退出咱们,一起开发,独特促成 AI 辅助编程的生态。
* 目前 CodeGeeX,咱们有以下几个凋谢模式:
1)代码、模型,齐全开源凋谢:https://models.aminer.cn/code…
2)在线演示 demo:
代码生成:https://models.aminer.cn/code…
代码翻译:https://models.aminer.cn/code…
3)提供 VS code 插件:
https://marketplace.visualstu…
其余平台插件,如果感兴趣,咱们能够一起单干来开发
4)提供 API 接口:
https://tianqi.aminer.cn/open…
5)论文将于近期公布。*