模型:

Salesforce/codegen-2B-mono

英文

CodeGen (CodeGen-Mono 2B)

模型描述

CodeGen是一族用于程序综合的自回归语言模型,根据Erik Nijkamp、Bo Pang、Hiroaki Hayashi、Lifu Tu、Huan Wang、Yingbo Zhou、Silvio Savarese和Caiming Xiong的论文 A Conversational Paradigm for Program Synthesis 进行了发布。该模型最初在 this repository 中以3种预训练数据变体(NL、Multi、Mono)和4种模型规模变体(350M、2B、6B、16B)进行了发布。

此存储库中包含的检查点在论文中被标识为 CodeGen-Mono 2B,其中 "Mono" 表示该模型是使用 CodeGen-Multi 2B 进行初始化的,并在Python编程语言数据集上进行了进一步的预训练,而 "2B" 指的是可训练参数的数量。

训练数据

此检查点(CodeGen-Mono 2B)首先使用 CodeGen-Multi 2B 进行初始化,然后在BigPython数据集上进行了预训练。数据集包含了71.7B个Python编程语言的标记。有关详细信息,请参阅 paper 的第2.1节。

训练过程

CodeGen使用交叉熵损失进行训练,以最大化顺序输入的似然。这族模型使用了Google的多个 TPU-v4-512 进行训练,利用了数据并行和模型并行。有关详细信息,请参阅 paper 的第2.3节。

评估结果

我们在两个代码生成基准上评估了我们的模型:HumanEval和MTPB。有关详细信息,请参阅 paper

预期用途及限制

CodeGen作为一种自回归语言模型,能够从给定的自然语言和编程语言文本中提取特征,并计算它们的似然度。然而,该模型适用于程序综合,并且在该领域表现最佳,即在给定英文提示的情况下生成可执行代码,其中提示应该以注释字符串的形式给出。模型也可以完成部分生成的代码。

如何使用

使用 AutoModelForCausalLM 功能可以轻松加载此模型:

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-2B-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-mono")

text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids

generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

BibTeX条目和引用信息

@article{Nijkamp2022ACP,
  title={A Conversational Paradigm for Program Synthesis},
  author={Nijkamp, Erik and Pang, Bo and Hayashi, Hiroaki and Tu, Lifu and Wang, Huan and Zhou, Yingbo and Savarese, Silvio and Xiong, Caiming},
  journal={arXiv preprint},
  year={2022}
}