Skip to main content
CoreWeave のサンドボックスを使用して、SWE-bench の評価を並列実行します。このガイドは、言語モデルによるコード修正のパフォーマンスを大規模に評価したい機械学習の実務者や研究者を対象としています。読み終える頃には、CoreWeave の多数のサンドボックスで SWE-bench の評価を同時に実行し、分析用の結果をローカルに書き出せる環境が整います。

この機能

SWE-bench は、言語モデルが実際のリポジトリ内の実際のバグを修正できるかどうかをテストします。各タスクはパッチを適用し、テストスイートを実行して、修正が機能するかどうかを確認します。 Docker を使用してローカルで SWE-bench を実行できますが、マシンのリソースによって制限されます。CoreWeave のサンドボックスを使用すると、CoreWeave インフラストラクチャー上で大規模に評価を実行できます。自分で管理することなく、数十または数百のサンドボックスを同時に起動できます。スクリプトは GHCR 上の Epoch AI のレジストリからビルド済みのイメージをプルするので、ローカルでの Docker ビルド手順は必要ありません。

セットアップ

評価を実行する前に、以下の手順に従って必要なツールのインストールと認証の設定を完了してください。
  1. Python SDK と評価に必要な依存関係をインストールします。
  2. 評価スクリプトのサンプルが含まれるリポジトリをクローンします。
  3. CWSANDBOX_API_KEY に CoreWeave API アクセストークンを設定します。[API-ACCESS-TOKEN] は、ご自身のトークンに置き換えてください。
評価スクリプトは、デフォルトで CoreWeave の認証を使用します。Forge の APIキーを使用する場合は、はじめにに記載されている明示的な認証のセットアップ手順に従い、取得した auth の値を examples/swebench/run_evaluation.py 内の SandboxDefaults(...) に渡してください。

クイックスタート

規模を拡大する前に、単一インスタンスの run から始めて、環境、認証情報、GHCR へのネットワークアクセスがすべて正常に機能することを確認してください。gold オプションは、データセット内の正しいことが確認済みの修正を使用します。
この run は成功します。これにより、サンドボックスがイメージをプルし、パッチを適用して、テストスイートをエンドツーエンドで実行できることを確認できます。

並列で実行

複数のインスタンスを同時に実行します。
このコマンドは 8 個のサンドボックスを起動し、それらを並列で実行します。すべてがパスするのは、gold パッチが正しい修正であるためです。

モデルの予測を評価する

カスタムモデル出力をテストするには:
予測ファイルはインスタンス ID をパッチに対応付けます。

オプション

リソースを調整する

デフォルトはサンドボックスあたり 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 の形式

この形式は、標準的な SWE-bench ツールと互換性があります。

トラブルシューティング

パッチの適用に失敗する

APPLY_PATCH_FAIL がログに表示される場合、パッチが不正な形式であるか、誤ったコミットを対象としているか、空白の問題がある可能性があります。ローカルで git apply --check を実行して問題を確認してください。インスタンス ID が予測と一致していることを確認してください。

テストのタイムアウト

テストスイートによっては、30分以上かかる場合があります。モデルが生成したコードに無限ループが含まれる可能性もあります。必要に応じて --timeout を増やすか、テスト出力を確認してどこで停止しているかを確認してください。

イメージプルエラー

イメージプルエラーでコンテナーが起動しない場合、原因としては、インスタンス ID が Epoch AI のレジストリに存在しないか、ネットワークの問題で ghcr.io に接続できないことが考えられます。インスタンス ID が SWE-bench データセットに含まれていることを確認してください。

関連項目

最終更新日 2026年10月15日