需要注意的是,本文介绍的是编程大模型,并非代码补全插件,所以没有涉及AWS的CodeWhisper、Tabnine等。也欢迎大家补充~
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是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则是基于这个编程模型开发的编辑器插件。
2021年9月,Saleforce公布了CodeT5模型。这个模型是基于800多万的函数和8中编程代码训练的大模型。其中最大的一个模型参数7.7亿(在2022年7月发布)。
目前,Saleforce公开了4个版本的CodeT5模型,均开源可获得。
2022年5月,Saleforce再次发布了一个新的编程模型CodeGen。该模型是一系列模型,参数有4个版本:3.5亿、20亿、60亿和160亿。而训练的数据也有三个:
上述12个模型全部在HuggingFace上开源。
2023年5月3日,Saleforce开源第二代CodeGen:CodeGen2发布。该系列模型包含4个版本,分别是10亿参数、37亿参数、70亿参数和160亿参数四个版本。CodeGen2可以进行infilling,并且支持更多的编程语言。这里的infilling应该是在插入代码的含义。
CodeGen2也是全部开源,其中160亿参数版本开源文件大小66GB左右~
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模型确实开源的不可商用的!
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 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日官方开源的是前者。
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亿。