模型:
Salesforce/codegen-6B-nl
CodeGen是一系列自回归语言模型,用于根据论文“ A Conversational Paradigm for Program Synthesis ”进行程序合成。这些模型最初发布在 “ this repository ” 下,有3个预训练数据变体(NL、Multi、Mono)和4个模型大小变体(350M、2B、6B、16B)。
本存储库中包含的检查点在论文中被标记为CodeGen-NL 6B,其中“NL”表示在Pile上预训练,“6B”表示可训练参数的数量。
此检查点(CodeGen-NL 6B)是在由“ EleutherAI ”创建的大规模策划数据集“ the Pile ”上进行预训练的。数据集的部分包含代码数据。
CodeGen使用交叉熵损失进行训练,以最大化序列输入的概率。这组模型使用Google的多个TPU-v4-512进行训练,利用了数据和模型的并行性。更多细节请参见“ paper ”的第2.3节。
我们在两个代码生成基准(HumanEval和MTPB)上评估了我们的模型。更多详情请参见“ paper ”。
作为自回归语言模型,CodeGen能够从给定的自然语言和编程语言文本中提取特征,并计算它们的概率。然而,该模型用于程序合成,即根据英文提示生成可执行代码,其中提示应该以注释字符串的形式提供。该模型也可以完成部分生成的代码。
可以使用AutoModelForCausalLM功能轻松加载此模型:
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-6B-nl") model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-6B-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))
@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} }