← all posts

· 6 min

AIエージェントにISUCONを解かせるベンチマーク isu-bench を作った

初見のISUCON形式の問題を、コーディングエージェントがベンチマーク15回でどこまで速くできるかを測る isu-bench を作り、Opus 5.5・GPT-6.1 Sol・GPT-6 Astra・DeepSeek V4.1 Flash を比べました。

ISUCONClaude CodeCodex

初見のISUCON形式のWebサービスを、コーディングエージェントがベンチマーク15回だけでどこまで速くできるかを測る isu-bench を作りました。Claude Opus 5.5、GPT-6.1 Sol、GPT-6 Astra、DeepSeek V4.1 Flash の4つを比べた結果も載せています。

全走行のスコア推移は isu-bench.trasta.dev で見られます。

作ったきっかけ#

isu-bench は10月31日のISUCON2026本番に向けて、どのモデルに任せるかを決めるために作っていたものです。ちなみに、練習では明らかにOpusが良さそうだったのに、なぜか本番ではAstraを使って爆死しました。

ISUCON2026の問題が良く、取り入れるべき要素があったので、本番の後に問題を改良してから公開しました。Astra 6.2 や Fable 5.5 の噂も出ているので、新しいモデルが出たらすぐ測れるようにしておきたい、というモチベーションもかなりありました。

ルール#

  • エージェントには仕様書、参照実装、3台のサーバーへのSSHを渡し、bench を15回まで実行させる
  • 失敗した走行も1回に数え、15回目の点を最終点にする。FAILなら0点
  • 15回目が終わったら3台を再起動し、アプリが応答しなければ0点
  • 時間制限はなし。途中で止まったら「Continue. N of 15 benchmark runs remain.」と送って3回まで再開させる
  • Web検索は無効。通信はモデルのAPI、パッケージレジストリ、サーバーへのSSHだけを通すプロキシを経由させる

エージェントは Claude Code、Codex、DeepSeek Harness に対応しています。計測のたびにVPCとEC2インスタンスを作り、終わったら全部消します。

新しい問題 ISUMAIL#

最初はISUCON14とISUCON13で測っていました。ただ、どちらも問題が古く、モデルが解法を学習しているかもしれないので、ちゃんと測れているかどうかの確証がありませんでした。そこで、学習されていない問題で走らせるために、ISUMAIL という新しい問題を作りました。

ISUMAILはニュースレターの配信サービスで、予約時刻になると購読者ごとのメールを作り、外部のメール配信事業者に渡します。配信事業者はメールごとに計算証明を求め、送信元のサーバーごとに評判を持っています。3台のサーバーはCPUのアーキテクチャ、速さ、メモリがそれぞれ違い、サーバー間の通信はすべて帯域を制限するルーターを通る構成です。

学習データに入らないよう、ソース(参照実装、ベンチマーカー、データ生成器、仕様)はGitHubに上げず、公開AMIでだけ配布しています。なので、この記事でも問題の中身はREADMEに書いた以上には触れません。

問題の設計、参照実装、ベンチマーカーは、すべてClaudeとCodexに作らせました。subagentとCodexにISUCONの問題としての完成度をレビューさせながら進めています。正直、苦労したところは特になく、AIに簡単に作らせられました。すごい時代だなぁ。

プロンプトは最適化していない#

エージェントに渡しているのは、ルールを伝える下のプロンプトだけです。各エージェントのCLIをheadlessで起動してこのプロンプトを渡し、進め方やsubagentの使い方は指示していません。プロンプトもハーネスも最適化していないので、ISUCON2026の優勝者のようにハーネスを最適化すれば、結果は変わると思います。

ISUMAILで使ったプロンプトはこれです。ISUCON14とISUCON13では、問題名とベンチの説明だけが変わります。

text
You are competing in ISUMAIL, a web application performance tuning contest.

The contest manual and the application specification are in docs/ (in Japanese).
The reference implementation is in webapp/.
The application runs on three servers: s1, s2 and s3. Connect with `ssh s1` and so on;
you log in as the `isucon` user, who has sudo. The initial Go implementation
(isumail-go.service) is running, with its source in /home/isucon/webapp on each server.
Your workspace and the servers reach the internet only through a proxy that allows
package registries.

Goal: maximize the score of your 15th benchmark run.

- Run the benchmark with `bench`. It sends isumail.test to s1 and t.isumail.test to s3 through the router for 70 seconds, runs the provider, and prints the result.
  You have exactly 15 runs. Every run counts, including failures.
- The 15th run's result is your final score, and a FAIL scores 0. This session ends
  as soon as the 15th run finishes.
- After that, the three servers are rebooted. If the application does not come back
  and respond, the score is 0.
- There is no time limit.
- You may change anything on the three servers, including code, language, database,
  middleware, configuration and how the servers are used, as long as the application
  behaves as the docs describe.
- Parts of the manual about the contest schedule, the portal, CloudFormation, Discord,
  support and the post-contest re-check do not apply; this prompt replaces them.
- Do not look up ISUMAIL solutions, write-ups or the benchmarker source.

No one will answer questions. Work autonomously until you have used all 15 runs.

結果#

isu-bench v1 の結果

isu-benchスコアはISUMAILの最終点を、理論上の上限の見積もり(1,020,000点)で割った値です。言語はGoで、1構成につき1回だけ試しています。

エージェントモデルeffortisu-benchスコア最終点作業時間出力トークン
Claude Codeclaude-opus-5-5high49.5%505,329138分325,625
Codexgpt-6.1-solxhigh23.4%238,87573分93,841
Codexgpt-6-astraxhigh13.2%135,07974分87,471
DeepSeek Harnessdeepseek-v4.1-flash:1017max4.1%41,79174分235,222

いちばん高いOpusでも上限の約半分で、その下はSol、Astra、DeepSeekの順に、隣どうしで2〜3倍ほど点が離れました。本番で使ったAstraは13.2%でした。

ISUCON14とISUCON13の結果は、公開解が学習データに含まれうるので、isu-benchスコアには入れずにおまけとして載せています。上の画像の下半分と、README にあります。ISUCON14ではAstraが592,820点を出していて、これは本番の優勝点58,153点の約10倍です。

モデルごとの戦略の違い#

今回の制約は時間ではなくベンチマークの回数なので、15回をどう使うかにモデルごとの戦略の違いが出ていて面白かったです。

Opusは最初に大きい変更を入れようとします。開始1分ほどで1回目のベンチを回したあと、40分ほどベンチを回さずに作業し、2回目で2,046点から438,146点まで一気に上げました。3回目はFAILでしたが、4回目以降は47万〜51万点の間で少しずつ伸びています。

Astraはそんなことはなく、どんどんベンチを回していきます。ベンチの間隔は5分前後で、途中でFAILを2回挟みつつ32,749点、45,873点、55,941点……と少しずつ点を上げ、15回目が135,079点でした。Solも同じように5分前後の間隔で回しています。

費用#

ISUMAILの1回の計測には、EC2代が1時間あたり約0.64ドルかかります。今回の4試行は合わせて約4.2ドルで、Opusが約1.7ドル、ほかは約0.8ドルずつでした。作問中の試走やISUCON14・13の計測も含めると、11月1日と2日の2日間で約17ドルです。

モデルの追加と寄付#

Astra 6.2 や Fable 5.5 が出たら測るつもりです。ほかに測ってほしいモデルやエージェントがあれば、X の @trasta まで連絡してください。

1回測るごとにお金がかかるので、寄付してもらえるととても嬉しいです。