模型:
Salesforce/codegen-6B-mono
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-Mono 6B,其中“Mono”表示模型初始化为CodeGen-Multi 6B,并在Python编程语言数据集上进行了进一步的预训练。“6B”指的是可训练参数的数量。
该检查点(CodeGen-Mono 6B)最初使用CodeGen-Multi 6B进行初始化,然后在BigPython数据集上进行了预训练。数据包含了71.7B个Python编程语言的标记。有关详细信息,请参阅 paper 的第2.1节。
CodeGen使用交叉熵损失进行训练,以最大化顺序输入的似然性。这个模型族使用多个TPU-v4-512进行训练,利用数据并行和模型并行。有关详细信息,请参阅 paper 的第2.3节。
我们在两个代码生成基准(HumanEval和MTPB)上评估我们的模型。有关详细信息,请参阅 paper 。
作为自回归语言模型,CodeGen能够从给定的自然语言和编程语言文本中提取特征,并计算它们的似然性。然而,该模型的预期用途是在程序合成方面表现最佳,即根据英语提示生成可执行代码,其中提示应该以注释字符串的形式存在。该模型还可以完成部分生成的代码。
可以使用AutoModelForCausalLM功能轻松加载此模型:
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-6B-mono") model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-6B-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))
@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} }