[論文レビュー] CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis
CodeGenは自然言語とプログラミングデータで訓練された最大16.1BパラメータのオープンソースLLMをリリース; マルチターンのプログラム合成を実証し、マルチターン・プログラミング・ベンチマーク(MTPB)を導入。
Program synthesis strives to generate a computer program as a solution to a given problem specification, expressed with input-output examples or natural language descriptions. The prevalence of large language models advances the state-of-the-art for program synthesis, though limited training resources and data impede open access to such models. To democratize this, we train and release a family of large language models up to 16.1B parameters, called CODEGEN, on natural language and programming language data, and open source the training library JAXFORMER. We show the utility of the trained model by demonstrating that it is competitive with the previous state-of-the-art on zero-shot Python code generation on HumanEval. We further investigate the multi-step paradigm for program synthesis, where a single program is factorized into multiple prompts specifying subproblems. To this end, we construct an open benchmark, Multi-Turn Programming Benchmark (MTPB), consisting of 115 diverse problem sets that are factorized into multi-turn prompts. Our analysis on MTPB shows that the same intent provided to CODEGEN in multi-turn fashion significantly improves program synthesis over that provided as a single turn. We make the training library JAXFORMER and model checkpoints available as open source contribution: https://github.com/salesforce/CodeGen.
研究の動機と目的
- オープンソースのトレーニングライブラリとチェックポイントを公開することで、大規模コードモデルへのアクセスを民主化する。
- 複数ターンの自然言語仕様が、単一ターンのプロンプトよりもプログラム合成を改善するかを調査する。
- モデルとデータの規模がマルチターンのプログラム合成能力に与える影響を定量的に分析する。
- マルチターン・プログラミング・ベンチマーク(MTPB)を導入・検証し、マルチターン合成性能を評価する。
提案手法
- 自然言語とプログラミング言語の混合コーパス(ThePile、BigQuery、BigPython)で自己回帰型トランスフォーマを訓練する。
- 逐次的な訓練レジームを用いる:ThePileで CodeGen-NL、続いて BigQuery で CodeGen-Multi、最後に BigPython で CodeGen-Mono。
- HumanEvalで単一ターンのプログラム合成を評価し、公開ベースラインおよび Codex 風モデルと比較する。
- マルチターンプpromptフレームワークを提案し、インタリーブされたプロンプトとサブプログラムを用いた115課題の MTPB を構築する。
- プロンプトパープレキシティを、ユーザー意図の理解の代理指標として用いてプロンプト理解を評価する。
- トレーニングライブラリ JAXformer をオープンソース化し、再現性のためのモデルチェックポイントを提供する。
実験結果
リサーチクエスチョン
- RQ1自然言語とコードで訓練された大規模言語モデルは、モデルとデータの規模が拡大するにつれて、出現的なマルチターンのプログラム合成能力を示すことができるか?
- RQ2ユーザーの意図を複数の自然言語ターンに分解することは、単一ターンの仕様と比較してプログラム合成の品質を改善するか?
- RQ3マルチターン・パラダイムは、モデルサイズとコードデータ量全体でどのように機能するか?
- RQ4生成されたプログラムの成功率に対するプロンプトパープレキシティの影響は何か?
主な発見
- CodeGen モデルは Python コード生成タスクでオープンソースのベースラインに対して競争力があるまたは優れた性能を示し、より大きなモノリンガル Python モデルは Codex のいくつかの変種に近づくか上回る。
- 多言語訓練(CodeGen-Multi)は NL のみのモデルに比べ著しい改善をもたらし、Python に焦点を当てたファインチューニング(CodeGen-Mono)が合成性能をさらに向上させる。
- マルチターン・プロンプトは、モデルサイズを問わず、連結された単一ターン・プロンプトよりも合格率を大幅に改善し、特に難しい問題で顕著。
- プロンプトのパープレキシティは成功と相関する:低いパープレキシティのプロンプトは機能的な正確性が高い傾向。
- プログラム合成能力はモデルサイズとデータサイズの増加とともに現れ、マルチターンのコード生成に対するスケーリング法則を示している。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。