模型:
Salesforce/codet5p-220m
CodeT5+ 220M是一种新的开源大型语言模型,采用编码器-解码器架构,在不同模式下(即仅编码器、仅解码器和编码器-解码器)灵活操作,支持广泛的代码理解和生成任务。该模型由以下论文介绍:
CodeT5+: Open Code Large Language Models for Code Understanding and Generation by 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 。使用T5ForConditionalGeneration功能可以轻松加载该模型,并且采用与原始 CodeT5 相同的标记器。
from transformers import T5ForConditionalGeneration, AutoTokenizer checkpoint = "Salesforce/codet5p-220m" device = "cuda" # for GPU usage or "cpu" for CPU usage tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = T5ForConditionalGeneration.from_pretrained(checkpoint).to(device) inputs = tokenizer.encode("def print_hello_world():<extra_id_0>", return_tensors="pt").to(device) outputs = model.generate(inputs, max_length=10) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) # ==> print "Hello World"
@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} }