大语言模型中一个非常重要的内容就是关于代码的支持。通常,基于代码数据训练的模型不仅在代码补全方面有着更好地支持,也可能是大语言模型逻辑能力的部分来源。本文将总结目前业界专门针对代码补全(生成)方面而做的8个大模型。本文来自DataLeanre官方博客:当前业界最优秀的8个编程大模型简介:从最早的DeepMind的AlphaCode到最新的StarCoder全解析~ | 数据学习者官方网站(Datalearner)

需要注意的是,本文介绍的是编程大模型,并非代码补全插件,所以没有涉及AWS的CodeWhisper、Tabnine等。也欢迎大家补充~

  • DeepMind的AlphaCode
  • OpenAI的Codex/GitHub的Copilot
  • Saleforce的CodeT5
  • Saleforce的CodeGen/CodeGen2
  • MetaAI的InCoder
  • 清华大学的CodeGeeX
  • Replit的Replit Code
  • BigCode的StarCoder/StarCoderBase

DeepMind的AlphaCode

DeepMind在论文《AlphaCode: Neural Code Generation with Transformer Decoders》中首次介绍了AlphaCode。论文发表在2021年1月的AAAI-21会议上。

AlphaCode采用的模型和数据集目前未开源。但DeepMind提供了一个在线演示,可以输入代码注释并生成对应的Python代码:https://alphacode。deepmind。com

论文中,DeepMind说明了AlphaCode采用Transformer编码器-解码器模型,通过大量开源Python代码数据进行预训练。在编码器端,它将代码注释转换为向量表示。在解码器端,它会生成相应的Python代码。

尽管AlphaCode没有开源,但它作为第一个可以直接根据自然语言描述生成结构化代码的AI系统,在学术和产业界产生了很大反响。它展示了通过大规模无监督学习,机器学习模型可以达到编写基本代码的水平,这使得很多研究者optimistic地相信,AI最终将能达到助力程序员的目的,真正实现软件自动化生产。

OpenAI的Codex/GitHub的Copilot

OpenAI Codex是GPT-3继续训练得到的模型,OpenAI在2021年8月份公开了这个模型。它的训练数据包含自然语言和公开的源代码,包括公共GitHub存储库中的代码。OpenAI Codex最擅长的是Python,但它也熟练掌握JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript和Shell等十多种语言。它有14KB的Python代码内存,相比之下,GPT-3只有4KB的内存,因此在执行任何任务时可以考虑超过3倍的上下文信息。

而GitHub的Copilot则是GitHub与OpenAI合作推出的一个面向市场的代码补全模型,是基于Codex开发的一个代码编辑器插件,旨在帮助程序员编写代码。OpenAI Codex是一个编程模型,具有类似编程语言的能力,可以通过人类语言指令生成工作代码。简单来说,Codex是一个编程大模型,而Copilot则是基于这个编程模型开发的编辑器插件。

Saleforce的CodeT5

2021年9月,Saleforce公布了CodeT5模型。这个模型是基于800多万的函数和8中编程代码训练的大模型。其中最大的一个模型参数7.7亿(在2022年7月发布)。

目前,Saleforce公开了4个版本的CodeT5模型,均开源可获得。

  • CodeT5-small:0.6亿参数
  • CodeT5-base:2.2亿参数
  • CodeT5-large:7.7亿参数
  • CodeT5-large-ntp-py:7.7亿参数

Saleforce的CodeGen/CodeGen2

2022年5月,Saleforce再次发布了一个新的编程模型CodeGen。该模型是一系列模型,参数有4个版本:3.5亿、20亿、60亿和160亿。而训练的数据也有三个:

  1. nl版本:基于Pile数据训练
  2. multi版本:在nl基础上继续在多个编程语言组成的数据集上训练
  3. mono版本:继续在multi版本上基于Python代码数据训练

上述12个模型全部在HuggingFace上开源。

2023年5月3日,Saleforce开源第二代CodeGen:CodeGen2发布。该系列模型包含4个版本,分别是10亿参数、37亿参数、70亿参数和160亿参数四个版本。CodeGen2可以进行infilling,并且支持更多的编程语言。这里的infilling应该是在插入代码的含义。

CodeGen2也是全部开源,其中160亿参数版本开源文件大小66GB左右~

MetaAI的InCoder

InCoder是MetaAI在2022年4月发布的一个编程大模型。模型训练数据仅包含来自在线来源(如GitHub、GitLab和StackOverflow)的开放许可代码(Apache 2.0、MIT、BSD-2和BSD-3许可),其中重点是Python和JavaScript,但总共包括28种语言 - 总共约200GB的数据(经过去重、过滤和去污染处理)。

公开的模型预训练结果共2个版本,一个是67亿参数一个是13亿参数。

尽管InCoder的训练数据都是开放许可代码数据,但是MetaAI的InCoder模型确实开源的不可商用的!

清华大学的CodeGeeX

2022年9月,清华大学发布CodeGeeX。CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型。CodeGeeX采用华为MindSpore框架实现,在鹏城实验室“鹏城云脑II”中的192个节点(共1536个国产昇腾910 AI处理器)上训练而成。截至2022年6月22日,CodeGeeX历时两个月在20多种编程语言的代码语料库(>8500亿Token)上预训练得到。

CodeGeeX模型大小为130亿,包含了40个transformer层,每一个层是隐藏大小为5120的self-attention的blocks,前馈层数量20480。最长支持2048的序列。

CodeGeeX在各项评测中都有很好的表现,堪称国货之光!不过,这个模型的预训练结果可以个人申请使用,不允许商用!

Replit的Replit Code

Replit Code V1-3b是Replit发布的一个大模型,用以生成代码的工具。模型大27亿参数。支持20种编程语言,基于5250亿个tokens进行训练。训练了10天后比现有所有的开源模型效果都好(基于人工评估)。

2023年5月3日,Replit Code V1-3b正式发布,并在HuggingFace上开源。Replit-finetuned-v1-3b是Replit开发的一个编程大模型,与Replit-code-v1-3b一同宣布。官方确定Replit-code-v1-3b会是一个开源的模型,但是没有明确说Replit-finetuned-v1-3b是否开源。2023年5月3日官方开源的是前者。

BigCode的StarCoder/StarCoderBase

StarCoder是BigCode基于GitHub数据训练的一个代码补全大模型。可以实现一个方法或者补全一行代码。模型训练的数据来自Stack v1.2,这是一个收集自GitHub的包含很多代码的数据集。StarCoder的context长度是8192个tokens。

StarCodeBase与StarCode一样,都是来自BigCode的开源编程大模型。二者都是GPT-2的架构,唯一的区别是StarCodeBase是在80多种编程语言上训练的,基于1万亿tokens的数据集训练。而StarCode则是前面基础上,继续在350亿的python tokens上训练。

这两个模型的参数规模都是155亿。

举报/反馈

数据学习者

341获赞 1591粉丝
人工智能和一切促进人类生活美好的新技术
关注
0
0
收藏
分享