0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

会写代码的AI开源了

MobTech科技派 来源: MobTech科技派 作者: MobTech科技派 2022-08-16 15:46 次阅读

推荐语:

近期,代码的大型语言模型 (LM)在完成代码和从自然语言描述合成代码方面显示出巨大的潜力。然而,当前最先进的代码 LM(例如 Codex (Chen et al., 2021))尚未公开,留下了许多关于其模型和数据设计决策的问题。

我们的目标是通过对各种编程语言中最大的现有模型的系统评估来填补其中的一些空白:Codex、GPT-J、GPT-Neo、GPT-NeoX-20B 和 CodeParrot。尽管 Codex 本身不是开源的,但我们发现,针对自然语言建模,现有的开源模型确实在某些编程语言中取得了接近的结果。我们进一步确定了一个重要的缺失部分,即专门在多语言代码语料库上训练的大型开源模型。我们发布了一个新模型 PolyCoder,它具有基于 GPT-2 架构的 2.7B 参数,该模型在单台机器上使用 12 种编程语言的 249GB 代码进行了训练。在 C 编程语言中,PolyCoder 优于包括 Codex 在内的所有模型。我们训练有素的模型是开源的,可在此 https URL 上公开获得,这使得该领域的未来研究和应用成为可能。

—— MobTech袤博科技资深java开发工程师 零零发

比Codex还会写C语言AI代码生成模型,现在开源了!

这段时间,用AI写代码可以说是大火,其中最著名的要属OpenAI的Codex和DeepMind的AlphaCode。

poYBAGL7RrmANFqDAAGYgGrPajs517.png

基于Codex的Copilot

然而,这两个AI模型,全都没有开源:其中AlphaCode只给出了一些测试样例,而Codex只开放了API。

为此,来自CMU的几个研究人员,用GPT-2搞出了一个名叫PolyCoder的AI代码生成模型,而且还是开源的。

据研究人员表示,虽然PolyCoder最大只有27亿参数(相比Codex有120亿参数),但它用C语言写出来的代码,比Codex的效果还要好。

这里面究竟有什么秘诀?

用12种编程语言代码集训练

首先来看训练用的数据集,这也是PolyCoder的最大特点之一。

此前,包括Codex、CodeParrot等AI代码生成模型,主要都是基于Python语言的代码来训练。

例如Codex的评估数据集之一HumanEval,评估的也是生成Python代码的效果。

相比之下,PolyCoder采用了多种编程语言代码集来训练,一共有12种:

C、C#C++、Go、Java、JavaScript、PHP、Python、Ruby、Rust、Scala和TypeScript。

pYYBAGL7RuSALuOTAAFin1PaAKo095.png

其中,C语言的代码量是最多的,达到了221GB;而Python代码的数据量比Codex和CodeParrot用得都要少。

这里PolyCoder用的是GitHub上的公开代码,主要选取的是各种编程语言中比较受欢迎的库,每个库至少有50 Stars。据研究人员表示,每种编程语言库的Stars总数加起来不超过25k,以避免模型生成的代码效果太过于倾斜最流行的编程语言(通常编程语言越流行,库的Stars就越多)。

通过提取库中的文件、经过简单处理(包括消除重复代码)后,一共筛选出大约254GB的数据用于训练。

然后是预训练的方法。

语言模型的预训练方法通常有三种。第一种是自左向右的语言模型,根据上文预测下文,比较适用于代码生成

等;第二种是掩蔽语言模型,基于上下文预测屏蔽片段,比较适合代码分类等;第三种是编解码器模型,比较适用于

代码注释等任务。

poYBAGL7Rv-AUOMCAAGywieWiAs270.png

这里PolyCoder主要采用的是第一种预训练方法。

相比于同样采用GPT-2训练的CodeParrot和Codex,PolyCoder在超参数设置上也稍微有一些差异:

poYBAGL7R4mAdOc3AAFRJirzzcs105.png

PolyCoder一共提供了三种不同的模型,分别有27亿参数、4亿参数和1.6亿参数,研究人员可以根据自身需求和不同的训练能力来选取合适的模型。

poYBAGL7RyiAaxBOAAJKIH-cwVU536.png

那么,最终训练出来的AI模型,代码生成效果如何?

C语言写得尤其好,但Python不行

研究人员将PolyCoder与已有的AI代码生成模型进行了对比。由于AlphaCode不好比较

接口没开放)

,所以研究人员主要分析了下面这些模型,包括GPT-Neo、CodeParrot和Codex等。其中蓝色的是开源的,橙色的是没开源的:

pYYBAGL7R8aAZWyAAAGhXy50QSM108.png

从参数量来看,PolyCoder并不是最顶尖的,最大的27亿参数模型也只有Codex的四分之一不到。研究人员先是用语言模型评估常用的困惑度对一系列模型进行了比较。

困惑度(Perplexity),用于衡量语言模型(LM)的好坏。困惑度越低,语言模型面对代码感到困惑的程度就越低,模型生成效果越好。

从图中来看,PolyCoder在C语言中意外取得了最好的效果(困惑度最低)。

用大量C语言训练PolyCoder的结果说明,即使模型整体原理不变(基于GPT-2),单纯改变训练用的代码集,也能训练出擅长不同语言风格的AI代码生成模型。可惜的是,从其他语言来看,生成的效果就完全没办法和Codex相比了:

