机器之心报道
编辑:杜伟
CMU 对现有开源和未开源的 AI 代码生成模型进行了全面深入的系统性评估 , 并分析了它们在 C、C++、Python 等 12 中不同编程语言中的代码自动完成表现 。最近 , 语言模型(Language Model, LM)在建模编程语言源代码方面展现出了令人印象深刻的性能 。 这些模型擅长代码自动生成以及从自然语言描述中生成代码等下游任务 。 当前 SOTA 大规模语言代码模型(如 Austin et al. (2021))在基于 AI 的编程辅助领域已经取得了重大进展 。 此外 , OpenAI 推出的 Codex 已经部署在了现实世界生产工具 GitHub Copilot 中 , 用作一个基于用户上下文自动生成代码的 in-IDE 开发者助手 。
尽管大规模语言代码模型取得了巨大成功 , 但最强大的模型并不是公开可用的 。 这阻止了这些模型在资源充足公司之外的应用 , 并限制了资源匮乏机构在该领域的研究 。 以 Codex 为例 , 它通过黑盒 API 调用提供了该模型输出的收费访问 , 但模型的权重和训练数据不可用 。 这阻止了研究人员微调模型 , 无法适应代码完成之外的领域和任务 。 无法访问模型的内部也阻止了研究社区研究它们的其他关键方面 , 例如可解释性、用于实现更高效部署的模型蒸馏以及融合检索等额外组件 。
同时 , GPTNeo、GPT-J 和 GPT-NeoX 等中等和大规模预训练语言模型是公开可用的 。 尽管这些模型是在包括新闻文章在内的多样化文本、在线论坛以及少量 GitHub 软件存储库的混合资源上训练的 , 但它们可以用于生成具有合理性能的源代码 。 此外 , 还有一些仅在源代码上进行训练的全新开源语言模型 , 比如 CodeParrot 是在 180GB 的 Python 代码上训练的 。
遗憾的是 , 这些模型的大小和训练方案的多样性以及彼此之间都缺乏比较 , 许多建模和训练设计决策的影响仍不清楚 。
在近日一篇论文中 , 来自 CMU 计算机科学学院的几位研究者对跨不同编程语言的现有代码模型——Codex、GPT-J、GPT-Neo、GPT-NeoX 和 CodeParrot 进行了系统评估 。 他们希望通过比较这些模型来进一步了解代码建模设计决策的前景 , 并指出关键的缺失一环 , 即迄今为止 , 没有大规模开源语言模型专门针对多编程语言的代码进行训练 。 研究者推出了三个此类模型 , 参数量从 160M 到 2.7B , 并命名为「PolyCoder」 。
文章图片
- 论文地址:https://arxiv.org/pdf/2202.13169.pdf
- 项目地址:https://github.com/VHellendoorn/Code-LMs
结果表明 , 尽管 Codex 声称最擅长 Python 语言 , 但在其他编程语言中也表现出奇得好 , 甚至优于在 Pile(专为训练语言模型设计的 825G 数据集)上训练的 GPT-J 和 GPT-NeoX 。 不过 , 在 C 语言中 , PolyCoder 模型取得的困惑度低于包括 Codex 在内的所有其他模型 。
下图 1 展示了现有语言代码模型及它们的大小和可用性 , 除 Codex 和 Austin'21 之外全部开源 。
文章图片
【CMU创建一个开源的AI代码生成模型,C语言表现优于Codex】
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
