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