SWE-Bench は、実際の GitHub イシューから構築されたベンチマークであり、言語モデルやコーディングエージェントが Python リポジトリにおけるソフトウェアエンジニアリングタスクを解決できるかどうかを評価するために使われる。 タスクの正しさは、ユニットテストと継続的インテグレーション(CI)を用いて確認される。

内容

このベンチマークを提案した論文 SWE-bench:言語モデルは現実の GitHub イシューを解決できるか? は、 その規模を、人気のある 12 の Python リポジトリにまたがり、実際の GitHub イシューとそれに対応する プルリクエストから抽出された 2,294 件のソフトウェアエンジニアリング問題としている。1 つの問題は、 コードベースと、解決すべきイシューの説明をあわせて提示するものであり、評価対象のモデルはそのイシューに 対処するようにコードベースを編集しなければならない。同論文は、この形式が求める作業を、複数の関数、クラス、 さらには複数のファイルにまたがる変更を同時に協調させること、実行環境とやり取りすること、極めて長い コンテキストを処理すること、そして従来のコード生成を超えた推論を行うことだと特徴づけている。

サーベイは、SWE-Bench のタスク構成を 3 つのスコープのレベルに分かれるものと特徴づけている。すなわち、 ユニットテストのみで確認される関数レベルのタスク(タスクの 65%)、テストと CI で確認されるモジュールレベルの タスク(25%)、そして同じくテストと CI で確認されるものの、合否のみに基づく限定的なマルチターンの インタラクションしか伴わないプロジェクトレベルのタスク(10% 未満)である。サーベイの特徴づけでは、 これら 3 種類のタスクのいずれも、サードパーティライブラリの統合やビルドパイプラインの管理を含まない。

来歴

このベンチマークのタスクは GitHub イシューから、それに対応するプルリクエストとあわせて収集されている。 提案論文によれば、データ、コード、リーダーボードは https://www.swebench.com で公開されている。

サーベイは別途、Python ではなく JavaScript を用いる関連ベンチマークである SWE-Bench Multimodal を、 SWE-Bench 本体とは別のデータセットとして挙げている。 エージェント型ソフトウェアエンジニアリング:基盤となる柱と研究ロードマップ は、SWE-Bench から SWE-Bench Verified へ、さらに SWE-Bench Pro へと至る流れを説明している。 SWE-Bench Verified は、一部のタスクが曖昧であったり仕様が不十分であったりするという懸念に対処するために、 OpenAI が SWE-Bench の著者らと共同でリリースした、人手で検証済みの 500 タスクのサブセットであり、 SWE-Bench Pro は、SWE-Bench Verified がデータ汚染にますますさらされるようになった後に OpenAI が推奨した ベンチマークである。

ベンチマークファミリーとリーダーボード

このベンチマーク自身のサイトは、同サイトがベンチマークの一つのファミリーとして提示するもののうち、複数の メンバーについて公式リーダーボードをホストしている。各リーダーボードはモデルの % Resolved(解決された タスクインスタンスの割合)を報告し、オープンウェイトのモデルや、SWE-bench チームが実施または直接確認した 実行結果には印が付けられる。サイトは各メンバーをその規模とともに次のように挙げている。

  • SWE-bench(完全版であり、オリジナルのベンチマーク): 2,294 インスタンス。12 の Python リポジトリから 得られた実際の GitHub イシュー。
  • SWE-bench Lite: 300 インスタンス。より低コストな評価のためにキュレーションされたサブセットで、 2024 年 3 月にリリースされた。
  • SWE-Bench Verified: 500 インスタンス。人手でフィルタリングされた SWE-bench のサブセットで、 2024 年 8 月に OpenAI との協力として発表された。
  • Bash Only: Verified リーダーボードのデフォルト表示で、同じ 500 インスタンスを対象とし、すべての モデルが同一の Mini-SWE-Agent 環境で実行される。
  • SWE-bench Multilingual: 300 インスタンス。9 つのプログラミング言語にわたる 42 のリポジトリから 得られたタスク。
  • SWE-bench Multimodal: 480 インスタンス。視覚的な要素を伴って記述されたイシューで、 2024 年 10 月に導入された。

サイトのニュース一覧には、評価を容易にするために SWE-bench が 2024 年 6 月に Docker 化されたことも 記録されている。ベンチマークとあわせて、サイトは関連するツールや評価を同じファミリーのもとにまとめており、 その中には SWE-Agent、mini-SWE-agent、SWE-smith(ソフトウェアエンジニアリング エージェント向けのモデルを学習させるためのもの)、SWE-ReX、SWE-bench CLI、そして後発の評価である CodeClash と ProgramBench が含まれる。

利用

提案論文が執筆された時点では、このベンチマークでの結果は低かった。同論文は、最先端のプロプライエタリな モデルも著者ら自身がファインチューニングした SWE-Llama も最も単純なイシューしか解決できず、最も性能の 高かったモデルである Claude 2 でもイシューの 1.96% しか解決できなかったと報告している。著者らは、 SWE-Bench での進歩を、より実用的で、知的で、自律的な言語モデルへの歩みと位置づけている。

サーベイは、自らが指摘するベンチマーク面のより広いギャップの一例として SWE-Bench を挙げている。 SWE-Bench はプロジェクトレベルのリポジトリを導入し、評価にユニットテストと CI を活用しているものの、 その範囲は Python に限定され、タスクの大半は関数レベルまたはモジュールレベルであり、プロジェクトレベルの タスクでさえ、実用的なエージェント型システムが扱うことを期待される、現実的でマルチターンかつツールと 統合されたソフトウェアエンジニアリングのワークフローを最小限にしかサポートしていない。

エージェント型ソフトウェアエンジニアリング:基盤となる柱と研究ロードマップ は、SWE-Bench の結果をより深く 検証した複数の研究を引用し、テストに合格するだけでは、エージェントが生成したコードがプロフェッショナルな コードベースにマージできる状態にあることを立証するには不十分であることを示すものとしている。具体的には、 「もっともらしい」修正の 29.6% が、厳密な再テストにおいて振る舞いの退行を持ち込んでいるか誤っていることが 判明した。詳細な手動監査によって、弱い、あるいは表面的な解決策が広く見られることが明らかになった結果、 GPT-4 のパッチの真の解決率は 12.47% から 3.97% に低下した。AI エージェントは、人間の開発者とは異なり、 単一ファイルに限定された表面的なパッチを頻繁に生成した。そして、ユニットテストに合格した多くのパッチが、 スタイルや隠れた退行のために、より広範な CI チェックで失敗した。