代码生成综述

本文围绕代码生成大模型训练所需的模型、数据、任务设计展开。指出代码生成大模型是语言模型特例,训练语料包括预训练和指令数据等。介绍了多种预训练和指令数据集,以及预训练和指令任务的设计方式,还结合例子给出数据设计思路。

代码生成大模型属于LLM模型的一个子类,理论来讲也是属于语言模型的一种特例。代码本身其实也是一种特殊的语言表示,所以代码模型的实现应该是具备通用自然语言和代码两部分的能力。实际的代码模型也是有两条路径来实现,让训练好的NLP LLM模型经过code的训练,或者让code LLM模型经过NLP语料的训练来实现代码生成模型。其实应该还有一条路径,就是把code也当成是nlp语料,不区分code和nlp直接来训练。

对于训练的语料其实和NLP的LLM模型是一样的至少包括三种:pretrain语料、instruct监督训练语料、RLHF的比较训练语料。实际上用的比较多的是前面两种:pretrain语料和instruct语料。

对于模型驯练来说比较重要的就三样东西和一条链路。所谓三样东西无非:模型、数据、任务设计,一条链路就是经过多少轮的数据训练,数据训练的配比和加入顺序。下面我们会围绕三样东西来展开介绍,为什么不讲解一条链路并非有什么秘密。问题在于这个东西很难稳定成一套理论,有点类似传统文化里的“火候”、“易观”这种东西跟实际情况结合很紧密,很难去讲什么时候该如何,就算能讲出来往往也是当时决定完后马后炮的总结,在下一次不一定就完全可用。所以没有更好办法只有你自己多练,自己多感悟自然用多了就知道那么一回事了,往往可能就是一个直觉的决定可能就有效,但是前提是你得碰到问题够多想的够多。

模型

基础模型

模型

size

架构

pass@1

codeT5+

T5

code-davinci-2

GPT

59.86%

codegeex2

6B

GLM

starcode

15.5B

decode only

codegen16b

16B

decode only

29.28%

InCoder-6.7B

6.7B

Fairseq

15.6%

Palm- coder

540B

36%

Bloom

指令模型

模型

size

指令集

pass@1

OctoCoder

16B

CommitPack、CommitPackFT

35.5%

OctoGeeX

6B

CommitPack、CommitPackFT

30.9%

WizardCoder

16B

Evol-Instruct

57%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值