模型:

Salesforce/codegen-350M-multi

英文

CodeGen(CodeGen-Multi 350M)

模型描述

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-Multi 350M,其中"Multi"表示模型以CodeGen-NL 350M为初始状态,然后在多种编程语言的数据集上进行进一步预训练,而"350M"则指的是可训练参数的数量。

训练数据

这个检查点(CodeGen-Multi 350M)首先由CodeGen-NL 350M进行初始化,然后在《 BigQuery 》上进行了进一步的预训练。该数据集是从GitHub代码库中提取的多种编程语言的大规模数据集,包含1192亿个标记,包括C、C++、Go、Java、JavaScript和Python。

训练过程

CodeGen使用交叉熵损失进行训练,以最大化顺序输入的可能性。该模型系列使用Google的多个TPU-v4-512进行训练,利用数据和模型并行性。详细信息请参见《 paper 》的第2.3节。

评估结果

我们在两个代码生成基准测试HumanEval和MTPB上评估我们的模型。更多细节请参见《 paper 》。

预期使用和限制

作为一个自回归语言模型,CodeGen能够从给定的自然语言和编程语言文本中提取特征,并计算它们的可能性。然而,该模型的预期用途是程序综合,即根据英文提示生成可执行代码,其中提示应以注释字符串的形式提供。该模型也可以完成部分生成的代码。

如何使用

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

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-multi")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-multi")

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