🚀 InstructCodeT5+ 16B
CodeT5+は、コード理解と生成のためのオープンな大規模言語モデルで、多様なコードタスクに対応しています。InstructCodeT5+ 16Bは、自然言語命令に沿って調整されたバージョンです。
🚀 クイックスタート
このモデルは、AutoModelForSeq2SeqLM
機能を使用して簡単に読み込むことができ、CodeGenと同じトークナイザーを採用しています。
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
checkpoint = "Salesforce/instructcodet5p-16b"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint,
torch_dtype=torch.float16,
low_cpu_mem_usage=True,
trust_remote_code=True).to(device)
encoding = tokenizer("def print_hello_world():", return_tensors="pt").to(device)
encoding['decoder_input_ids'] = encoding['input_ids'].clone()
outputs = model.generate(**encoding, max_length=15)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
✨ 主な機能
CodeT5+は、エンコーダー・デコーダーアーキテクチャを持つ新しいオープンコードの大規模言語モデルファミリーです。これは、様々なコード理解と生成タスクをサポートするために、異なるモード(エンコーダーのみ、デコーダーのみ、エンコーダー・デコーダー)で柔軟に動作することができます。
元のCodeT5ファミリー(ベース: 220M
、ラージ: 770M
)と比較して、CodeT5+は、span denoising、causal language modeling、contrastive learning、_text-code matching_などの多様な事前学習タスクで事前学習されており、単モーダルコードデータとバイモーダルコード・テキストデータの両方から豊富な表現を学習します。また、CodeGenなどの既存のLLMを凍結してモデルコンポーネントを初期化する、簡単で効果的な_計算効率の高い事前学習_方法を採用しており、モデルを効率的に拡張(2B
、6B
、16B
)することができます。さらに、「浅いエンコーダーと深いデコーダー」のアーキテクチャを採用しています。
📦 インストール
このモデルを使用するには、transformers
ライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install transformers
📚 ドキュメント
事前学習データ
このチェックポイントは、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.
トレーニング手順
このチェックポイントは、既存のLLMから初期化されています。つまり、エンコーダーはCodeGen-350M-monoから、デコーダーはCodeGen-16B-monoから初期化されています。
最初の段階の事前学習では、単モーダルコードデータでトレーニングされ、_span denoising_や_causal language modeling_の2つのバリエーションなどの多様な事前学習タスクが含まれています。その後、Pythonサブセットで_causal language modeling_の目的でさらに1エポックトレーニングされ、Pythonコード生成により適応するようになっています。最後に、Code Alpacaに従って、自然言語命令に沿うように命令微調整が適用されています。詳細については、論文を参照してください。
評価結果
CodeT5+モデルは、様々な設定(ゼロショット、微調整、命令微調整)で、幅広いコード理解と生成タスクに対して包括的に評価されています。具体的には、CodeT5+は、多くの下流タスクで、SoTAベースラインと比較して大幅な性能向上をもたらします。例えば、8つのテキストからコードへの検索タスク(平均MRR +3.2)、2つの行レベルのコード補完タスク(平均正解率 +2.1)、および2つの検索強化コード生成タスク(平均BLEU-4 +5.8)です。
MathQA-PythonとGSM8K-Pythonの2つの数学プログラミングタスクでは、10億パラメータ未満のCodeT5+モデルが、最大137Bパラメータの多くのLLMを大幅に上回っています。特に、HumanEvalベンチマークのゼロショットテキストからコードへの生成タスクでは、InstructCodeT5+ 16Bが、他のオープンコードLLMに対して、35.0% pass@1および54.5% pass@10の新しいSoTA結果を達成しています。
🔧 技術詳細
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 (*は同等の貢献を示します)
📄 ライセンス
このモデルは、BSD 3条項ライセンスの下で提供されています。
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}
}
倫理的な考慮事項
このリリースは、学術論文のサポートのための研究目的のみです。当社のモデル、データセット、およびコードは、すべての下流目的に特に設計または評価されていません。ユーザーは、このモデルを展開する前に、精度、安全性、および公正性に関連する潜在的な懸念事項を評価し、対処することを強くお勧めします。ユーザーは、AIの一般的な制限事項を考慮し、適用される法律に準拠し、特にエラーや誤用が人々の生活、権利、または安全に重大な影響を与える可能性のある高リスクシナリオでは、ベストプラクティスを活用することが推奨されます。ユースケースに関する詳細なガイダンスについては、当社のAUPおよびAI AUPを参照してください。