license: bsd-3-clause
CodeT5+ 220M 模型
模型描述
CodeT5+ 是一个全新的开源代码大语言模型家族,采用编码器-解码器架构,可灵活支持多种模式(包括_仅编码器_、仅解码器_和_编码器-解码器),适用于广泛的代码理解与生成任务。该模型在以下论文中提出:
《CodeT5+: 面向代码理解与生成的开源代码大语言模型》
作者包括王越*、黎雄*、Akhilesh Deepak Gotmare、裴德庆、李俊楠、许子衡(*表示同等贡献)。
相较于原始CodeT5系列(基础版:220M
,大型版:770M
),CodeT5+通过多样化的预训练任务进行训练,包括_片段去噪_、因果语言建模、对比学习_和_文本-代码匹配,从而从单模态代码数据和双模态代码-文本数据中学习丰富表征。此外,该模型采用了一种简单高效的_计算高效预训练_方法,利用现成的大型语言模型(如CodeGen)冻结初始化模型组件,可高效扩展模型规模(即2B
、6B
、16B
),并采用"浅编码器-深解码器"架构。模型还经过指令微调以对齐自然语言指令(参见我们的InstructCodeT5+ 16B),遵循Code Alpaca方法。
使用方法
本模型可通过T5ForConditionalGeneration
轻松加载,并使用与原始CodeT5相同的分词器。
from transformers import T5ForConditionalGeneration, AutoTokenizer
checkpoint = "Salesforce/codet5p-220m"
device = "cuda"
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))
预训练数据
本检查点基于github-code数据集去重后的严格许可子集训练。数据预处理时仅保留符合宽松许可证的代码("mit"、"apache-2"、"bsd-3-clause"、"bsd-2-clause"、"cc0-1.0"、"unlicense"、"isc")。支持9种编程语言:C
、C++
、C#
、Go
、Java
、JavaScript
、PHP
、Python
、Ruby
。
训练流程
本检查点在第一阶段预训练中使用单模态代码数据训练,包含多样化的预训练任务:片段去噪_和两种变体的_因果语言建模。详情请参阅论文。
评估结果
CodeT5+模型在多种代码理解与生成任务上进行了全面评估,包括_零样本_、_微调_和_指令微调_三种设置。具体而言,CodeT5+在多项下游任务上相比现有技术基线取得显著提升,例如:8个文本到代码检索任务(平均MRR提升+3.2)、2个行级代码补全任务(平均精确匹配提升+2.1)、2个检索增强代码生成任务(平均BLEU-4提升+5.8)。在MathQA-Python和GSM8K-Python两个数学编程任务中,CodeT5+的十亿参数以下模型显著优于许多高达137B参数的大型语言模型。特别是在HumanEval基准测试的零样本文本到代码生成任务中,InstructCodeT5+ 16B以35.0%的pass@1和54.5%的pass@10创造了新的开源模型最佳成绩,甚至超越了闭源的OpenAI code-cushman-001模型。详情请参阅论文。
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 AUP。