本記事は「さくらのAI Engine」3,000リクエスト使い切りチャレンジキャンペーンのための記事となります。よろしくね。
はじめに
2022年前後、LLMの推論能力は学習時に確定するのではなく推論時に投入される計算量によってスケーリングするという研究12が進展しました。要はChain of Thought(CoT)やReasoning Modelですね。これは後にTest-Time Compute(TTC, 推論時追加計算)3として認知されるようになります。最近ではFuguやOpenRouterによる実装がありますがこれらも広義のTTCと言えるでしょう。本記事ではTTCを複数のAPIコールを組み合わせることで3,000リクエストを使い潰…再現を試みます。
準備
TTC自体についてはClaude Codeで実装したものがありますので、今回はこのttc-proxyを前提、オラクルとして使用します。これはOpenAI API互換のプロキシーとして動作し、内部でTTCを構成して上流の言語モデルにアクセスするものとなります。(ここに瑕疵があると以降の話は破綻しますのであしからず。)
「さくらのAI Engine」で使用する場合は、アクセストークンとBASE URLを次のように設定します。
export UPSTREAM_API_KEY=“xxx”
export UPSTREAM_BASE_URL=“https://api.ai.sakura.ad.jp”
アクセストークンや利用量(リクエスト数)についてはこちらで確認できます。(要サインイン)
https://secure.sakura.ad.jp/ai/account-tokens
https://secure.sakura.ad.jp/ai/usages/overview
実行方法ですが、まずttc-proxyを起動しておき、
$ uv run ttc-proxy --port 8080
評価ツールを上記のttc-proxyに向けて実行します。ここの--modelオプションは後述するTTCのネットワーク構成を指定します。
$ uv run ttc-eval --dataset mmlu_pro --model ttc-gptoss120b-single --base-url http://localhost:8080 --limit 30 --concurrency 4 --out results.jsonl
構成
前述のttc-proxyは以下のノードのネットワークを記述することにより所望のTTCを構成することができます。
- solver: 元の質問に回答します。n>1の場合は複数候補を後段に渡します
- critic: 前段の情報のレビューを行い、結果を後段に渡します
- judge: 前段の情報から最善解を生成し後段に渡します
- final: 前段の情報を整形し、最終回答を出力します
それぞれのノードにはモデルが紐付いており、1回の動作でネットワーク内のすべてのノード、つまり複数モデルへのリクエストが発生します。
モデルについては「さくらのAI Engine」の「基盤モデル無償プラン」で利用可能な言語モデルを確認してみましましょう。
この中では以下のモデルが使えそうですね。
- gpt-oss-120b
- gemma-4-31B-it
- Preview/Qwen3.6-35B-A3B
- llm-jp-3.1-8x13b-instruct4
評価
評価には以下の扱いやすいデータセットを用います。
- MMLU-Pro: 総合的な知識+推論力
- AIME 2024: 多段階の数学的推論
- GPQA Diamond: 科学知識+推論力
これらのデータセットから各30問を用いて何問解けるか評価していきましょう。
Single Pass
Single Passは以下のような構成で、一度に2リクエストを消費しますが、TTCの動作確認を兼ねてこれをベースラインとしました。
| Model | MMLU-Pro | AIME 2024 | GPQA Diamond |
|---|---|---|---|
| gpt-oss-120b | 25/30 | 25/30 | 21/30 |
| gemma-4-31B-it | 25/30 | 26/30 | 26/30 |
| Qwen3.6-35B-A3B | 27/30 | 26/30 | 25/30 |
| llm-jp-3.1-8x13b-instruct4 | 16/30 | 0/30 | 8/30 |
Consumed requests: 4x2x3x30=720
以降は結果が良好なgemma-4-31B-itとQwen3.6-35B-A3Bを詳しく見ていきます。
Self-Consistency(後期型)
Self-Consistency(後期型)です。これは単一モデルを複数回利用して異なる推論経路の生成を期待しています。critic, judgeを採用しているため後期型となります。
| Model | MMLU-Pro | AIME 2024 | GPQA Diamond |
|---|---|---|---|
| gemma-4-31B-it (n=2) | 25/30 (25/30) | 28/30 (26/30) | 25/30 (26/30) |
| Qwen3.6-35B-A3B (n=2) | 27/30 (27/30) | 27/30 (26/30) | 29/30 (25/30) |
Consumed requests: 2x5x3x30=900
MMLU-Proには変化がないようですが、AIME 2024とGPQA Diamondには改善が見られますね。
Ensemble
Ensembleは異なるモデルを利用して異なる推論経路の生成を期待しています。後段にはQwen3.6-35B-A3Bを採用しています。
| Model | MMLU-Pro | AIME 2024 | GPQA Diamond |
|---|---|---|---|
| Qwen3.6-gemma4 | 26/30 (27/30) | 27/30 (26/30) | 27/30 (26/30) |
Consumed requests: 1x5x3x30=450
こちらも同様の傾向がありますが、Self-Consistencyよりは効果が薄いようです。
Ensemble with Self-Consistency
最後にSelf-Consistency とEnsembleを組み合わせてみましょう。
| Model | MMLU-Pro | AIME 2024 | GPQA Diamond |
|---|---|---|---|
| Qwen3.6-gemma4 (n=2) | 27/30 (27/30) | 28/30 (26/30) | 27/30 (26/30) |
Consumed requests: 1x7x3x30=630
それぞれのSelf-Consistencyのスコアの中間くらいの結果ですね。
まとめ
いかがでしたか?今回の結果は3,000リクエストの制約もあり再現性に乏しい可能性がありますが、モデルに閉じたTTCでは総合的な知識量を要求するMMLU-Proで効果が得られない等それらしい結果が得られました。
ところで評価対象のモデルにPreview/Kimi-K2.6が無いことに気がついた方がいるかもしれません。実はベースラインの評価時に429 Too Many Requestsエラーが出てしまい評価から外しました。特に表示は無いようですが連続リクエスト数やプレビュー枠の制限があるのかもしれません。また、その他のモデルでも想定リクエスト数とダッシュボード上のリクエスト数で0.5%程度の乖離(リトライ)が見られました。適切なレートリミットとエラーハンドリングを行うことが今後の課題となります。
最後に、ここまでのリクエスト数は2,921、そのうち221は上記エラー中断等によるロスとなります。残りの79はOpen WebUIのバックエンドとして消費される予定です。
-
N. Shinn, F. Cassano, E. Berman, A. Gopinath, K. Narasimhan, and S. Yao. Reflexion: Language Agents with Verbal Reinforcement Learning, 2023. URL https://arxiv.org/abs/2303.11366. ↩
-
A. Madaan, N. Tandon, P. Gupta, S. Hallinan, L. Gao, S. Wiegreffe, U. Alon, N. Dziri, S. Prabhumoye, Y. Yang, S. Gupta, B. P. Majumder, K. Hermann, S. Welleck, A. Yazdanbakhsh, and P. Clark. Self-Refine: Iterative Refinement with Self-Feedback, 2023. URL https://arxiv.org/abs/2303.17651. ↩
-
C. Snell, J. Lee, K. Xu, and A Kumar. Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters, 2024. URL https://arxiv.org/abs/2408.03314. ↩