poYBAGL7SAGAJDuOAAJ5mLt188A999.png

例如,在主要用于评估Python代码的HumanEval上,PolyCoder的能力远不如Codex好:

poYBAGL7SAmAMim4AAIyihutpN4588.png

据论文分析,这可能是Python代码数据量、模型参数量不足等原因导致的。

此外,作者们也提到,做出PolyCoder的目的主要还是为了开源一个AI代码生成模型,让更多人参与研究和使用。

目前代码已经开源,无论是直接拿来用,还是试着在它的基础上开发新模型都可以。

感兴趣的小伙伴可以上手一试了~

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128341
  • 编程
    +关注

    关注

    88

    文章

    3439

    浏览量

    92373
  • 人工智能
    +关注

    关注

    1776

    文章

    43797

    浏览量

    230571
  • 开源
    +关注

    关注

    3

    文章

    2985

    浏览量

    41716
  • python
    +关注

    关注

    51

    文章

    4671

    浏览量

    83458
收藏 人收藏

    评论

    相关推荐

    有谁和我一样,工作中无论写什么代码全靠抄袭,不抄就不会写

    年纪越大越来越不想思考,写什么代码都是找个例子抄过来然后改改,普通的增删改都是抄,平时看书也都是看项目例子,大概扫一遍,不深究,工作中遇到差不多相同的项目就再找到那本书抄过来改改,书上没有遇到过就百度查找相同例子,找不到同样的例子就不
    发表于 06-12 10:54

    AI学习】第 1 篇--活用创新模板学 AI

    `AI 模板(Template)就像点菜单,让您自己可以思考自己的应用问题,在 Excel 上修改模板,把训练资料填进去。这些模版背后的 Python 程序代码也都是开源共享的,鼓励会写
    发表于 11-02 10:38

    AI概论:来来来,成为AI的良师益友》高焕堂老师带你学AI

    AI简介:AI 模板(Template)就像点菜单,让您自己可以思考自己的应用问题,在 Excel 上修改模板,把训练资料填进去。这些模版背后的 Python 程序代码也都是开源共享
    发表于 11-05 17:55

    开源代码中直接提供camera.hap包,谁有相应源代码?润和的能否提供下吗?

    开源代码中直接提供camera.hap包,谁有相应源代码?润和的能否提供下吗?
    发表于 11-18 09:23

    《来来来,成为AI的良师益友》高焕堂老师AI学习资料大集合

    AI简介:AI 模板(Template)就像点菜单,让您自己可以思考自己的应用问题,在 Excel 上修改模板,把训练资料填进去。这些模版背后的 Python 程序代码也都是开源共享
    发表于 11-26 11:57

    如何实现疯壳AI开源无人机遥控整机代码走读/编译与烧写?

    如何实现疯壳AI开源无人机遥控整机代码走读/编译与烧写?
    发表于 12-20 06:28

    疯壳AI开源无人机开机测试及硬件资源汇总,绝对实用

    疯壳AI开源无人机开机测试及硬件资源汇总,绝对实用
    发表于 12-20 06:37

    中国开源未来发展峰会“问道 AI 分论坛”即将开幕!

    过去几个月,AI 几乎已经成为全民热议的话题。各式开源大模型、训练框架层出不穷;AI 技术也加速应用在各个领域和行业,例如服务运营优化、解决供应链问题等等;数据库、云计算、大前端等多类技术领域产品
    发表于 05-09 09:49

    verilog代码规范

    verilog代码规范,学会写代码还不行,我们需要更加的规范。
    发表于 03-25 14:43 24次下载

    四轴开源代码IAR

    四轴飞行器开源代码IAR需要的自行下载吧。
    发表于 03-31 15:26 5次下载

    Python爬虫 你真的会写爬虫吗?

    你以为你真的会写爬虫了吗?快来看看真正的爬虫架构!
    的头像 发表于 05-02 17:02 3533次阅读
    Python爬虫 你真的<b class='flag-5'>会写</b>爬虫吗?

    AI概論:教師手冊(第1篇)活用创新模板学 AI

    AI 模板(Template)就像点菜单,让您自己可以思考自己的应用问题,在 Excel 上修改模板,把训练资料填进去。这些模版背后的 Python 程序代码也都是开源共享的,鼓励会写
    发表于 11-02 10:50 0次下载
    <b class='flag-5'>AI</b>概論:教師手冊(第1篇)活用创新模板学 <b class='flag-5'>AI</b>

    openharmony分支代码开源

    在之前,有一位博主爆料称鸿蒙 OpenHarmony 2.0在 5 月 16 日的时候开源,差不多有460万行基础代码。 随后不久,华为OpenHarmony 的几个仓库提交了第一批的 L2 分支
    的头像 发表于 06-23 10:06 1236次阅读

    大流行派对代码开源分享

    电子发烧友网站提供《大流行派对代码开源分享.zip》资料免费下载
    发表于 12-19 10:46 0次下载
    大流行派对<b class='flag-5'>代码</b><b class='flag-5'>开源</b>分享

    AI大模型的开源算法介绍

    AI大模型的开源算法介绍 什么是开源?简单来说就是不收取任何费用,免费提供给用户的软件或应用程序。开源是主要用于软件的术语,除了免费用户还可以对开源
    的头像 发表于 08-08 17:25 1372次阅读