🚀 OpenHands Critic Model
OpenHands Critic Modelは、ソフトウェアエンジニアリングのタスクを解決するためのAIエージェントで、SWE-Benchで高いパフォーマンスを達成しています。
🚀 クイックスタート
Research Purpose Only: このモデルは厳密に研究目的でリリースされており、現在OpenHandsアプリケーションとは互換性がありません。このモデルの機能や制限などの詳細情報については、詳細なブログ記事を参照してください。
✨ 主な機能
SWE-BenchとOpenHands
SWE-bench は、大規模言語モデル(LLM)が実世界のソフトウェアエンジニアリングの課題を解決する能力を評価するための最も人気のあるベンチマークです。これは、GitHub上の12の人気のあるPythonリポジトリからの問題とそれに対応するプルリクエストで構成されており、指定された問題を解決するためのコードパッチを生成するようシステムに要求します。私たちが評価した verified サブセットは、人間のソフトウェア開発者によって手動でレビューされ、適切にスコープされた単体テストと明確に指定された問題の説明を持っていることが検証された500の慎重に選択されたテストケースで構成されています。
このベンチマークは現実性が高く、実世界のソフトウェア開発の課題を自律的に解決できるAIエージェントの潜在的な大きな利益があるため、AIコーディングエージェントの能力を測定するためのゴールドスタンダードとして学界や産業界全体で広く使用されています。
私たちは OpenHands というオープンソースのソフトウェア開発エージェントを開発しており、このデータセットでのパフォーマンスは現在60.6%です - それなりに良い結果です!
でも、もっと限界を押し広げるとどうなるのか、私たちは疑問に思いました。
推論時スケーリング:より多くのコンピューティング資源で、より良い結果
私たちのアプローチは、シンプルですが強力なアイデアを活用しています。難しいソフトウェアエンジニアリングのタスクに対して、複数の解決策を試して最良のものを選ぶことで、より良い結果が得られる可能性があります。以下にその仕組みを説明します。
- 各SWE-Benchの問題に対して、OpenHandsエージェントをclaude 3.7 sonnetを使ってサンプリング温度1.0で複数回実行し、複数の解決策を生成して複数のコードパッチを作成します。
- 各解決策を評価し、それが良い解決策かどうかを予測する「批判モデル」を学習させます(このモデルの詳細については後述します)。
- 回帰および再現テストに失敗したコードパッチを除外します。
- 最も高いスコアを持つ軌道から解決策を選択し、最終的な答えとします。
この推論時スケーリングの方法により、基盤となるエージェントモデルや足場を変更することなく、大幅に良い結果を達成することができます。
単一の軌道ロールアウトでの60.6%から、5回の試行で66.4%への対数線形的なパフォーマンスの向上が見られ、これにより私たちの提出物はリーダーボードで1位になります!
より良い批判モデルの構築
複数の解決策の中から最良のものを選ぶというアイデアは、他のSWE-benchの提出物でも試されていますが、これらの戦略は一般的にClaudeのような既存のモデルにプロンプトを与えることに基づいていました。
私たちは、このプロンプトベースの再ランキング戦略ではなく、専用の批判モデルを学習させました。これにより、より効果的な結果が得られることがわかりました。
学習プロセスでは、以下のことを行いました。
- SWE-Gym からエージェントの軌道をロールアウトして、データの漏洩を避けます。
- 単体テストの実行からの軌道レベルの成功信号を各軌道を通じて逆伝播させるために、時系列差分(TD)学習の目的を実装します。
- 報酬値を予測するために、最後の層の上に回帰ヘッドを追加します。
TD学習の目的は、モデルがどの行動が最終的な結果に寄与したかを理解するのに特に強力です。
$$
r_t = \gamma r_{t+1}
$$
ここで、$r_t$ は時間ステップ $t$ での報酬(つまり、エージェントによって生成されたt番目の行動)で、$\gamma$ は割引係数です。このプロセスは、完了した解決策に対して単体テストを実行することで決定される最終報酬 $r_T$ から始まります - すべてのテストに合格した場合は1、不合格の場合は0です。この終端報酬は、軌道を通じて逆伝播され、以前の各ステップは $\gamma$ で割引されます。私たちは $\gamma=0.99$ を使用しています。
私たちは veRL を使って Qwen 2.5 Coder Instruct 32B を批判モデルとして微調整しています。推論時には、修正版のvLLM を使ってこのモデルを評価用に提供しています(面白いことに、OpenHandsエージェント自身がそこの機能的なコードの大部分を書いています)。
私たちは、この批判モデルを huggingfaceで公開 しており、その機能を探索したり、私たちの仕事を基に構築したい研究者のために利用できます。
批判モデルを構築した理由と将来展望
私たちが学習させた批判モデルに投資することを選んだ理由はいくつかあります。
汎化による真の有用性:プロンプトエンジニアリングベースの再ランカーはベンチマークスコアを上げるのに役立つかもしれませんが、実世界での汎化は容易に保証できません。私たちは、十分なデータがあれば、学習させた批判モデルがSWE-Benchを超えた多様なソフトウェアエンジニアリングのシナリオに汎化できると信じています。これにより、日常のコーディングタスクでの実世界の問題を解決するための貴重なツールになります。
将来の改善のための中間報酬の利用:現在の実装は複数の軌道から最良の完全な解決策を選択することに焦点を当てていますが、各軌道全体で予測される中間報酬は、エージェントの能力を向上させるための刺激的な可能性を開きます。
- 1ステップ先読みサンプリング により、各ステップで複数の潜在的な行動を評価し、批判モデルのスコアを使って最も有望な道を選択することができます(実験的なPR)。
- リアルタイムのミス回復 は、私たちが探索しているもう一つの分野で、批判モデルが報酬の低下を識別し、エージェントが解決プロセス中にコースを修正するのを助けることができます(issue)。
私たちは、これらの信号をOpenHandsエージェントの体験により深く統合する作業を積極的に行っており、複数の完全な解決策を生成することが現実的でないシナリオでも、より効率的な支援を可能にすることができます。
今日からOpenHandsを試そう
SWE-Bench Verifiedで最先端の性能を誇るだけでなく、OpenHandsは LiveSWEBench というAIソフトウェアエンジニアのための汚染のないベンチマークでも上位のエージェントです。さらに、OpenHandsは Multi-SWE-Bench という8つの異なるプログラミング言語で評価するSWE-Benchのバリアントで1位を占めています。
全体として、OpenHandsは幅広いタスクに最適なエージェントであると自信を持って言えます!
今日すぐ試してみたい場合は、以下の方法があります。
- OpenHands Cloudから始める:最も簡単な始め方は、完全に管理されたクラウドソリューションを使うことです。これには50ドルの無料クレジットがあり、GitHubとのシームレスな統合、モバイルサポート、コンテキスト凝縮のような最適化がすぐに使えます。
- オープンソースに貢献する:私たちのGitHubリポジトリをスターしたり、issueを開いたり、PRを送ったりして、オープンソースのAIソフトウェア開発のフロンティアを前進させましょう。
- コミュニティに参加する:Slackで私たちとつながり、ドキュメントを読み、最新の開発情報を得ましょう。
私たちは、あなたがOpenHandsで何を構築するかを楽しみにしています!
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。