🚀 CodeT5(小型模型)
CodeT5是一個預訓練的代碼處理模型,它能更好地利用開發者指定標識符所傳達的代碼語義,可無縫支持代碼理解和生成任務,還允許進行多任務學習。
🚀 快速開始
本倉庫僅包含預訓練模型,你可以使用該模型進行掩碼跨度預測,如下面的代碼示例所示。不過,該模型的主要用途是針對你感興趣的下游任務進行微調,例如代碼摘要、代碼生成、代碼翻譯、代碼優化、代碼缺陷檢測和代碼克隆檢測等。你可以在模型中心查找針對你感興趣任務的微調版本。
如何使用
以下是使用該模型的示例代碼:
from transformers import RobertaTokenizer, T5ForConditionalGeneration
tokenizer = RobertaTokenizer.from_pretrained('Salesforce/codet5-small')
model = T5ForConditionalGeneration.from_pretrained('Salesforce/codet5-small')
text = "def greet(user): print(f'hello <extra_id_0>!')"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=10)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
✨ 主要特性
從論文摘要可知:“我們提出了CodeT5,這是一個統一的預訓練編碼器 - 解碼器Transformer模型,它能更好地利用開發者指定標識符所傳達的代碼語義。我們的模型採用統一框架,無縫支持代碼理解和生成任務,並允許進行多任務學習。此外,我們提出了一種新穎的標識符感知預訓練任務,使模型能夠區分哪些代碼標記是標識符,並在它們被掩碼時恢復它們。此外,我們提出利用用戶編寫的代碼註釋,通過雙峰雙生成任務實現更好的自然語言 - 編程語言對齊。綜合實驗表明,CodeT5在代碼缺陷檢測和克隆檢測等理解任務,以及包括編程語言 - 自然語言、自然語言 - 編程語言和編程語言 - 編程語言等各個方向的生成任務上,顯著優於先前的方法。進一步分析表明,我們的模型能夠更好地從代碼中捕獲語義信息。”
📦 安裝指南
文檔未提及安裝步驟,暫無法提供。
💻 使用示例
基礎用法
from transformers import RobertaTokenizer, T5ForConditionalGeneration
tokenizer = RobertaTokenizer.from_pretrained('Salesforce/codet5-small')
model = T5ForConditionalGeneration.from_pretrained('Salesforce/codet5-small')
text = "def greet(user): print(f'hello <extra_id_0>!')"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=10)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
📚 詳細文檔
訓練數據
CodeT5模型在CodeSearchNet Husain等人,2019上進行預訓練。此外,作者從BigQuery1收集了兩個C/CSharp數據集,以確保所有下游任務的編程語言與預訓練數據有重疊。總共約835萬個實例用於預訓練。
訓練過程
預處理
該模型使用特定於代碼的字節對編碼(BPE)分詞器。可以使用RobertaTokenizer
和本倉庫中的文件為模型準備文本(或代碼)。
評估結果
有關幾個下游基準測試的評估結果,請參考論文。
倫理考慮
此版本僅用於支持學術論文的研究目的。我們的模型、數據集和代碼並非專門為所有下游目的設計或評估。我們強烈建議用戶在部署此模型之前,評估並解決與準確性、安全性和公平性相關的潛在問題。我們鼓勵用戶考慮人工智能的常見侷限性,遵守適用法律,並在選擇用例時採用最佳實踐,特別是在錯誤或濫用可能對人們的生活、權利或安全產生重大影響的高風險場景中。有關用例的進一步指導,請參考我們的使用協議和人工智能使用協議。
BibTeX引用
@misc{wang2021codet5,
title={CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation},
author={Yue Wang and Weishi Wang and Shafiq Joty and Steven C. H. Hoi},
year={2021},
eprint={2109.00859},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
📄 許可證
本模型採用Apache-2.0許可證。