license: bsd-3-clause
CodeT5+ 770M模型
模型描述
CodeT5+是一个新型开源代码大语言模型家族,采用编码器-解码器架构,可灵活支持多种模式(包括_纯编码器_、纯解码器_和_编码器-解码器),适用于广泛的代码理解与生成任务。该模型在论文中首次提出:
CodeT5+: 面向代码理解与生成的开源代码大语言模型
作者包括王越*、黎雄*、Akhilesh Deepak Gotmare、裴德志、李俊楠、许子衡(*表示同等贡献)。
相较于原始CodeT5系列(CodeT5-base:220M
,CodeT5-large:770M
),CodeT5+通过多样化的预训练任务(包括_片段去噪_、因果语言建模、对比学习_和_文本-代码匹配)从单模态代码数据和双模态代码-文本数据中学习丰富表征。该模型采用创新的_计算高效预训练_方法,通过冻结现成大语言模型(如CodeGen)初始化组件,高效扩展模型规模(达2B
、6B
、16B
),并采用"浅编码器-深解码器"架构。此外,模型经过指令微调以对齐自然语言指令(参见我们的InstructCodeT5+ 16B),遵循Code Alpaca方案。
使用方法
本模型可通过T5ForConditionalGeneration
轻松加载,使用与原始CodeT5相同的分词器。
from transformers import T5ForConditionalGeneration, AutoTokenizer
checkpoint = "Salesforce/codet5p-770m"
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+模型在_零样本_、_微调_和_指令微调_等多种设置下,对广泛的代码理解与生成任务进行了全面评估。具体表现为:在8个文本-代码检索任务上平均MRR提升3.2,2个行级代码补全任务平均Exact Match提升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政策。