出品
开源中国
文
白开水
卡内基梅隆大学的研究人员推出了一个开源的自动代码生成器模型PolyCoder,具有27B参数,基于GPT-2架构,在一台机器上对跨越12种编程语言的GB代码进行了训练。训练结果表明,在C编程语言中,PolyCoder优于包括Codex在内的所有模型。
“最近,代码的大型语言模型(LM)在完成代码和从自然语言描述中合成代码方面显示出巨大的前景。然而,目前最先进的代码LM(如Codex)并没有公开提供,留下许多关于他们的模型和数据设计决策的疑问。我们的目标是通过对各种编程语言中最大的现有模型的系统评估来填补其中的一些空白:Codex、GPT-J、GPT-Neo、GPT-NeoX20B和CodeParrot。尽管Codex本身不是开源的,但我们发现现有的开源模型在一些编程语言中确实取得了接近的结果,虽然主要针对的是自然语言建模。我们进一步确定了一个重要的缺失部分,即专门在多语言的代码语料库中训练的大型开源模型。”
研究人员指出,OpenAI的Codex于去年8月发布,可通过微软拥有的GitHub的Copilot工具获得;但它通过黑盒API调用提供对模型输出的“non-freeaccess”,模型的权重和训练数据并不可用。DeepMind声称其最近发布的AlphaCode代码生成器在人类参与的编程比赛中排名前54.3%,但是训练这个模型需却要在谷歌的数据中心进行"hundredsofpetaFLOPSdays"的训练。
“尽管大型语言代码模型取得了巨大成功,但最强的模型都尚未公开。这阻止了这些模型在资源充足的公司之外的应用,并限制了资源匮乏的组织在这一领域的研究。”
为了解决这一问题,他们推出了PolyCoder。该模型使用来自GitHub的多个存储库的数据进行训练,涵盖12种流行的编程语言:C、C#、C++、Go、Java、JavaScript、PHP、Python、Ruby、Rust、Scala和TypeScript。未经过滤的数据集总共有GB的数据和万个文件。此外,为了训练PolyCoder,研究人员选择了GPT-2(因为预算有限)。
不过虽然PolyCoder在C语言方面的表现优于所有模型,但Codex在其他语言方面仍然要胜过PolyCoder。
“值得注意的是,PolyCoder在C语言方面优于Codex和所有其他模型。在比较单独的开源模型时,PolyCoder在C、JavaScript、Rust、Scala和TypeScript方面的表现比类似规模的GPT-Neo2.7B更好。在除C语言以外的其他11种语言中,所有其他开源模型,包括我们的,都明显比Codex差(higherperplexity)。”