この機能
SWE-bench は、言語モデルが実際のリポジトリ内の実際のバグを修正できるかどうかをテストします。各タスクはパッチを適用し、テストスイートを実行して、修正が機能するかどうかを確認します。 Docker を使用してローカルで SWE-bench を実行できますが、マシンのリソースによって制限されます。CoreWeave のサンドボックスを使用すると、CoreWeave インフラストラクチャー上で大規模に評価を実行できます。自分で管理することなく、数十または数百のサンドボックスを同時に起動できます。スクリプトは GHCR 上の Epoch AI のレジストリからビルド済みのイメージをプルするので、ローカルでの Docker ビルド手順は必要ありません。セットアップ
評価を実行する前に、以下の手順に従って必要なツールのインストールと認証の設定を完了してください。-
Python SDK と評価に必要な依存関係をインストールします。
-
評価スクリプトのサンプルが含まれるリポジトリをクローンします。
-
CWSANDBOX_API_KEYに CoreWeave API アクセストークンを設定します。[API-ACCESS-TOKEN]は、ご自身のトークンに置き換えてください。
auth の値を examples/swebench/run_evaluation.py 内の SandboxDefaults(...) に渡してください。
クイックスタート
規模を拡大する前に、単一インスタンスの run から始めて、環境、認証情報、GHCR へのネットワークアクセスがすべて正常に機能することを確認してください。gold オプションは、データセット内の正しいことが確認済みの修正を使用します。
並列で実行
複数のインスタンスを同時に実行します。モデルの予測を評価する
カスタムモデル出力をテストするには:オプション
リソースを調整する
デフォルトはサンドボックスあたり CPU 2 個と 4Gi のメモリです。run_evaluation.py でこれを変更します:
仕組み
このセクションでは、スクリプトの背後にある仕組みを説明します。これにより、ご自身の評価ワークフローに適応させることができます。コンテナーイメージ
Epoch AI は、ビルド済みのイメージを GHCR でホストしています。インスタンスごとに専用のイメージが用意されており、リポジトリは該当するコミットでチェックアウト済み、依存関係もインストール済みで、テスト環境もすぐに使える状態になっています。 イメージの形式:ghcr.io/epoch-research/swe-bench.eval.x86_64.{instance_id}:latest
サンドボックスはこれらのイメージを GHCR から直接プルするため、ローカルでビルドする必要はありません。
評価フロー
各インスタンスは次のステップで処理されます。
ステップ 2~5 と 8 はリモートで実行され、ステップ 1、6、7 はローカルマシン上で実行されます。
並列実行
このスクリプトはThreadPoolExecutor を使用してインスタンスのワークフローを並行して実行します。各スレッドが 1 つのインスタンスを担当し、そのワークフローを進めます。あるインスタンスがテストを実行している間に、別のインスタンスはパッチの適用、さらに別のインスタンスはローカルでの採点や起動を進められます。このように処理を同時に進めることで、高速化を実現します。
結果は、ワークフローが完了するたびに as_completed() を通じて返されます。
クリーンアップ
スクリプトはサンドボックスSession を使用してサンドボックスをトラッキングします。セッションが終了すると (正常終了、例外、または Ctrl+C の場合)、セッションはすべてのサンドボックスをクリーンアップします。
出力
結果は{output-dir}/{run-id}/{model-name}/{instance-id}/ に保存されます:
report の形式
トラブルシューティング
パッチの適用に失敗する
APPLY_PATCH_FAIL がログに表示される場合、パッチが不正な形式であるか、誤ったコミットを対象としているか、空白の問題がある可能性があります。ローカルで git apply --check を実行して問題を確認してください。インスタンス ID が予測と一致していることを確認してください。
テストのタイムアウト
テストスイートによっては、30分以上かかる場合があります。モデルが生成したコードに無限ループが含まれる可能性もあります。必要に応じて--timeout を増やすか、テスト出力を確認してどこで停止しているかを確認してください。
イメージプルエラー
イメージプルエラーでコンテナーが起動しない場合、原因としては、インスタンス ID が Epoch AI のレジストリに存在しないか、ネットワークの問題でghcr.io に接続できないことが考えられます。インスタンス ID が SWE-bench データセットに含まれていることを確認してください。
関連項目
- コマンド実行ガイド:
exec()のパターンについて詳しく説明します。 - クリーンアップのパターン: サンドボックスのライフサイクルを管理する方法について説明します。