CodeT5+: コード理解および生成のためのオープンソースコード大規模言語モデル

大規模な言語モデル(LLM)は、膨大なソースコードデータで事前学習されることにより、コードインテリジェンス分野で顕著な進展を遂げています。しかし、既存のコード用LLMには、アーキテクチャおよび事前学習タスクの面で二つの主要な制約が存在します。第一に、モデルはしばしば特定のアーキテクチャ(エンコーダー単体またはデコーダー単体)を採用するか、あるいは異なる下流タスクに統一されたエンコーダー・デコーダー構造を用いることが多く、前者は応用における柔軟性の欠如に起因する制限を抱え、後者ではすべてのタスクに対してモデルを同一のシステムとして扱うため、一部のタスクにおいて最適なパフォーマンスを発揮できず、性能が劣化する傾向があります。第二に、既存のモデルはしばしば限られた事前学習目的(pretraining objectives)を採用しており、これは一部の下流タスクと関連性が低く、結果として顕著な性能低下を引き起こす可能性があります。これらの課題に対処するため、本研究では「CodeT5+」と名付けられる、コード処理に特化したエンコーダー・デコーダー型LLMのファミリーを提案します。CodeT5+は、下流タスクの多様性に応じてモジュールを柔軟に組み合わせられる構造を採用しており、幅広いコード関連タスクに適応可能です。この柔軟性は、事前学習フェーズにおける目的の混合(mixture of pretraining objectives)によって実現され、事前学習と微調整の間に生じる乖離(pretrain-finetune discrepancy)を軽減します。本モデルで用いられる事前学習目的には、スパンノイズ除去(span denoising)、対照学習(contrastive learning)、テキスト-コードマッチング、および因果的言語モデル学習(causal LM pretraining)が含まれ、単モーダルおよびバイモーダルな多言語コードコーパスを対象としています。さらに、我々はモデルのスケーリングを効率的に行うため、学習からゼロから行うのではなく、事前に訓練済みの汎用LLMを固定(frozen)状態で初期化する手法を提案し、また自然言語による指示(instruction)に合わせたチューニング(instruction-tuning)の可能性を検討しています。本研究では、ゼロショット、微調整、および指示チューニングという異なる設定において、20以上のコード関連ベンチマークでCodeT5+を包括的に評価しました。その結果、コード生成・補完、数学プログラミング、テキストからコードへの検索といった多様なコード関連タスクにおいて、最先端(SoTA)の性能を達成しました。特に、16Bパラメータ規模の指示チューニング済みCodeT5+は、他のオープンソースコードLLMと比較して、HumanEvalコード生成タスクにおいて新たな最先端性能を達成しました。