模型:
Salesforce/instructcodet5p-16b
CodeT5+ 是一种新的开放源码大型语言模型系列,采用编码器-解码器结构,可以在不同模式下灵活地操作(即仅编码器,仅解码器和编码器-解码器),以支持广泛的代码理解和生成任务。它在以下论文中介绍:
CodeT5+: Open Code Large Language Models for Code Understanding and Generation 由 Yue Wang *, Hung Le *, Akhilesh Deepak Gotmare , Nghi D.Q. Bui , Junnan Li , Steven C.H. Hoi (*表示同等贡献)。
与原始的CodeT5系列(基础版:220M,大型版:770M)相比,CodeT5+使用多样化的预训练任务进行预训练,包括跨度去噪、因果语言建模、对比学习和文本代码匹配,以从单模态代码数据和双模态代码文本数据中学习丰富的表示。此外,它采用了一种简单而有效的高效计算预训练方法,通过使用现成的冷冻LLM(如 CodeGen )初始化模型组件,以有效地扩大模型规模(即2B、6B、16B),并采用“浅编码器和深解码器”架构。此外,它还经过了指令调整,以与自然语言指令相匹配(请参见我们的InstructCodeT5+ 16B),遵循 Code Alpaca 。
可以使用AutoModelForSeq2SeqLM功能轻松加载此模型,并使用与 CodeGen 相同的分词器。
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer checkpoint = "Salesforce/instructcodet5p-16b" device = "cuda" # for GPU usage or "cpu" for CPU usage tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint, torch_dtype=torch.float16, low_cpu_mem_usage=True, trust_remote_code=True).to(device) encoding = tokenizer("def print_hello_world():", return_tensors="pt").to(device) encoding['decoder_input_ids'] = encoding['input_ids'].clone() outputs = model.generate(**encoding, max_length=15) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
该检查点是在经过去重处理的 github-code dataset 严格宽容的子集上训练的。数据经过预处理,仅保留允许的授权代码("mit"、“apache-2”、“bsd-3-clause”、“bsd-2-clause”、“cc0-1.0”、“unlicense”、“isc”)。支持的语言(共9种)如下:c、c++、c-sharp、go、java、javascript、php、python、ruby。
该检查点从现成的LLM初始化,即其编码器从 CodeGen-350M-mono 初始化,其解码器从 CodeGen-16B-mono 初始化。它在第一阶段预训练中使用单模态代码数据进行训练,其中包括跨度去噪和两种变种的因果语言建模。之后,它在Python子集上进一步使用因果语言建模目标进行训练一个epoch,以更好地适应Python代码生成。最后,我们应用指令调整,以与自然语言指令相匹配,根据 Code Alpaca 进行调整。更多详细信息,请参考论文。
CodeT5+模型在各种设置下在广泛的代码理解和生成任务中进行了全面评估:零-shot、微调和指令调整。具体来说,与SoTA基线相比,CodeT5+在许多下游任务上取得了显著的性能提升,例如8个文本到代码检索任务(平均MRR+3.2)、2个行级代码完成任务(平均精确匹配+2.1)和2个检索增强代码生成任务(平均BLEU-4+5.8)。在MathQA-Python和GSM8K-Python的2个数学编程任务中,较低参数规模的CodeT5+模型明显优于多达137B参数的许多LLM模型。特别是在HumanEval基准测试中的零-shot文本到代码生成任务中,InstructCodeT5+ 16B在35.0% pass@1和54.5% pass@10方面超过了其他开放源码LLM,甚至超过了闭源的OpenAI code-cushman-001模式。更多详细信息,请参考 paper 。
@article{wang2023codet5plus, title={CodeT5+: Open Code Large Language Models for Code Understanding and Generation}, author={Wang, Yue and Le, Hung and Gotmare, Akhilesh Deepak and Bui, Nghi D.Q. and Li, Junnan and Hoi, Steven C. H.}, journal={arXiv preprint}, year={2023} }