🚀 CodeT5 (ベースサイズのモデル)
事前学習されたCodeT5モデルです。このモデルは、Yue Wang、Weishi Wang、Shafiq Joty、Steven C.H. Hoiによる論文 CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation で紹介され、このリポジトリ で最初に公開されました。
なお、CodeT5を公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチーム(具体的には nielsr)によって作成されています。
🚀 クイックスタート
このリポジトリには事前学習済みモデルのみが含まれています。以下のコード例に示すように、このモデルをマスクされたスパン予測などのタスクに使用できます。ただし、このモデルの主な用途は、コード要約、コード生成、コード翻訳、コード改良、コード欠陥検出、コードクローン検出など、関心のある下流タスクに対して微調整することです。
💻 使用例
基本的な使用法
from transformers import RobertaTokenizer, T5ForConditionalGeneration
tokenizer = RobertaTokenizer.from_pretrained('Salesforce/codet5-base')
model = T5ForConditionalGeneration.from_pretrained('Salesforce/codet5-base')
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=8)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
✨ 主な機能
モデルの概要
論文の概要から引用:
「我々は、開発者が割り当てた識別子から伝達されるコードの意味をより効果的に活用する、統一された事前学習済みエンコーダ - デコーダTransformerモデルであるCodeT5を提案します。我々のモデルは、統一されたフレームワークを採用して、コード理解と生成タスクの両方をシームレスにサポートし、マルチタスク学習を可能にします。さらに、モデルがどのコードトークンが識別子であるかを区別し、それらがマスクされたときにそれらを復元できるようにする、新しい識別子認識事前学習タスクを提案します。さらに、より良い自然言語 - プログラミング言語(NL - PL)のアライメントのために、バイモーダル双方向生成タスクでユーザーが書いたコードコメントを活用することを提案します。包括的な実験により、CodeT5は、コード欠陥検出やクローン検出などの理解タスク、およびPL - NL、NL - PL、PL - PLなどのさまざまな方向の生成タスクにおいて、従来の方法を大幅に上回ることが示されています。さらなる分析により、我々のモデルはコードから意味情報をより良く捉えることができることが明らかになりました。」
想定される用途と制限
このリポジトリには事前学習済みモデルのみが含まれています。以下のコード例に示すように、このモデルをマスクされたスパン予測などのタスクに使用できます。ただし、このモデルの主な用途は、以下のような下流タスクに対して微調整することです。
- コード要約
- コード生成
- コード翻訳
- コード改良
- コード欠陥検出
- コードクローン検出
コード用の教師付きデータセットは こちら で見つけることができます。興味のあるタスクに関する微調整済みバージョンを探すには、モデルハブ を参照してください。
📚 ドキュメント
トレーニングデータ
CodeT5モデルは、CodeSearchNet Husain et al., 2019 で事前学習されました。さらに、著者らは、すべての下流タスクが事前学習データと重複するプログラミング言語を持つように、BigQuery1 からC/CSharpの2つのデータセットを収集しました。合計で約835万件のインスタンスが事前学習に使用されています。
トレーニング手順
前処理
このモデルは、HuggingFace Tokenizers ライブラリを使用して学習されたコード固有のBPE(Byte - Pair Encoding)トークナイザーを使用しています。このリポジトリのファイルを使用して、RobertaTokenizerを用いてモデル用のテキスト(またはコード)を準備することができます。
評価結果
いくつかの下流ベンチマークにおける評価結果については、論文を参照してください。
倫理的な考慮事項
このリリースは、学術論文のサポートのための研究目的のみです。我々のモデル、データセット、およびコードは、すべての下流目的に対して特別に設計または評価されていません。ユーザーは、このモデルをデプロイする前に、精度、安全性、および公平性に関連する潜在的な問題を評価し、対処することを強く推奨します。ユーザーは、AIの一般的な制限を考慮し、適用される法律に準拠し、特にエラーや誤用が人々の生活、権利、または安全に重大な影響を与える可能性のある高リスクシナリオのユースケースを選択する際には、ベストプラクティスを活用することをお勧めします。ユースケースに関するさらなるガイダンスについては、我々のAUPおよびAI AUPを参照してください。
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ライセンスの下で公開されています。