🚀 CodeT5+ 220M 双模模型
CodeT5+ 220M 双模模型是一款强大的代码语言模型,它基于多种预训练任务进行训练,能从单峰代码数据和双峰代码 - 文本数据中学习丰富的表示,支持广泛的代码理解和生成任务。
🚀 快速开始
本模型可以使用 AutoModel
功能轻松加载,并采用 CodeT5 分词器,添加了三个特殊标记 ([ENC]
, [TDEC]
, [CDEC]
)。此检查点包含一个 CodeT5+ 220M 模型、一个投影层和一个用于文本 - 代码匹配的 itm_head 层。
💻 使用示例
基础用法
from transformers import AutoModel, AutoTokenizer
checkpoint = "Salesforce/codet5p-220m-bimodal"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModel.from_pretrained(checkpoint, trust_remote_code=True).to(device)
✨ 主要特性
- 多模式操作:CodeT5+ 具有编码器 - 解码器架构,可灵活在不同模式(即 仅编码器、仅解码器 和 编码器 - 解码器)下运行,支持广泛的代码理解和生成任务。
- 多样化预训练任务:与原始的 CodeT5 家族相比,CodeT5+ 通过多种预训练任务进行预训练,包括 跨度去噪、因果语言建模、对比学习 和 文本 - 代码匹配,以从单峰代码数据和双峰代码 - 文本数据中学习丰富的表示。
- 高效预训练方法:采用简单有效的 计算高效预训练 方法,用冻结的现成大语言模型(如 CodeGen)初始化模型组件,以高效扩展模型规模(如
2B
、6B
、16B
),并采用“浅编码器和深解码器”架构。
- 指令调优:按照 Code Alpaca 进行指令调优,以与自然语言指令对齐。
📚 详细文档
模型描述
CodeT5+ 是一个新的开源代码大语言模型家族,具有编码器 - 解码器架构,能够灵活地在不同模式(即 仅编码器、仅解码器 和 编码器 - 解码器)下运行,以支持广泛的代码理解和生成任务。它在以下论文中被提出:
CodeT5+: Open Code Large Language Models for Code Understanding and Generation
作者:Yue Wang*、Hung Le*、Akhilesh Deepak Gotmare、Nghi D.Q. Bui、Junnan Li、Steven C.H. Hoi(* 表示同等贡献)。
与原始的 CodeT5 家族(基础版:220M
,大版本:770M
)相比,CodeT5+ 通过多种预训练任务进行预训练,包括 跨度去噪、因果语言建模、对比学习 和 文本 - 代码匹配,以从单峰代码数据和双峰代码 - 文本数据中学习丰富的表示。此外,它采用了一种简单而有效的 计算高效预训练 方法,用冻结的现成大语言模型(如 CodeGen)初始化模型组件,以高效扩展模型规模(如 2B
、6B
、16B
),并采用“浅编码器和深解码器”架构。此外,它还按照 Code Alpaca 进行指令调优,以与自然语言指令对齐(参见我们的 InstructCodeT5+ 16B)。
预训练数据
此检查点在 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
。
训练过程
此检查点首先在第一阶段预训练中对单峰代码数据进行训练,然后使用提出的预训练任务混合对双峰文本 - 代码对数据进行训练。更多详细信息请参考论文。
评估结果
更多详细信息请参考论文和官方 GitHub 仓库。
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}
}
伦理考虑
本版本仅用于支持学术论文的研究目的。我们的模型、数据集和代码并非专门为所有下游用途而设计或评估。我们强烈建议用户在部署此模型之前评估并解决与准确性、安全性和公平性相关的潜在问题。我们鼓励用户考虑人工智能的常见局限性,遵守适用法律,并在选择用例时采用最佳实践,特别是在错误或滥用可能对人们的生活、权利或安全产生重大影响的高风险场景中。有关用例的更多指导,请参考我们的 AUP 和 AI AUP。
📄 许可证
本项目采用 BSD 3 - 条款许可证(bsd - 3 - clause)。