🚀 CodeT5+ 220M
CodeT5+是一個新的開源代碼大語言模型家族,採用編碼器 - 解碼器架構,可靈活在不同模式(即僅編碼器、僅解碼器和編碼器 - 解碼器)下運行,以支持廣泛的代碼理解和生成任務。
🚀 快速開始
本模型可以使用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))
✨ 主要特性
- 多模式靈活運行:CodeT5+ 採用編碼器 - 解碼器架構,能夠在不同模式下靈活運行,支持廣泛的代碼理解和生成任務。
- 多樣化預訓練任務:與原始 CodeT5 家族相比,CodeT5+ 通過一系列多樣化的預訓練任務進行預訓練,包括_跨度去噪_、因果語言建模、對比學習_和_文本 - 代碼匹配,從而從單模態代碼數據和雙模態代碼 - 文本數據中學習豐富的表示。
- 高效預訓練方法:採用簡單而有效的_計算高效預訓練_方法,使用凍結的現成大語言模型(如 CodeGen)初始化模型組件,以高效擴展模型規模。
- 指令微調:經過指令微調,能夠與自然語言指令對齊。
📚 詳細文檔
預訓練數據
本模型檢查點在 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 個數學編程任務中,參數小於 10 億的 CodeT5+ 模型顯著優於許多參數高達 137B 的大語言模型。特別是在 HumanEval 基準測試的零樣本文本到代碼生成任務中,InstructCodeT5+ 16B 相對於其他開源代碼大語言模型創造了新的最優結果,pass@1 為 35.0%,pass@10 為 54.5%,甚至超過了閉源的 OpenAI code - cushman - 001 模型。更多詳細信息請參考 論文。
📄 許可證
本項目採用 bsd - 3 - clause 許可證。
🔧 技術細節
CodeT5+ 由 Yue Wang*、Hung Le*、Akhilesh Deepak Gotmare、Nghi D.Q. Bui、Junnan Li、Steven C.H. Hoi 等人在論文 CodeT5+: Open Code Large Language Models for Code Understanding and Generation 中提出(* 表示同等貢獻)。
📚 引用信息
@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}
}
⚠️ 倫理考量
本次發佈僅用於支持學術論文的研究目的。我們的模型、數據集和代碼並非專門為所有下游用途設計或評估。我們強烈建議用戶在部署此模型之前評估並解決與準確性、安全性和公平性相關的潛在問題。我們鼓勵用戶考慮人工智能的常見侷限性,遵守適用法律,並在選擇用例時採用最佳實踐,特別是在錯誤或濫用可能對人們的生活、權利或安全產生重大影響的高風險場景中。有關用例的更多指導,請參考我們的使用協議和人工智能使用協議。