SWE-Fluxで判明:大規模言語モデルは実行時のコード挙動を正確に推論できないことが多い
何が問題かを調べた論文です。研究者は「大規模言語モデル(LLM)がコードの実行時の挙動をどれだけ正しく推論できるか」を検証しました。結論は慎重で、現時点では多くのケースで正確に答えられない、というものです。評価した中で最も良いモデルでも正答率は37%に留まりました。
研究チームはSWE-Fluxというベンチマークを作りました。これはリポジトリ単位の「動的(実行に基づく)推論」ベンチマークで、12の実際のPythonリポジトリから合計480件の問いを集めています。重要な点は、正解(ゴールドアンサー)を人手や別のLLMで書くのではなく、テストを実際に走らせることで得た実行結果から自動的に採取していることです。
ベンチマークは単一テストに対する問いと複数テストを横断する問いの両方を含みます。扱うテーマは制御フロー、ループ、プログラムの状態、データフロー、例外、プログラム不変条件(ある条件がいつも成り立つかどうか)といった実行に関わる領域です。これは、従来のリポジトリ単位の評価が主に静的理解に偏っていた点と、断片的な関数・スニペット中心の実行評価が多かった点に対する補完です。
実験では5つのLLMを評価しました。モデルは局所的で単純な振る舞い、たとえば不変条件の確認や関数内部だけの制御フロー、簡単なループ、例外処理などは比較的うまく扱えました。一方でデータが関数間を渡るようなデータフロー、関数間(インタープロシージャル)での実行の追跡、正確なプログラム状態の推定、テスト群全体を集約して答える問題などは苦手でした。
追加の取り組みとして、研究者は「オラクル採取(実行結果取得)パイプライン」を使って入力を少し変えることで新しいベンチマーク変種を自動生成する実験も行いました。この手法は選んだ事例のほぼ90%で有効な変種を取り出せました。さらに、その生成した変種は評価したモデルにとって元の事例よりも難易度が上がることが確認されました。
注意点もあります。データは12のPythonリポジトリからの480例に限られます。ゴールドアンサーはテスト実行に依存するため、テストがカバーしていない振る舞いは検出できません。評価したのは5モデルに限られるため、すべてのモデルや言語に当てはまるとは言えません。論文は現状の限界を示すもので、LLMの将来の改善余地を示唆していますが、すぐに実運用での完全な信頼につながるとは主張していません。