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