模型:

Salesforce/codegen-2B-nl

英文

CodeGen (CodeGen-NL 2B)

模型描述

CodeGen是一系列自回归语言模型,用于程序综合,该模型详细描述可以在论文: A Conversational Paradigm for Program Synthesis 作者Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang, Yingbo Zhou, Silvio Savarese, Caiming Xiong中找到。这些模型最初在 this repository 中发布,包含3种预训练数据变体(NL,Multi,Mono)和4种模型规模变体(350M,2B,6B,16B)。

这个存储库中包含的检查点在论文中被标记为CodeGen-NL 2B,其中"NL"表示它在Pile上进行了预训练,"2B"是指可训练参数的数量。

训练数据

该检查点(CodeGen-NL 2B)是在 the Pile 上进行的预训练,这是由 EleutherAI 创建的一个大规模策划数据集。数据集的部分包括代码数据。

训练过程

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-nl")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-nl")

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}
}