「差分を使うべきか、使わないべきか?」効率的なLLMベースのコード編集のための構造対応・適応型出力フォーマット

arXiv cs.CL / 2026/5/1

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisModels & Research

要点

  • 本論文は、LLMによるコード編集で一般的な「フルコード生成」アプローチが非効率であることに加え、編集フォーマット自体がモデル学習で十分に検討されていないと主張しています。
  • 従来のdiff表現は、壊れやすいオフセットや断片的なハンクのせいでLLMが生成しにくく、その結果出力が不自然になりやすいことを明らかにします。
  • これに対処するため、制御構造や関数などの文法的にまとまりのあるユニットの「ブロック単位の書き換え」として変更を表す構造対応diffフォーマット(BlockDiffとFuncDiff)を提案します。
  • さらに、AdaEditという適応型の編集戦略を提案し、LLMが「構造対応diff」と「フルコード」のどちらがトークン効率的かを動的に選べるように学習させます。
  • 実験では、AdaEditが構造対応diffと組み合わさることでフルコード生成と同等の精度を保ちつつ、長いコード編集タスクでレイテンシとコストを30%以上削減できることが示されます。

概要: 大規模言語モデル(LLM)はコード編集にますます利用されている一方で、広く普及している「全文生成」パラダイムには、深刻な効率ボトルネックがあり、低遅延かつ低コストを要求される対話型コーディング支援に課題をもたらしています。モデル能力のスケーリングに主に焦点が当てられているにもかかわらず、編集フォーマット自体はモデル学習においてほとんど見過ごされてきました。本論文ではまず、従来の差分(diff)フォーマットに対する体系的な調査を行い、脆弱なオフセットや分断されたハンク(hunk)が、LLMにとって生成を非常に不自然にしていることを明らかにします。これに対処するために、BlockDiff と FuncDiff の2つの、構造を意識した差分フォーマットを提案します。これらは、制御構造や関数のような文法的に首尾一貫した単位の「ブロックレベルの書き換え」として変更を表現します。さらに、AdaEdit と呼ぶ一般的な適応的編集戦略を提案し、LLMに対して、指定された diff フォーマットと全文コードの間で、最もトークン効率のよいフォーマットを動的に選択するよう学習させます。大規模な実験の結果、構造を意識した差分フォーマットと組み合わせた AdaEdit は、一貫して全文生成と同等の精度を達成し、長いコードの編集タスクにおいて遅延とコストの両方を 30% 以上削減できることが示されます。