🚀 CodeT5 (PythonでNTP目的で事前学習された大規模モデル)
CodeT5は、コード理解と生成のための事前学習済みエンコーダ・デコーダモデルです。このモデルは、コード関連のタスクにおいて高い性能を発揮します。
🚀 クイックスタート
このモデルは、T5ForConditionalGeneration
機能を使用して簡単にロードできます。以下にコード例を示します。
from transformers import AutoTokenizer, T5ForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codet5-large-ntp-py")
model = T5ForConditionalGeneration.from_pretrained("Salesforce/codet5-large-ntp-py")
text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
✨ 主な機能
- CodeT5は、識別子を考慮した統一的な事前学習済みエンコーダ・デコーダモデルで、コードの理解と生成に適しています。
- このリポジトリに含まれるチェックポイント CodeT5-large-ntp-py は、CodeRL論文で導入されたもので、特定の事前学習手順を経ています。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
📚 ドキュメント
モデルの説明
CodeT5は、論文 CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation で紹介されたエンコーダ・デコーダ型の言語モデルファミリーです。著者はYue Wang、Weishi Wang、Shafiq Joty、およびSteven C.H. Hoiです。
このリポジトリに含まれるチェックポイント CodeT5-large-ntp-py (770M) は、論文 CodeRL: Mastering Code Generation through Pretrained Models and Deep Reinforcement Learning で導入されています。著者はHung Le、Yue Wang、Akhilesh Deepak Gotmare、Silvio Savarese、Steven C.H. Hoiです。
学習データ
CodeT5-large-ntp-pyは、6つのプログラミング言語(Ruby/JavaScript/Go/Python/Java/PHP)の CodeSearchNet データと、GCPY(Github Code のPython分割データ)で事前学習されています。詳細は論文のセクション4.1を参照してください。
学習手順
CodeT5-large-ntp-pyは、まずCodeSearchNetでMasked Span Prediction (MSP) 目的で150エポック、GCPYで10エポック事前学習され、その後GCPYでNext Token Prediction (NTP) 目的でさらに10エポック学習されました。詳細は論文のセクション4.1を参照してください。
評価結果
このチェックポイントは、APPS ベンチマークで評価されています。詳細は論文の表5を参照してください。
🔧 技術詳細
CodeT5-large-ntp-pyは、特定の事前学習目的(MSPとNTP)を使用して、複数のデータセットで学習されています。これにより、コードの理解と生成における性能が向上しています。
📄 ライセンス
このモデルは、BSD 3条項ライセンスの下で提供されています。
倫理的な考慮事項
このリリースは、学術論文のサポートのための研究目的のみを対象としています。当社のモデル、データセット、およびコードは、すべての下流の目的に特に設計または評価されていません。ユーザーは、このモデルをデプロイする前に、精度、安全性、および公平性に関連する潜在的な懸念事項を評価し、対処することを強く推奨します。ユーザーは、AIの一般的な制限を考慮し、適用可能な法律を遵守し、特にエラーや誤用が人々の生活、権利、または安全に重大な影響を与える可能性のある高リスクシナリオのユースケースを選択する際には、ベストプラクティスを活用することをお勧めします。ユースケースに関する詳細なガイダンスについては、当社のAUPおよびAI AUPを参照してください。
BibTeXエントリと引用情報
@inproceedings{CodeT52021,
author = {Yue Wang and Weishi Wang and Shafiq R. Joty and Steven C. H. Hoi},
title = {CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation},
booktitle = {EMNLP},
pages = {8696--8708},
publisher = {Association for Computational Linguistics},
year = {2021}
}
@article{CodeRL2022
author = {Hung Le, Yue Wang, Akhilesh Deepak Gotmare, Silvio Savarese, Steven C.H. Hoi},
title = {CodeRL: Mastering Code Generation through Pretrained Models and Deep Reinforcement Learning},
journal = {arXiv preprint},
volume = {abs/2207.01780},
year = {2022}
}