🚀 CodeT5+ 770M
CodeT5+是一个新的开源代码大语言模型系列,采用编码器 - 解码器架构,可灵活在不同模式(即仅编码器、仅解码器和编码器 - 解码器)下运行,以支持广泛的代码理解和生成任务。
🚀 快速开始
本模型可以使用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))
✨ 主要特性
- 多模式灵活运行:CodeT5+能够灵活地在不同模式(即仅编码器、仅解码器和编码器 - 解码器)下运行,以支持广泛的代码理解和生成任务。
- 多样化预训练任务:与原始的CodeT5系列相比,CodeT5+通过包括_跨度去噪_、因果语言建模、_对比学习_和_文本 - 代码匹配_等多样化的预训练任务进行预训练,从而从单模态代码数据和双模态代码 - 文本数据中学习丰富的表示。
- 高效的预训练方法:采用简单而有效的_计算高效预训练_方法,用冻结的现成大语言模型(如CodeGen)初始化模型组件,以有效地扩展模型规模(如
2B
、6B
、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)
📄 预训练数据
此检查点是在[github - code数据集](https://huggingface.co/datasets/codeparrot/github - code)的去重版本的更严格许可子集上进行训练的。数据预处理时仅保留许可代码(“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
。
🔧 训练过程
此检查点在第一阶段预训练时在单模态代码数据上进行训练,包括一系列多样化的预训练任务,如_跨度去噪_和两种变体的_因果语言建模_。更多详细信息请参考论文。
📊 评估结果
CodeT5+模型在各种设置(零样本、微调、指令微调)下的广泛代码理解和生成任务中进行了全面评估。具体而言,与现有最优基线相比,CodeT5+在许多下游任务中取得了显著的性能提升,例如:
- 8个文本到代码检索任务(平均MRR提高3.2)
- 2个行级代码补全任务(平均精确匹配提高2.1)
- 2个检索增强代码生成任务(平均BLEU - 4提高5.8)
在MathQA - Python和GSM8K - Python上的2个数学编程任务中,参数低于十亿的CodeT5+模型显著优于许多参数高达137B的大语言模型。特别是在HumanEval基准的零样本文本到代码生成任务中,InstructCodeT5+ 16B相对于其他开源代码大语言模型创造了新的最优结果,pass@1为35.0%,pass@10为54.5%,甚至超过了闭源的OpenAI code - cushman - 001模型。更多详细信息请参考论文。
📚 引用信息
@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}
}
⚖️ 伦理考量
此版本仅用于支持学术论文的研究目的。我们的模型、数据集和代码并非专门为所有下游目的而设计或评估。我们强烈建议用户在部署此模型之前评估并解决与准确性、安全性和公平性相关的潜在问题。我们鼓励用户考虑人工智能的常见局限性,遵守适用法律,并在选择用例时采用最佳实践,特别是在错误或滥用可能对人们的生活、权利或安全产生重大影响的高风险场景中。有关用例的进一步指导,请参考我们的AUP和AI AUP。
📄 许可证
本项目采用BSD 3 - 条款许可证。