Skip to main content
QUICK REVIEW

[論文レビュー] Context Composing for Full Line Code Completion

Anton Semenkin, Yaroslav Sokolov|arXiv (Cornell University)|Feb 14, 2024
Speech and dialogue systems被引用数 1
ひとこと要約

本稿では、10億パラメータ未塔のコン pact なデバイス内に搭載されたTransformerモデルを用いて、フルラインコード補完のためのコンテキスト合成技術を提示する。トークン化、スコープに配慮した特別トークン、および戦略的なコード再配置を通じたコンテキスト構成の最適化により、プライバシーを損なわずに低遅延で効率的なコード提案を実現し、開発者の生産性を向上させる。

ABSTRACT

Code Completion is one of the most used Integrated Development Environment (IDE) features, which affects the everyday life of a software developer. Modern code completion approaches moved from the composition of several static analysis-based contributors to pipelines that involve neural networks. This change allows the proposal of longer code suggestions while maintaining the relatively short time spent on generation itself. At JetBrains, we put a lot of effort into perfecting the code completion workflow so it can be both helpful and non-distracting for a programmer. We managed to ship the Full Line Code Completion feature to PyCharm Pro IDE and proved its usefulness in A/B testing on hundreds of real Python users. The paper describes our approach to context composing for the Transformer model that is a core of the feature's implementation. In addition to that, we share our next steps to improve the feature and emphasize the importance of several research aspects in the area.

研究の動機と目的

  • 厳密な遅延およびメモリ制約内で動作する効率的でデバイス内に配置されたコード補完システムの開発。
  • プログラマーの現在の認知的コンテキストを反映するコンテキストの構成により、コード補完の関連性を向上させること。
  • すべてのモデル推論をユーザーのデバイス上でローカルに実行することにより、プライバシー懸念を解決すること。
  • クラウドベースのモデルに依存せずに、単一ラインのコード提案の質を向上させること。
  • モデルサイズを増加させずに性能を向上させるコンテキスト拡張技術の探求。

提案手法

  • スコープの変更を示す特別トークンを用いて、空白文字、コメントの削除、インデントの正規化を含む、ソースコードの前処理。
  • クリーン化されたコードとファイルパスをBPEトークン化し、特別トークンを介して統合して構造化されたプロンプトを生成。
  • ファイル拡張子、ファイルパス、カーサー位置より上のコードを連結することでコンテキストを構築し、モデルの最大コンテキスト長に収まるようにする。
  • 入力プロンプト内の意味的コンponentを分離するために、<LANG_SEP_CHAR> や <METAINFO_SEP_CHAR> などの特別トークンを採用。
  • 関連するコード断片をカーサー位置に近づけるために、クラスメソッドや関数の順序を再配置する戦略を実装。
  • 組み合わせられたコンテキストに基づいて、自己回帰的トークン生成を実行するGPT風およびLLaMA風の自己回帰的Transformerモデルを採用。

実験結果

リサーチクエスチョン

  • RQ1どのようにすれば、デバイス内コード補完システムにおける関連性とパフォーマンスを最大化するコンテキスト構成を最適化できるか?
  • RQ2コード断片の再配置(例:メソッドをカーサーに近づける)が、コード補完の質に与える影響は何か?
  • RQ3どのファイルレベルのコンテキストソース(例:最近開かれたファイル、隣接するタブ)が、コード生成において最も関連性の高いコンテキストを提供するか?
  • RQ4小型のデバイス内モデルに制限された条件下で、リtrieval増強またはコンテキスト拡張技術はどれほど効果的か?
  • RQ510億パラメータ未満のコンパクトモデルにおいて、コード補完の文脈で最も効果的なプロンプト工学戦略は何か?

主な発見

  • コンテキスト合成アプローチにより、実世界の使用状況において、フルラインコード補完提案の関連性が顕著に向上した。
  • 数百人の実際のPython開発者を対象としたA/Bテストにより、本番環境でのフルラインコード補完機能の有用性が確認された。
  • リtrieval増強コンテキストを用いたオフライン実験では、目標指標に10%の顕著な向上が見られた。
  • 関連するメソッドをカーサーに近づけるようにコード断片を再配置したが、開発者の直感に合致するにもかかわらず、測定可能な向上は得られなかった。
  • 最近開かれたファイルや隣接するファイルからのリtrieval増強生成およびコンテキスト強化は、将来的な改善に強く期待できる。
  • 10億パラメータ未満のモデルを用いたデバイス内推論は、依然として実現可能で効率的であり、低遅延かつプライバシー保護型のコード補完を可能にしている。

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

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

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

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