会写代码的AI已正式开源并可自动生成代码
卡内基梅隆大学研发的开源AI代码生成模型PolyCoder基于GPT-2架构,最大27亿参数。在C语言代码生成上困惑度低于闭源模型Codex,但Python表现较弱。提供三种参数版本,训练数据覆盖12种编程语言,全部开源。
PolyCoder:专注C语言的开源AI代码生成模型
近年来,大型语言模型(LM)在代码补全以及根据自然语言描述生成代码方面表现出色。然而,主流的高性能代码LM(如Codex)大多没有开源,这给研究带来了诸多不确定性。为填补这一空白,卡内基梅隆大学(CMU)的研究团队推出了PolyCoder——一个基于GPT-2架构、完全开源的AI代码生成工具。尽管PolyCoder的最大参数量仅为27亿(Codex为120亿),但在C语言代码生成任务中,其表现甚至超越了Codex。本文将详细介绍PolyCoder的设计理念、训练过程、性能表现以及实际使用方法。
1. 背景:为什么需要PolyCoder?
目前,业界知名的代码生成模型如Codex(OpenAI)和AlphaCode(DeepMind)虽然效果出众,但均未向公众开源:
- AlphaCode仅公布了少量测试样例。
- Codex只开放了API接口,模型本身并不公开。
这使得科研人员难以深入分析其模型设计与数据选择策略,也限制了社区的二次开发与创新。PolyCoder正是为了解决这一困境而生的开源替代方案。
2. 模型特点:多语言训练 + 完全开源
PolyCoder的核心特点包括:
- 多语言支持:使用12种编程语言的代码进行训练,并非仅局限于Python。
- 开源发布:模型权重、训练代码以及数据集处理工具全部公开,支持自由研究与应用。
- C语言优势:在C语言上的困惑度(Perplexity)低于所有对比模型,包括Codex。
小提示:如果您主要处理C语言项目,PolyCoder是目前开源选项中最值得尝试的模型之一。
3. 训练数据集:多语言精选代码库
与Codex、CodeParrot等模型主要依赖Python代码不同,PolyCoder的训练数据覆盖了12种编程语言:
- C、C#、C++
- Go、Java、JavaScript
- PHP、Python、Ruby
- Rust、Scala、TypeScript
数据来源与筛选:
- 所有代码均来自GitHub上的公开仓库,每个仓库至少获得50个Stars。
- 为避免模型偏向流行语言,每种语言的Stars总数不超过25k。
- 经过文件提取、去重等简单处理后,最终得到约254GB的有效训练数据。
其中,C语言代码量最大(221GB),而Python代码量相对较少,这也是PolyCoder在C语言上表现优异、但在Python上不如Codex的重要原因。
4. 预训练方法:自左向右语言模型
语言模型的预训练方法主要有三种:
- 自左向右语言模型:根据上文预测下文,适用于代码生成等任务。
- 掩蔽语言模型:基于上下文预测被屏蔽的片段,适用于代码分类等。
- 编解码器模型:适用于代码注释等任务。
PolyCoder采用第一种自左向右的预训练方式(基于GPT-2)。与同样使用GPT-2的CodeParrot和Codex相比,PolyCoder在超参数设置上略有调整,具体差异如下表所示:
小提示:如果您计划在PolyCoder基础上继续预训练,建议参考其原论文中的超参数设置。
5. 模型规模:三种尺寸可选
PolyCoder提供了三种不同参数量的模型,以适应不同的算力与使用场景:
- 1.6亿参数(small)
- 4亿参数(medium)
- 27亿参数(large)
研究人员可根据自身需求选择合适的版本。其中,27亿参数的版本在C语言上表现最佳。
6. 性能评估:C语言惊艳,Python仍需改进
研究人员将PolyCoder与现有开源及闭源模型进行了对比,对比模型包括:
- 开源模型(蓝色):GPT-Neo、GPT-J、CodeParrot、GPT-NeoX-20B等。
- 闭源模型(橙色):Codex。
困惑度(Perplexity)对比:
- 在C语言上,PolyCoder的困惑度最低,优于包括Codex在内的所有模型。
- 在其他语言上,PolyCoder的效果不如Codex,尤其在Python上差距明显。
HumanEval基准测试(Python):
- PolyCoder的表现远逊于Codex,论文分析主要原因在于Python训练数据量不足以及模型参数规模较小。
小提示:如果您的主要语言是Python,建议优先使用Codex或基于它微调的模型;若您主要使用C语言,PolyCoder是不二之选。
7. 常见问题(FAQ)
Q1: PolyCoder是否支持中文注释?
A: 训练数据主要来自GitHub上的英文代码库,但代码注释可以是任意语言。不过模型对英文注释的理解更好,建议在生成中保持英文注释。
Q2: 如何在自己的项目中使用PolyCoder?
A: 模型已开源在Hugging Face等平台,您可以直接加载预训练权重,使用Transformers库进行推理或微调。具体代码示例请查看官方GitHub仓库。
Q3: 我能用PolyCoder做代码补全吗?
A: 可以。PolyCoder作为自左向右语言模型,天然适合代码补全任务。只需提供上文(部分代码),模型即可生成后续代码。
Q4: PolyCoder的C语言表现好,是否意味着所有C语言项目都适用?
A: 是的,但不建议用于超大型项目或需要严格安全性的代码生成。模型生成的代码仍需要人工审查和测试。
8. 总结与开源信息
PolyCoder的核心目标是为社区提供一个开源、可复现的代码生成模型,让更多人能够参与研究和应用。尽管在Python上不如Codex,但其在C语言上的出色表现证明了训练数据构成对模型能力的巨大影响。
目前,PolyCoder的代码、模型权重以及数据处理工具已全部开源,您可以从以下地址获取:
- 官方GitHub仓库(请参考论文中的链接)
无论您是直接使用,还是在其基础上进行二次开发,PolyCoder都是一个值得尝试的开源选择。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:会写代码的AI已正式开源并可自动生成代码要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点Dzine是一款强调构图控制与风格管理的AI图像设计工具,提供样式库、图层操作、定位和素描工具,支持文生图与图生图,具备生成填充编辑、一键修复增强及最高6144像素超高清导出功能,降低设计门槛,兼顾新手与专业用户。
3D虚拟空间的搭建,过去往往依赖专业建模软件和大量手动操作,技术门槛相当高。但现在,一款名为Arrival的云端SaaS解决方案正凭借AI与拖放功能,将这件事变得像搭积木一样轻松便捷。 什么是Arrival? Arrival本质上是一套专业的软件工具,核心目标就是帮助用户快速构建一个3D虚拟空间。它
ZENAI通过AI自动完成用户访谈,省去人工招募与主持流程,并自动总结用户场景、痛点及人物画像。产品经理、设计师、研究员可借此快速验证假设、提炼场景、获取市场洞察,加速产品市场契合度(PMF)达成,提供基础与专业两种套餐。
MeshcapadeMe基于SMPL人体模型技术,提供API接口支持图像、视频、测量及3D扫描输入,自动生成统一格式的逼真数字分身,无需专业建模技能即可将各类素材转化为可动画、跨平台使用的数字人类,适用于虚拟现实、游戏与影视等领域。
- 日榜
- 周榜
- 月榜
热点快看
