PolyCoder:号称超过Codex的开源AI代码生成器


代码生成型人工智能是:能够在提示下用不同的编程语言进行编写的人工智能系统
这种工具有望削减开发成本,同时让编码人员专注于创造性的、不那么重复的任务。
尽管OpenAI和DeepMind已经开发出了强大的代码生成人工智能,但它们并没有完全开放源代码。例如,为GitHub的Copilot功能提供动力的OpenAI的Codex的训练数据尚未公开,使研究人员无法对人工智能模型进行微调或研究它的可解释性等方面。

为了弥补这一缺陷,卡内基梅隆大学的研究人员开发了PolyCoder,这是一个基于OpenAI的GPT-2语言模型的模型,在一个包含249GB代码的数据库中训练,涵盖12种编程语言。虽然PolyCoder在每项任务中的表现都无法与顶级代码生成器相提并论,但研究人员声称,PolyCoder能够以比所有已知模型(包括Codex)更高的精度编写C语言。

当GitHub的Copilot在去年夏天问世时,很明显,这些非常大的代码语言模型对帮助开发者和提高他们的生产力非常有用。
但是没有接近这种规模的公开可用的模型,

越来越多的组织正在探索代码生成的人工智能:

  • 在2021年5月的Build开发者大会上,微软详细介绍了Power Apps的一项新功能,该功能利用OpenAI的GPT-3语言模型来协助人们选择公式。
  • 英特尔的ControlFlag可以自主地检测代码中的错误。
  • 而Facebook的TransCoder将代码从一种编程语言转换为另一种。
  • DeepMind最近公布了AlphaCode,该实验室声称它是首批可与人类程序员竞争的代码生成系统之一。

但是,这些大型科技公司没有公开发布他们的模型,这确实阻碍了科学研究和这种大型语言模型代码的民主化

在开发PolyCoder的过程中,研究人员还研究并比较了包括Codex(通过API)在内的不同代码生成AI系统的性能。有趣的是,他们发现大部分在英文文本上训练的模型,只在一点源代码上训练,结果在生成代码方面非常出色--也许是因为他们从249GB数据库中包含的开发者问答网站Stack Overflow等资源中得到了与代码相关的见解

建立强大的代码生成模型的一个有希望的方法似乎是对不同的编程知识来源进行训练,包括广泛的编程语言组合中的代码,以及来自网络上与代码相关的文本。

研究人员表示担心,像PolyCoder这样的模型可能会被促使生成错误的程序,包括具有难以检测的安全漏洞的程序。在未来,他们担心对手可以在代码生成模型中 "隐藏 "恶意行为,这些行为只有在得到正确的提示时才会出现,比如一个关键词(如公司或产品名称),或者上传可能被合法代码生成模型发现的脆弱代码。

他们建议将Codex大小的模型开源,作为对抗这种情况的一种方式,这可以使安全研究人员在这些模型中寻找故障模式。作为一个附带的好处,开源将允许开发人员通过一个被称为微调的过程对模型进行个性化处理或 "教 "他们新的编程语言,这比从头开始训练模型的成本要低。