比Codex还会写C措辞的AI代码天生模型,现在开源了!

这段韶光,用AI写代码可以说是大火,个中最著名的要属OpenAI的Codex和DeepMind的AlphaCode。

△基于Codex的Copilot

然而,这两个AI模型,全都没有开源:

会写代码的AI开源C措辞比Codex写得好掌握12种编程措辞丨CMU

个中AlphaCode只给出了一些测试样例,而Codex只开放了API。

为此,来自CMU的几个研究职员,用GPT-2搞出了一个名叫PolyCoder的AI代码天生模型,而且还是开源的。

据研究职员表示,虽然PolyCoder最大只有27亿参数(比较Codex有120亿参数),但它用C措辞写出来的代码,比Codex的效果还要好。

这里面究竟有什么窍门?

用12种编程措辞代码集演习

首先来看演习用的数据集,这也是PolyCoder的最大特点之一。

此前,包括Codex、CodeParrot等AI代码天生模型,紧张都是基于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 Stars。

据研究职员表示,每种编程措辞库的Stars总数加起来不超过25k,以避免模型天生的代码效果太过于倾斜最盛行的编程措辞(常日编程措辞越盛行,库的Stars就越多)。

通过提取库中的文件、经由大略处理(包括肃清重复代码)后,一共筛选出大约254GB的数据用于演习。

然后是预演习的方法。

措辞模型的预演习方法常日有三种。

第一种是自左向右的措辞模型,根据上文预测下文,比较适用于代码天生等;第二种是掩蔽措辞模型,基于高下文预测屏蔽片段,比较适宜代码分类等;第三种是编解码器模型,比较适用于代码注释等任务。

这里PolyCoder紧张采取的是第一种预演习方法。

比较于同样采取GPT-2演习的CodeParrot和Codex,PolyCoder在超参数设置上也轻微有一些差异:

PolyCoder一共供应了三种不同的模型,分别有27亿参数、4亿参数和1.6亿参数,研究职员可以根据自身需求和不同的演习能力来选取得当的模型。

那么,终极演习出来的AI模型,代码天生效果如何?

C措辞写得尤其好,但Python弗成

研究职员将PolyCoder与已有的AI代码天生模型进行了比拟。

由于AlphaCode不好比较(接口没开放),以是研究职员紧张剖析了下面这些模型,包括GPT-Neo、CodeParrot和Codex等。

个中蓝色的是开源的,橙色的是没开源的:

从参数量来看,PolyCoder并不是最顶尖的,最大的27亿参数模型也只有Codex的四分之一不到。

研究职员先是用措辞模型评估常用的困惑度对一系列模型进行了比较。

困惑度(Perplexity),用于衡量措辞模型(LM)的好坏。
困惑度越低,措辞模型面对代码感到困惑的程度就越低,模型天生效果越好。

从图中来看,PolyCoder在C措辞中意外取得了最好的效果(困惑度最低)。

用大量C措辞演习PolyCoder的结果解释,纵然模型整体事理不变(基于GPT-2),纯挚改变演习用的代码集,也能演习出善于不同措辞风格的AI代码天生模型。

可惜的是,从其他措辞来看,天生的效果就完备没办法和Codex比较了:

例如,在紧张用于评估Python代码的HumanEval上,PolyCoder的能力远不如Codex好:

据论文剖析,这可能是Python代码数据量、模型参数量不敷等缘故原由导致的。

此外,作者们也提到,做出PolyCoder的目的紧张还是为了开源一个AI代码天生模型,让更多人参与研究和利用。

目前代码已经开源,无论是直接拿来用,还是试着在它的根本上开拓新模型都可以。

感兴趣的小伙伴可以上手一试了~

作者先容

一作许方正(Frank Xu),目前在CMU读博,研究方向是NLP、信息抽取等,揭橥过多篇顶会论文,包括ICLR、ACL和EMNLP等。
本硕毕业于上海交通大学,师从朱其立教授。

Uri Alon,在CMU进行博士后事情,研究方向是编程措辞处理(PLP)、NLP和深度学习。

Graham Neubig,CMU助理教授,研究方向是NLP、机器翻译和基于机器学习的自然措辞理解。

Vincent J. Hellendoorn,CMU打算机助理教授,紧张研究方向是软件工程和机器学习,致力于利用智能方法帮助软件开拓职员减少代码调试、程序优化等繁琐事情的韶光。

不知道作者们是否已经在用这个AI撸代码了(手动狗头)

项目地址:https://github.com/VHellendoorn/Code-LMs

论文地址:https://arxiv.org/abs/2202.13169

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一韶光获知前沿科技动态