萧源于寺
qubit |微信官方账号QbitAI
我用C语言写AI代码生成模型能比Codex写得更好。现在是开源!
这段时间用AI写代码可以说是大火了,其中最著名的就是OpenAI的Codex和DeepMind的AlphaCode。
△基于Codex的副驾驶
然而,这两个AI模型都不是开源的:
AlphaCode只给出一些测试样本,Codex只开放API。
因此,来自CMU的几位研究人员用GPT-2开发了一个名为PolyCoder的AI代码生成模型,并且它是开源的。
据研究人员介绍,虽然PolyCoder的最大参数数量只有27亿(相比于Codex的120亿个参数),但是用C语言编写的代码比Codex的要好。
这里有什么秘密?
用12种编程语言代码集训练首先我们来看一下用于训练的数据集,这是PolyCoder最大的特点之一。
之前的AI代码生成模型,包括Codex,CodeParrot等等,主要是基于Python语言代码进行训练。
例如,Codex的评估数据集之一HumanEval也评估生成Python代码的效果。
相比之下,PolyCoder经过了各种编程语言的代码集的训练,总共有12种:
C,C#,C++,Go,Java,JavaScript,PHP,Python,Ruby,Rust,Scala和TypeScript。
其中C语言的代码量最大,达到221GB;Python代码使用的数据比Codex和CodeParrot少。
这里的PolyCoder使用的是GitHub上的公共代码,主要选取各种编程语言中的热门库,每个库至少有50颗星。
根据研究人员的说法,每个编程语言库中的恒星总数加起来不超过25k,以避免模型产生的代码效果过于偏向最流行的编程语言(通常情况下,越流行的编程语言,库中的恒星就越多)。
从库中提取文件,经过简单处理(包括消除重复代码),共筛选出约254GB的数据用于训练。
那么预训练就是方法。
通常有三种方法来预先训练语言模型。
第一种是从左到右的语言模型,根据上面和下面的预测,更适合代码生成等等。二是屏蔽语言模型,基于上下文预测屏蔽片段,适用于代码分类等。三是编解码器模型,比较适合代码注释等任务。
这里PolyCoder主要采用第一种预训练的方法。
与同样由GPT-2训练的CodeParrot和Codex相比,PolyCoder在超参数设置上也有一些不同:
PolyCoder提供了三种不同的模型,分别拥有27亿个参数、4亿个参数和1.6亿个参数。研究者可以根据自己的需求和不同的训练能力选择合适的模型。
那么,最终训练出来的AI模型的代码生成效果如何呢?
C语言写得尤其好,但Python不行研究人员将PolyCoder与现有的AI代码生成模型进行了比较。
由于AlphaCode不容易比较(接口不开放),研究人员主要分析了以下模型,包括GPT-尼奥、CodeParrot和Codex。
蓝色的是开源的,橙色的不是开源的:
从参数数量来看,PolyCoder并不顶尖,最大的27亿参数模型还不到Codex的四分之一。
起初,研究人员将一系列模型与常用的语言模型的混淆度进行比较。
困惑被用来衡量语言模型(LM)的质量。混淆程度越低,语言模型面对代码的混淆程度越低,模型生成效果越好。
从图中可以看出,PolyCoder出乎意料地取得了C语言中最好的成绩(混淆度最低)。
用大量C语言训练PolyCoder的结果表明,即使模型整体原理不变(基于GPT-2),简单改变训练代码集,也能训练出不同语言风格的AI代码生成模型。
遗憾的是,从其他语言的角度来看,生成的效果根本无法与Codex相比:
例如,在主要用于评估Python代码的HumanEval上,PolyCoder的能力远不如Codex:
论文分析,这可能是Python代码数据和模型参数不足造成的。
此外,作者还提到,制作PolyCoder的主要目的是开放一个AI代码生成模型,让更多人参与研究和使用。
目前代码都是开源的,无论是直接使用还是试图在此基础上开发新的模型。
感兴趣的朋友可以试试~
作者介绍
本名徐,目前在读博,研究方向为自然语言处理、信息抽取等。他发表了许多峰会论文,包括ICLR,ACL和EMNLP等。本硕毕业于上海交通大学,师从朱其立教授。
Uri Alon在CMU担任博士后研究员,主要研究编程语言处理(PLP)、NLP和深度学习。
Hamneubig,CMU大学助理教授,研究方向为自然语言处理、机器翻译和基于机器学习的自然语言理解。
CMU计算机助理教授Vincent J. Hellendoorn,主要研究方向为软件工程和机器学习,致力于利用智能方法帮助软件开发人员减少代码调试和程序优化等繁琐的工作时间。
不知道作者们是不是已经在用这个AI代码了(手动狗头)
地址:
https://github.com/vhellendorn/code-LMS
地址:
https://arxiv.org/ABS/2202.13169
结束-
量子QBITAI头条号签约
关注我们,第一时间了解前沿科技动态。