[論文レビュー] A Systematic Evaluation of Large Language Models of Code
本稿では、12のプログラミング言語にまたがる249GBのマルチリンガルコードのみを用いて訓練された、パラメータ数27億のオープンソース言語モデルであるPolyCoderを提示する。Codexが大多数の言語で優れた性能を示す一方で、C言語ではPolyCoderがCodexよりも低いパープレキシティを達成しており、特定の言語においては、専用のマルチリンガルコード事前学習が、特許を取得したモデルを上回ることを示している。
Large language models (LMs) of code have recently shown tremendous promise in completing code and synthesizing code from natural language descriptions. However, the current state-of-the-art code LMs (e.g., Codex (Chen et al., 2021)) are not publicly available, leaving many questions about their model and data design decisions. We aim to fill in some of these blanks through a systematic evaluation of the largest existing models: Codex, GPT-J, GPT-Neo, GPT-NeoX-20B, and CodeParrot, across various programming languages. Although Codex itself is not open-source, we find that existing open-source models do achieve close results in some programming languages, although targeted mainly for natural language modeling. We further identify an important missing piece in the form of a large open-source model trained exclusively on a multi-lingual corpus of code. We release a new model, PolyCoder, with 2.7B parameters based on the GPT-2 architecture, which was trained on 249GB of code across 12 programming languages on a single machine. In the C programming language, PolyCoder outperforms all models including Codex. Our trained models are open-source and publicly available at https://github.com/VHellendoorn/Code-LMs, which enables future research and application in this area.
研究の動機と目的
- 複数のプログラミング言語にわたって、特許を取得したモデル(例:Codex)およびオープンソースモデル(例:GPT-J, GPT-Neo, GPT-NeoX, CodeParrot)を体系的に評価すること。
- 現在のオープンソースモデルの限界、特に多様なプログラミング言語をカバーする大規模なマルチリンガルコード専用モデルの不足を特定すること。
- このギャップを埋めるために、12言語にまたがる249GBのマルチリンガルコードコーパスに特化して訓練された2.7BパラメータのモデルであるPolyCoderを訓練・公開すること。
- モデルの性能を、内在的(パープレキシティ)および外在的(HumanEval)ベンチマークで比較し、モデルサイズ、学習データ構成、推論温度の影響を分析すること。
- 特許を取得したモデル(例:Codex)の代替手段として、透明性があり、一般に公開された代替手段を提供することで、コード言語モデル分野における研究のアクセス性と再現可能性を高めること。
提案手法
- GPT-2アーキテクチャを用いて、GitHubリポジトリから選別された12言語の249GBのコードから成るコーパスに特化して、1台のマシン上でPolyCoderを訓練した。
- データ漏洩を避けるために、未学習のテストセットを備えた12言語の新しい評価データセットを構築し、パープレキシティを測定した。
- 自然言語からのコード生成を評価するHumanEvalで、異なる推論温度を用いてPass@1、Pass@10、Pass@100を測定した。
- 各言語の同一のホールドアウトテストセット上で、モデル間のパープレキシティを比較し、内在的言語モデル品質に焦点を当てた。
- 生成品質に与える影響を分析するため、モデルサイズ(160M〜20Bパラメータ)、学習データミックス(自然言語+コード対コード専用)、推論温度を検証した。
- 多様性と正確性のトレードオフを評価するため、推論時に温度サンプリングを用い、モデルサイズにわたるアブレーションスタディを実施した。
実験結果
リサーチクエスチョン
- RQ1複数のプログラミング言語にわたって、オープンソースコード言語モデルは特許を取得したCodexモデルと比較してどの程度の性能を示すか?
- RQ2大規模でオープンソース、かつコード専用のマルチリンガル言語モデルは、既存のオープンソースモデルおよび一部の特許を取得したモデルを、特定の言語で上回ることができるか?
- RQ3学習データ構成、特に自然言語とコードの混合データで学習するか、コード専用で学習するかが、下流タスクのパフォーマンスに与える影響は何か?
- RQ4モデルサイズおよび学習期間が、コード生成および言語モデルタスクのパフォーマンスに与える影響は何か?
- RQ5推論温度がコード生成の品質に与える影響は何か?また、異なる評価指標に最適な設定は何か?
主な発見
- PolyCoderはC言語において、Codexおよび他のテストされたすべてのモデルよりも低いパープレキシティスコアを達成しており、C言語のパープレキシティにおいてCodexを上回った。
- HumanEvalベンチマークでは、高い温度設定がPass@100スコアを向上させる一方で、低い温度設定はPass@1のスコアを向上させる傾向にあり、多様性と信頼性のトレードオフが顕在化している。
- Go、Java、Rust、Scala、TypeScriptのような言語では、モデルサイズを2.7Bから20B(GPT-NeoからGPT-NeoX)に引き上げてもパフォーマンス向上がほとんど見られず、モデル容量の飽和が示唆された。
- C、JavaScript、Rust、Scala、TypeScriptにおいて、PolyCoderは同サイズのGPT-Neo 2.7Bを上回った。これは、特定の言語においてはコード専用事前学習が混合事前学習よりも効果的である可能性を示している。
- Pythonにおけるパープレキシティのトレンドは、HumanEvalパフォーマンスと強く相関しており、パープレキシティが下流のコード生成品質を推定するための信頼性があり、低コストなプロキシであることが示された。
- Codexの優れたパフォーマンスは、訓練データがテストデータを含んでいる可能性がある(正確な訓練セットが不明)ため、過大評価されている可能性がある。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。