はじめに
先日 AWS Summit Japan 2024に参加させていただき、AWS Code Catalystの概要とAmazon Qについて今後のパフォーマンスなど詳しく話を伺わせていただく機会がありました。そこでSWEベンチなるベンチマークの存在を知り、興味を持ったので軽く概要を記事にまとめてみようと思いました。
SWE-benchとは何か
SWE-bench(Software Engineering Benchmark)は、ソフトウェアエンジニアリングタスクの評価のための新しいベンチマークデータセットです。SWE-benchは実際のソフトウェア開発過程で発生する課題に対して、AIモデルの性能でどこまで対応できるかの測定を目的としており、以下の特徴があります。
- 実際のGitHub IssueとPull Request(現在は主にPythonに関連したPyPlパッケージ関連のリポジトリがターゲット)から抽出された現実的なタスク解決を試みる
- 単なるコード生成だけでなく、バグ修正や機能実装など多様なタスクを含む
- 自動評価システムによる客観的な性能測定
つまり現段階の最新大規模言語モデル(AI)が、 現代のリアルなアプリ開発やソフトウェアエンジニアリングの問題をどこまで人間と同じようにこなせるかを定量的に測ることを目的としたベンチマークスコアということです。
大まかな評価手順
- Githubからリポジトリをクローンする
- リポジトリに紐づくIssue情報をAIが読み取り、Issueを解決するPull Requestを作成する
- PRに対してUnit Testを行い、実際に機能毎にテストが合格しているかを判定し、数値化する
データセットの内容
Hugging Face内のページ
https://huggingface.co/datasets/princeton-nlp/SWE-bench
にもあるように
SWE-benchは、GitHubの問題を自動的に解決するシステムの機能をテストするデータセットです。データセットは、人気のある12のPythonから2,294のIssueとPull Requetsのペアを収集します。評価は、PR後の動作を参照ソリューションとして使用して、ユニットテスト検証によって実行されます。
実際存在するリポジトリからIssueとPull Requestの組み合わせを取得し、人間がPRした後の動作を"参照(教師)"としながらユニットテストによる検証を行うデータセットになっています。
データセット内のデータ例(拡大して閲覧推奨)
各項目値の意味
-
repo: (str) - GitHubからのリポジトリ所有者/名前識別子。
上記データではsqlfluff/sqlfluffであり、SQLのLintツールであり、SQLコードの品質を向上させるためのツールのリポジトリを表す - instance_id: (str) - フォーマットされたインスタンス識別子。通常、repo_owner__repo_name-PR-number の形式で表す。
- base_commit: (str) - ソリューションPR(AIが生成したPR)が適用される前のリポジトリHEADのコミットハッシュ。
- patch: (str) - 問題を解決するためのPRで生成されたパッチ(テスト関連のコードを除く)実際はソースコードの変更(diff)を表しています。
- test_patch: (str) - ソリューションPRによって提供されたテストファイルのパッチ。
- problem_statement: (str) - Issueのタイトルと本文。
- hints_text: (str) - ソリューションPRの最初のコミット作成日の前に作成された問題へのコメント。
- created_at: (str) - プルリクエストの作成日。
- version: (str) - 評価実行に使用するインストールバージョン。
- FAIL_TO_PASS: (str) - PRによって解決されたテストのセットを表すJSON形式の文字列のリスト。
- PASS_TO_PASS: (str) - PRの適用前後に通過すべきテストを表すJSON形式の文字列のリスト。
- environment_setup_commit: (str) - 環境設定とインストールに使用するコミットハッシュ。
2024年6月末時点でのベンチマークスコア
SWE benchデータセットはFull(フルデータセット)とLite(軽量データセット)の2種類存在しており、
Fullの方のランキングでは現時点でFactory.aiプロジェクトのCode Droidが1位となっており、Amazon Q Developer Agentは3位に位置しています。
現段階ではランキング上位のモデルでもタスク解決率は20%に届いておらず、まだまだAIだけで世の中のリアルなアプリ開発やソフトウェアエンジニアリングの問題を解決できるとは言えません。
そもそもSWE benchの目的としてAIが開発者の効率を上げるための手助けとなることを期待していると思うので、今後技術が進化していくと更にモデル間の競争が激化しパフォーマンス向上が期待できます。
下記ウェブサイトから現在の状況が見れますので、チェックしてみてください。
https://www.swebench.com/
将来どのように役立つか
SWE-benchは以下の点で将来的に大きな貢献が期待されます
-
AI開発の加速: より優れたAIモデルの開発を促進し、ソフトウェア開発の効率を向上させる
-
教育への応用: プログラミング学習者に実践的な課題を提供し、スキル向上を支援する
-
業界への影響: 企業がAIツールを評価し、最適なソリューションを選択する際の指標とする
-
研究の発展: ソフトウェアエンジニアリングとAIの融合領域における研究を促進する
AIの完全自立対応の未来は来るか
SWE-benchのような取り組みは、AIのソフトウェア開発能力を飛躍的に向上させる可能性を秘めていますが、完全な自立対応には課題が残されています:
- 複雑な問題解決: 高度な抽象化や創造性を要する問題への対応
- コンテキスト理解: プロジェクト全体の目的や要件の深い理解
- 倫理的判断: セキュリティやプライバシーに関する適切な判断
これらの課題を克服するには、さらなる技術革新と人間との協調が必要です。将来的には、AIが多くのタスクを自動化しつつ、人間の創造性や判断力と補完し合う「AI支援型開発」が主流になると予想されます。
SWE-benchは、その未来への重要な一歩と言えるでしょう。
参考URL
SWE bench GithubリポジトリのREADME
https://github.com/princeton-nlp/SWE-bench/blob/main/docs/README_JP.md
SWE ベンチマークパブリックリーダーボード
https://www.swebench.com/
論文"Can Language Models Resolve Real-World GitHub Issues?"
https://arxiv.org/abs/2310.06770