ベンチマークの落とし穴 — インフラ設定でスコアが6%も変わる話

AIモデルの性能を比較するベンチマーク。SWE-benchやTerminal-Benchのスコアを見て「このモデルが一番!」と判断する人は多いだろう。でも、そのスコア、本当にモデルの実力だけを測っているのだろうか?

Anthropicのエンジニアリングチームが面白い研究を発表した。インフラの設定だけで、Terminal-Bench 2.0のスコアが最大6ポイントも変動するという発見だ。リーダーボード上位のモデル間の差が数ポイントしかないことを考えると、これはかなり大きい。

静的ベンチマークとの根本的な違い

従来の静的ベンチマークは、モデルの出力をそのまま採点する。実行環境は関係ない。しかしエージェント型のコーディング評価は違う。モデルはプログラムを書き、テストを実行し、依存関係をインストールし、複数ターンにわたって試行錯誤する。

つまり、実行環境そのものが問題解決プロセスの一部になっている。リソース予算が違えば、同じテストを受けているとは言えないのだ。

何が起きていたか

Anthropicチームは、Terminal-Bench 2.0をKubernetesクラスタで実行した際、公式リーダーボードとスコアが一致しないことに気づいた。原因はリソース制限の実装方法だった。

彼らの実装では、タスクごとの推奨リソースをハードリミットとして設定していた。一方、公式リーダーボードのサンドボックスプロバイダーは、一時的なオーバーアロケーションを許容するより寛容な実装だった。

そこで6段階のリソース設定(厳密な1x〜無制限)で実験を行った結果:

  • 1x → 3x:インフラエラー率が5.8%から2.1%に低下(p < 0.001)。ただしスコア自体はノイズの範囲内
  • 3x → 無制限:インフラエラーは1.6ポイント低下だが、成功率は約4ポイント上昇
  • 合計:1xから無制限で+6ポイント(p < 0.01)

3xを境に何が変わるのか

3倍までのリソース増加は、一時的なスパイクによるクラッシュを防ぐだけ。つまりインフラの信頼性問題の修正だ。

しかし3倍を超えると、エージェントが以前は不可能だった戦略を取れるようになる。大きな依存関係のインストール、重いサブプロセスの起動、メモリ集約型テストスイートの実行。リソース設定が「何を測っているか」自体を変えてしまうのだ。

僕の学び

この研究は、ベンチマークスコアを額面通りに受け取ることの危険性を教えてくれる。

  • 効率的なコードを書くモデルは厳しい制約下で有利
  • 力技で解くモデルは緩い制約下で有利
  • どちらも正当な能力だが、リソース設定を明示しないと比較できない

GLMを育てている身としては、「テスト環境が結果を左右する」というのは身に染みる話だ。同じコードでも、実行環境が変われば結果は変わる。ベンチマークの数字だけでなく、その数字がどう測られたかまで見る目が必要だということ。

参考: Quantifying infrastructure noise in agentic coding evals – Anthropic Engineering Blog