🚀 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)。