Skip to main content
QUICK REVIEW

[論文レビュー] LongCoder: A Long-Range Pre-trained Language Model for Code Completion

Daya Guo, Canwen Xu|arXiv (Cornell University)|Jun 26, 2023
Software Engineering Research被引用数 7
ひとこと要約

LongCoderは、ブリッジトークンとメモリトークンを用いたスパースなTransformerモデルを導入し、コード補完における長大なコードシーケンスを効率的に処理することで、線形計算複雑性を維持しながら、長文脈タスクで最先端のパフォーマンスを達成した。

ABSTRACT

In this paper, we introduce a new task for code completion that focuses on handling long code input and propose a sparse Transformer model, called LongCoder, to address this task. LongCoder employs a sliding window mechanism for self-attention and introduces two types of globally accessible tokens - bridge tokens and memory tokens - to improve performance and efficiency. Bridge tokens are inserted throughout the input sequence to aggregate local information and facilitate global interaction, while memory tokens are included to highlight important statements that may be invoked later and need to be memorized, such as package imports and definitions of classes, functions, or structures. We conduct experiments on a newly constructed dataset that contains longer code context and the publicly available CodeXGLUE benchmark. Experimental results demonstrate that LongCoder achieves superior performance on code completion tasks compared to previous models while maintaining comparable efficiency in terms of computational resources during inference. All the codes and data are available at https://github.com/microsoft/CodeBERT.

研究の動機と目的

  • 標準のTransformerが二次的計算コストに直面する長大なコードファイルにおけるコード補完の課題に対処すること。
  • インポートや関数定義などの重要なコード要素へのグローバルなアクセスを可能にすることで、長文脈コード補完におけるモデル性能を向上させること。
  • 長距離依存関係を捉えることができるが、計算複雑性が線形のままである効率的なアテンションメカニズムを開発すること。
  • 長大なコード例を含む現実的でリアルな長文脈コード例を用いた研究を支援するための新しいベンチマークデータセット(LCC)を構築すること。
  • 全ファイルやプロジェクトにわたるスケーラブルなコード補完を実現するために、グローバルに関連するコード構造を効果的に記憶・取得できること。

提案手法

  • 局所的計算を制限し、複雑性を低減するためのスライディングウィンドウ機構を自己アテンションに導入すること。
  • 定期的な間隔でブリッジトークンを挿入し、局所的コンテキストを集約し、ウィンドウ間での長距離情報伝達を可能にすること。
  • インポート、クラス、関数定義などの高影響度コード要素へのグローバルなアテンションを可能にするためにメモリトークンを組み込むこと。
  • 局所的ウィンドウアテンション、ブリッジトークンの集約、グローバルメモリアテンションを組み合わせたスパースアテンションメカニズムを設計し、効率的な長文脈モデリングを実現すること。
  • 文脈表現を学習するために、マスク言語モデルの目的関数を用いてコードコーパス(CodeSearchNet)上でLongCoderを事前学習すること。
  • 下流のパフォーマンス評価のため、新しく構築されたLCCデータセットおよびCodeXGLUEを用いてLongCoderを微調整すること。

実験結果

リサーチクエスチョン

  • RQ1スパースアテンションメカニズムは、線形計算複雑性を維持しながら、コード補完における長大なコードシーケンスを効果的にモデル化できるか?
  • RQ2ブリッジトークンとメモリトークンの導入により、標準のTransformerと比較して、長文脈コードファイルにおけるコード補完精度がどの程度向上するか?
  • RQ3より長いコンテキストを使用することで、コード補完パフォーマンスがどの程度向上するか。また、推論コストの増加を伴わずにこれを実現できるか?
  • RQ4標準的なコンテキストウィンドウを超える長文脈コード例において、Codexと比較してLongCoderの性能はどの程度か?
  • RQ5より小さな事前学習コーパスで学習されたモデルでも、アーキテクチャの革新により、強力な長大コード補完性能を達成できるか?

主な発見

  • LongCoderは、既存のベンチマークと比較して平均で5倍長いコード例を含むLCCデータセットで、最先端のパフォーマンスを達成した。
  • LCCベンチマークにおいて、LongCoderは標準モデルおよびCodex-512を上回り、モデルがCodexより小さいにもかかわらず、長文脈モデリングの利点を示した。
  • 長距離のインポートや定義に依存するコード(例:ファイルの先頭にインポートされたタイムスタンプ関数)を正しく補完できたのは、LongCoderとCodex-2048のみであった。
  • Javaの事例研究において、LongCoderは局所的ウィンドウの外にあるクラス定義から正しいメソッド呼び出しを正しく予測できたが、Codex-512はコンテキストウィンドウの制限により失敗した。
  • ブリッジトークンとメモリトークンを備えたスパースアテンションメカニズムのおかげで、LongCoderは長文脈を処理しながらも、小さなモデルと同等の推論効率を維持した。
  • メモリトークンを用いたグローバルに関連するコード要素の記憶・取得能力のおかげで、単なるウィンドウベースのアプローチに比べ、長距離依存関係の一般化性能が向上した。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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