コーダーの皆さん、おめでとうございます!マイクロソフトは、LLMを使用して168のコードベースにわたるコーディングタスクを自動化するCodePlanを提案している。

コーダーの皆さん、おめでとうございます!マイクロソフトは、LLMを使用して168のコードベースにわたるコーディングタスクを自動化するCodePlanを提案している。

大規模なモデルの場合、ローカライズされたエンコード タスクに優れています。

しかし、タスクが複数の相互依存ファイルにまたがる場合、LLM では解決できません。

これに応えて、Microsoft の研究者は、CodePlan と呼ばれるタスクに依存しないニューラル ネットワーク フレームワークを設計しました。

写真

論文アドレス: https://arxiv.org/pdf/2309.12499.pdf

この論文では、CodePlan は、プログラム分析、計画、LLM を組み合わせた新しいアプローチである、複数ステップの編集チェーンを統合しています。

CodePlan がどのように設計されているかを詳しく見てみましょう。

CodePlan: ビッグモデル + プランニング

パッケージの移行、静的分析またはテストからのバグ レポートの修正、コード ベースへの型ヒントやその他の仕様の追加などのソフトウェア エンジニアリング アクティビティには、コード リポジトリ全体の広範な編集が伴います。

研究者たちはこれらの活動を「リポジトリレベルのエンコーディングタスク」と定義しました。

GitHub Copilot や Code Whisperer などのコーディング ツールには大規模なモデル機能が搭載されているため、プログラマーがローカライズされたコーディングの問題を解決するためのソリューションを提供しています。

しかし、現実には、リポジトリ レベルのコーディング タスクはより複雑であり、リポジトリ内のコードは相互に依存しており、リポジトリ全体がヒントに含めるには大きすぎる可能性があるため、LLM では直接解決できません。

この研究では、Microsoft チームはライブラリ レベルのコーディングを計画の問題として捉え、CodePlan と呼ばれるタスクに依存しないフレームワークを提案しました。

CodePlan は、複数のステップの編集チェーン (プラン) を組み合わせ、各ステップでコードの場所にある LLM を呼び出します。そのコードの場所のコンテキストは、リポジトリ全体、以前のコード変更、およびタスク固有の指示から取得されます。

CodePlan は、増分依存性分析、変更影響分析、および適応型計画アルゴリズムの新しい組み合わせに基づいています。

写真

下の図に示すように、複雑なライブラリ API の変更点が示されています。Microsoft の研究者の作業は、この変更に応じてコード ベースを移行することです。

写真

図 3 の左側は、複素数ライブラリを使用するコード ベースの関連部分を示しています。

具体的には、Create.cs ファイル内のメソッド func はライブラリ内の create_complex メソッドを呼び出し、Process.cs ファイル内のメソッド Process.cs は func を呼び出します。

写真

研究者は、図 1 のタスク記述と func 本体を LLM に渡して、図 3 の右側に示すように、変更された func コードを生成しました。

ご覧のとおり、LLM は create_complex API の呼び出しを正しく編集し、2 つの浮動小数点値のタプルではなく Complex 型のオブジェクトを返すようにしました。

この編集により、メソッド func のシグネチャが変更され、Complex 型のオブジェクトが返されるようになったことに注意してください。

これには、図 3 の左下隅に示すように、Process.cs の process メソッドなど、メソッド func の呼び出し元を変更する必要があります。プロセス メソッドの本体に適切な変更を加えないと、コードはビルドされません。

図 3 の右下には、プロセス メソッドを適切に変更した例が示されています。これにより、リポジトリを一貫した状態にして、コンパイル時にエラーが発生しないようにすることができます。

研究者にとって重要なことは、編集に必要な派生仕様を自動的に生成できる「リポジトリレベルのエンコーディングシステム」を構築することです。

LLM によって駆動されるライブラリ レベルのエンコーディング タスクは次のように定義されます。

写真

CodePlan フレームワークでは、入力はリポジトリ、自然言語命令または一連の初期コード編集を通じてシード仕様を表現するタスク、正確性オラクル、および LLM です。

CodePlan は、各ノードが LLM が満たす必要のあるコード編集義務を識別し、エッジがソース ノードの後に​​ターゲット ノードを満たす必要があることを示すプラン グラフを構築します。

CodePlan はコードの編集を監視し、プラン グラフを適応的に拡張します。

計画のすべてのステップが完了すると、リポジトリは Oracle によって分析されます。 Oracle がリポジトリを検証すると、タスクは完了します。エラーが見つかった場合、エラー レポートは次回のプラン生成および実行のシード仕様として機能します。

写真

さらに、CodePlan アルゴリズムは依存関係グラフも維持します。図 4 は依存関係グラフの構造を示しています。

写真

SOTA をリフレッシュ

研究者らは、パッケージ移行 (C#) と一時的なコード編集 (Python) という 2 つのリポジトリ レベルのタスクにおける CodePlan の有効性を評価しました。

各タスクは複数のコードベースで評価され、各コードベースでは複数のファイル (2 ~ 97 ファイル) への相互依存的な変更が必要になります。

写真

これまで、これほど複雑なコーディング タスクは LLM を使用して自動化されたことはありませんでした。

結果は、CodePlan がベースラインよりも真実と一致しており、エラーのないビルドや正しいコード編集などの有効性チェックに 5/6 のリポジトリが合格できることを示しています。

要約すると、CodePlan は、複雑なライブラリ レベルのコーディング タスクを自動化し、生産性と精度の両方を向上させる有望なアプローチを提供します。

多くの課題にうまく対処し、効率的で信頼性の高いソフトウェア エンジニアリング プラクティスの新たな可能性を切り開きます。

参考: https://twitter.com/adityakanade0/status/1706291449674039711

<<: 

>>:  ICCV'23論文表彰式は「神々の戦い」! Meta Split EverythingとControlNetが両方とも選出され、審査員を驚かせた記事がもう一つありました

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

今後3~5年で、機械学習の人材が不足する領域はどこでしょうか?

基本的な紹介学術的なニーズを別にすれば、ほとんどの人はアルゴリズムの研究に従事するのではなく、第一線...

SantaGPTが来ました! GPT-4は完璧なクリスマスの実現をお手伝いします

気がつけば、もう2024年も最後の月になってしまいました。今年のテクノロジー業界の申し子として、Op...

...

危険信号:Google AIはマスクを着用した女性を口をテープで塞いでいる女性と認識

FuninUSA によれば、Microsoft、Google、IBM のビジョン システムが現実世界...

...

...

GitHub のネイティブ AI コード生成ツール Copilot が Visual Studio 2022 を正式にサポート

現在、Microsoft、OpenAI、GitHub が共同で作成した AI プログラミング支援ツー...

Far3D: 150m まで直接到達、視覚的な 3D オブジェクト検出への新しいアプローチ (AAAI2024)

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AWSクラウド上で機械学習を輸出するための黄金のツールであるAmazon SageMakerが正式に中国に上陸

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

圧縮アルゴリズムについての簡単な説明

1. 冒頭発言お久しぶりです。白部長です。研究であれ実践であれ、既存の問題、解決策、ボトルネック、突...

マルウェア検出のための機械学習

[[188537]] 1. はじめに機械学習は、コンピュータにデータから学習する能力を与え、現在イ...

...

...