CMU开源AI代码生成模型,掌握12种编程语言,作者:C语言写得比Codex还要好

萧箫 发自 凹非寺
量子位 | 公众号 QbitAI

比Codex还会写C语言的AI代码生成模型,现在开源了!

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

CMU开源AI代码生成模型,掌握12种编程语言,作者:C语言写得比Codex还要好插图
△基于Codex的Copilot

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

其中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。

CMU开源AI代码生成模型,掌握12种编程语言,作者:C语言写得比Codex还要好插图1

其中,C语言的代码量是最多的,达到了221GB;而Python代码的数据量比Codex和CodeParrot用得都要少。

这里PolyCoder用的是GitHub上的公开代码,主要选取的是各种编程语言中比较受欢迎的库,每个库至少有50 Stars。

据研究人员表示,每种编程语言库的Stars总数加起来不超过25k,以避免模型生成的代码效果太过于倾斜最流行的编程语言(通常编程语言越流行,库的Stars就越多)。

通过提取库中的文件、经过简单处理(包括消除重复代码)后,一共筛选出大约254GB的数据用于训练。

然后是预训练的方法。

语言模型的预训练方法通常有三种。

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

原文链接:https://zhuanlan.zhihu.com/p/477939993

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享