Skip to main content
QUICK REVIEW

[論文レビュー] InCoder: A Generative Model for Code Infilling and Synthesis

Daniel Fried, Armen Aghajanyan|arXiv (Cornell University)|Apr 12, 2022
Software Engineering Research被引用数 140
ひとこと要約

InCoder は、因果マスキング目的で訓練された統一の6.7Bトランスフォーマーモデルで、コードの合成とインフィリングの両方を実行します。双方向の文脈を使用して、ゼロショットタスクで任意のコード領域をインフィルする一方で、左から右への生成能力を維持します。

ABSTRACT

Code is seldom written in a single left-to-right pass and is instead repeatedly edited and refined. We introduce InCoder, a unified generative model that can perform program synthesis (via left-to-right generation) as well as editing (via infilling). InCoder is trained to generate code files from a large corpus of permissively licensed code, where regions of code have been randomly masked and moved to the end of each file, allowing code infilling with bidirectional context. Our model is the first generative model that is able to directly perform zero-shot code infilling, which we evaluate on challenging tasks such as type inference, comment generation, and variable re-naming. We find that the ability to condition on bidirectional context substantially improves performance on these tasks, while still performing comparably on standard program synthesis benchmarks in comparison to left-to-right only models pretrained at similar scale. The InCoder models and code are publicly released. https://sites.google.com/view/incoder-code-models

研究の動機と目的

  • プログラム合成とコード編集(インフィリングの能力)を同時に満たす統一モデルの動機づけ。
  • 双方向の文脈を用いて任意のコード範囲内でインフィリングを可能にする訓練目的の開発。
  • 型推論、ドックストリング生成、変数名変更など多様なタスクにおけるゼロショットのインフィリング性能を評価し、左から右への生成と比較。
  • 双方向インフィリングが左から右への合成能力を犠牲にすることなくタスク性能を向上させることを示す。

提案手法

  • コード内のスパンをランダムにマスクし、それらをシーケンスの末尾へ移動させる因果マスキング目的を採用し、モデルに全シーケンスを予測させる訓練を行う。
  • Pythonを主 focal に、28言語にわたる許諾の高いコードと StackOverflow コンテンツの大規模コーパス上で InCoder-6.7B を訓練する。
  • 推論時には、左から右への生成とインフィリングの両方をサポートし、所望の場所にマスクを挿入して左・右の文脈を条件として置換を生成する。
  • 型推論、コメント生成、変数名変更などのタスクでゼロショットのインフィリングを評価し、因果マスキングインフィリングを左から右への生成およびリランキングベースラインと比較。
  • マスクド言語モデル手法や大規模な左から右へのモデルと比較して、インフィリングの利点を示しつつ合成能力を損なわないことを示す。
  • モデルサイズ、データ、目的関数のアブレーションを含む分析を提供し、インフィリングのベンチマークの主要結果を報告する。

実験結果

リサーチクエスチョン

  • RQ1因果マスキングは、双方向の文脈に条件付けられた任意のコード範囲のゼロショットインフィリングを可能にするか?
  • RQ2インフィリングにおける双方向の文脈は、型推論、ドキュメントストリング生成、変数名変更といったタスクを左から右のベースラインと比較して改善するか?
  • RQ3インフィリングは、標準的な左から右のコード合成の性能を害するか、少なくとも大きく害さないか?
  • RQ4モデルサイズと訓練データの混合がインフィリングと合成能力に与える影響は何か?

主な発見

MethodPass RateExact Match
L-R single48.238.7
L-R reranking54.944.1
CM infilling69.056.3
PLBART41.6
code-cushman-00153.142.0
code-davinci-00163.056.0
  • ゼロショットの因果マスクインフィリングは、インフィリングタスク(単一行および複数行)で左-to-rightベースラインを大きく上回る。
  • 双方向の文脈は型推論と戻り値タイプ予測で高い性能を可能にし、因果マスクインフィリングはベースラインに対して大幅な利得を達成。
  • ゼロショット設定でのドキュストリング生成は、監視付き微調整済みモデルの性能に近づく。
  • インCoder は、インフィリング目的にもかかわらず、標準ベンチマークで左-to-right合成性能を競争力を保つ。
  • 複数言語と StackOverflow データでの訓練は Python のみデータと比較して性能向上に寄与するが、マルチ言語データは Python 特有の結果をわずかに低下させる可能性がある。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。