模型:
Salesforce/codegen-16B-multi
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 16B,其中“Multi”表示该模型以CodeGen-NL 16B为初始模型,然后在多种编程语言数据集上进行了进一步的预训练,“16B”表示可训练参数的数量。
此检查点(CodeGen-Multi 16B)首先使用CodeGen-NL 16B进行初始化,然后在 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-16B-multi") model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-16B-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))
@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} }