hengyuan
V1
2023/02/24阅读:29主题:嫩青
CodeGEN
Github: https://github.com/salesforce/CodeGen
1.Overview

-
主要的特点就是用自然语言的方式和模型互动,让他帮忙写代码,和 ChatGPT 比较类似,论文把它叫做 Conversational AI Programming: 通过多轮对话一步步生成用户所需的代码。 -
提出新的benchmark MTPB (multi-turn programming benchmark) 来验证 effectiveness. 数据集地址 -
Release 了模型的 ckpt -
封装了一个 customized training 的 library JAXFORMER
2.Dataset
2.1 Training

2.1.1 ThePile
-
ThePile 是一个大型的公开训练 LM 的数据集,里面除了包含自然语言之外,还包含了一部分 GITHUB 公开的代码 (95.16G 的数据),具体情况如下图,数据下载地址,里面 GITHUB 代码的下载地址

2.1.2 BigQuery
BIGQUERY 是一个含有多个编程语言的数据集,是 Google’s publicly available BigQuery dataset 中的一个 subset
-
BigQuery 的介绍博客 ,BigQuery 相当于是一个数据管理平台,可以用 SQL 在上面获取我们想要的数据,每个月有免费的使用 BigQuery 查询的额度,更多的查询额度的话就需要钱了,参考 -
BigQuery 快速入门参考博客
2.1.3 BigPython
-
2021 年 10 月之前的 Python 代码,这个是他们自己抓取的,也没有公开
2.2 Evaluation
2.2.1 MTPB
-
提出的 MTPB (multi-turn programming benchmark),就是有点像是一句话让模型生成下一句代码这样,就是一句生成一段代码,类似我们平常在代码上面注释一句话这样,他们是让 50 个专家构建的这个 benchmark 数据集 -
把每个问题都被拆分为多个 (Prompt, code) 的 parallel set
-

2.2.2 HumanEval
-
这个数据集和之前 CodeX 是一样的
3.Method
-
使用 (350M, 2.7B, 6.1B, 16.1B) 参数的 auto-regressive language model (GPT-like); -
采用多阶段的训练方式 (没有用预训练模型,直接 train from scratch) -
ThePile → CodeGen-NL (用 ThePile 数据先训练 得到 CodeGen-NL), NL 的意思是 Natural Language,因为 ThePile 大部分数据集还是 English text -
CodeGen-NL + BigQuery → CodeGen-Multi (用BigQuery 对 CodeGen-NL 继续 Fine-tuning 得到 CodeGen-Multi, 因为 BigQuery 包含多种编程语言) -
CodeGen-Multi + BigPython → CodeGen-Mono (用 BigPython 继续对 CodeGen-Multi 进行 Finetuning 得到 CodeGen-Mono, 因为BigPython 只包含 Python 语言)
-
4.Results
4.1 Single Turn - HumanEval

-
Single Turn 就是单轮的意思,用的测试集是 CodeX 论文里提出来的,这里就是把 docstring 作为对话内容了就是,可以发现 CODEGEN-MONO-16.1B 要比 CodeX 12B 要好,但其实可能是 Model Size 所决定的
4.2 Multi Turn

-
MultiTurn 上也是最终的 CODEGEN 效果最好
5.Released Models
-
模型下载地址 -
四种模型参数: 350M, 2B, 6B, 16B -
每个参数有3种 Option: nl, multi, mono.
作者介绍
hengyuan
V1