NLP重铸篇之LLM系列(Codex)
The following article is from NLP杂货铺 Author 错乱空时
论文标题:Evaluating Large Language Models Trained on Code
论文链接:https://arxiv.org/pdf/2107.03374.pdf
论文数据地址:https://www.github.com/openai/human-eval
GPT系列主要会分享生成式模型,包括gpt1、gpt2、gpt3、codex、InstructGPT、Anthropic LLM、ChatGPT等论文或学术报告。本文主要分享codex的论文。
重铸系列会分享论文的解析与复现,主要是一些经典论文以及前沿论文,但知识还是原汁原味的好,支持大家多看原论文。分享内容主要来自于原论文,会有些整理与删减,以及个人理解与应用等等,其中涉及到的算法复现都会开源在:https://github.com/wellinxu/nlp_store ,更多内容关注知乎专栏(或微信公众号):NLP杂货铺。
介绍
评测
metric
评测数据集
Codex
数据
模型
效果
Codex-S
数据
模型
效果
Codex-D
局限
论文之外
介绍
之前的一些研究表明,GPT3可以根据代码注释生成简单的python代码程序,这很振奋人心,因为GPT3并没有专门训练过代码生成。
本论文就想研究下是否可以用大型语言模型生成代码,所以在github的代码数据上对GPT3进行了微调,得到了Codex模型。
评测
metric
功能性评估:如果生成的代码通过了单元测试,则认为该代码是正确的。
pass@k:每个任务生成n(>=k)个版本代码,计算能够通过单元测试的版本数量c,然后根据下面公式估计pass@k结果,论文中n=200。
论文给了该公式的化简计算方式,感兴趣的同学可以看原论文。
评测数据集
HumanEval:Hand-Written Evaluation Set
人工构建了164个程序问题,每个问题包含一个函数签名,一段注释,方法主体和一些单元测试,平均每个任务有7.7个单元测试。
Codex
数据
搜集了2020年5月份github上公开的5400万仓库代码,其中小于1MB的python文件,一共包含179GB。过滤掉了可能自动生成的、平均行长度大于100的、最大行数大于1000的或包含少量字母数字字符的文件。过滤后最终的数据有159GB。
模型
原以为以GPT3为基础进行微调效果会更好,实际上并没有发现提高,可能是因为代码数据量太大了。不过,基于GPT3训练,模型的整体收敛速度更快,所以本论文还是在GPT3的基础上再进行训练。tokenizer跟GPT3一样的,仅仅将一些不同长度的空格作为新增token。
参数量:1200万-120亿
学习率:大小同GPT3,前175步线性提高,然后cosine衰减
训练步数:共训练1000亿 token
优化器:
权重衰减系数:0.1
效果
论文又一次验证了power-law,如下图所示,测试loss跟模型大小依然符合幂律。
Codex在测试数据上效果如下图,下表显示了不同模型在测试集上的表现。
Codex-S
数据
为了让Codex模型适应任务数据(HumanEval)的分布,论文专门构建了一部分训练数据,用来进行有监督的微调,论文将这个模型称之为Codex-S。
论文使用Codex-12B的模型,对构建的训练集任务都生成了100个结果,如果某个任务的生成结果中,没有一个通过单元测试,则删除该训练任务。
模型
loss:负对数似然,提示语不计算loss
学习率:Codex的1/10大小,变化方式跟Codex一样
训练步数:训练至验证集loss平稳(小于100亿个token数)
效果
Codex-D
Codex-D是根据代码生成注释文档的模型,将之前数据中的代码和注释对调过来重新训练。
局限
训练Codex需要太多样本,训练不高效。 Codex会使用一些语法不对的、或者未定义的代码或者变量等。 注释越长,模型生成的代码质量越低。
论文之外
真是一切皆可GPT。代码生成、bug查找、api查找等功能是chatgpt大火的原因之一,不知道chatgpt使用了什么魔法,让codex进化至此。在革自己的命的道路上加速前进。
进技术交流群请添加AINLP小助手微信(id: ainlp2)
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