许可证:bsd-3-clause
CodeT5+ 220M(基于Python进一步调优)
模型描述
CodeT5+ 是一个新型开源代码大语言模型家族,采用编码器-解码器架构,可灵活支持不同模式(如仅编码器、仅解码器、编码器-解码器),适用于广泛的代码理解与生成任务。该模型由以下作者在论文中提出:
《CodeT5+: 面向代码理解与生成的开源代码大语言模型》
作者:王越*、黎雄*、Akhilesh Deepak Gotmare、裴德庆、李俊楠、许振浩(*表示同等贡献)。
相较于原始CodeT5系列(基础版220M参数,大型版770M参数),CodeT5+通过多样化的预训练任务(包括片段去噪、因果语言建模、对比学习和文本-代码匹配)进行训练,能够从单模态代码数据和双模态代码-文本数据中学习丰富表征。该模型采用计算高效的预训练方法,通过冻结现成大语言模型(如CodeGen)的组件进行高效扩展(支持20亿/60亿/160亿参数规模),并采用"浅编码器-深解码器"架构。此外,模型还基于代码羊驼进行了指令微调以对齐自然语言指令(如InstructCodeT5+ 160亿版本)。
使用方法
本模型可通过T5ForConditionalGeneration
直接加载,分词器与原始CodeT5保持一致:
from transformers import T5ForConditionalGeneration, AutoTokenizer
checkpoint = "Salesforce/codet5p-220m-py"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = T5ForConditionalGeneration.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=10)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
预训练数据
本检查点基于github-code数据集去重后的严格许可子集训练,仅保留符合宽松许可证的代码(包括MIT、Apache-2.0、BSD-3-Clause、BSD-2-Clause、CC0-1.0、Unlicense、ISC)。支持9种编程语言:C、C++、C#、Go、Java、JavaScript、PHP、Python、Ruby。
训练流程
本模型首先在第一阶段预训练中基于多语言单模态代码数据进行训练,包含片段去噪和两种因果语言建模变体等任务。随后专门针对Python子集进行了一个周期的因果语言建模训练以优化Python代码生成能力。详见论文。
评估结果
CodeT5+系列在零样本、微调和指令调优等多种设置下,在广泛的代码理解与生成任务中表现优异:在8个文本-代码检索任务上平均MRR提升3.2,2个行级代码补全任务平均Exact Match提升2.1,2个检索增强代码生成任务平均BLEU-4提升5.8。在MathQA-Python和GSM8K-Python数学编程任务中,不足十亿参数的CodeT5+模型显著优于多个137B参数的大模型。特别是在HumanEval基准的零样本文本-代码生成任务中,InstructCodeT5+ 160亿版本以35.0% pass@1和54.5% pass@10创造了开源模型新纪录,甚至超越闭源的OpenAI code-cushman-001模型。
本检查点在HumanEval零样本测试中达到12.0% pass@1,优于更大规模的模型(如Incoder 13亿的8.9%、GPT-Neo 27亿的6.4%和GPT-J 60亿的11.6%)。
BibTeX引用
@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}
}
伦理声明
本版本仅供学术研究使用。我们的模型、数据集和代码并非为所有下游场景设计或评估。强烈建议用户在部署前评估准确性、安全性和公平性等潜在问题。鼓励用户充分考虑AI的局限性,遵守适用法律,并为高风险场景制定最佳实践方案(当错误或滥用可能严重影响人类生活、权利或安全时)。具体使用指南请参考我们的可接受使用政策(AUP)和AI使用政策(AI AUP)。