Scout Before You Route: Predicting Task Success and Token Count from a Small LLM Prefill
Organizations: Mila – Quebec AI Institute, Université de Montréal · ServiceNow AI Research · Mila – Quebec AI Institute, Polytechnique Montréal · Canada CIFAR AI Chair
Abstract
Routers typically choose a model per query by trading predicted correctness against cost. Most price each model at a fixed cost, as if every query used the same number of output tokens, but the output length of reasoning models varies by an order of magnitude across queries. When is per-query cost worth predicting? What factors drive cost? How cheaply can predictions be made? We predict both the success probability and the output length of candidate models from the prefill activations of a single small frozen LLM, the scout. With reasoning candidates, perfect per-query cost knowledge would save 29-61% of spending on eight of nine datasets, and much less with non-reasoning candidates on the same problems. On those eight datasets, our predicted costs save 9-33% at matched accuracy relative to median-length pricing, up to 69% of what perfect knowledge would save. They are significantly cheaper than each estimator we reimplemented or adapted from published work, including ZeroRouter and a MixLLM-style predictor, on a majority of datasets. Output length depends mostly on the problem. On most math and code datasets, harder problems are longer, so predicted success alone prices cost nearly as well. On knowledge and mixed-format datasets they are not, and predicted success falls well behind a probe trained on length. The probe keeps most of its saving with 20 labelled problems and transfers without labels to four of seven new benchmarks. On a mixture of all nine benchmarks, it saves 22% beyond pricing each benchmark at its own median length. Savings stop growing at about a 2B scout, so above 4B a larger scout costs more than it adds.
Figures & tables
| Cost saved by ours vs. | LCB | Omni | MMLU-Pro | AIME | APPS | BCB | CC | SuperGPQA | BBEH |
| External estimators | |||||||||
| Median pricing | 27.8 | 31.5 | 23.4 | 14.9 | 16.8 | 0.4 | 9.4 | 33.0 | 23.5 |
| Mean pricing | 27.8 | 34.3 | 25.8 | 15.0 | 13.3 | 3.8 | 9.4 | 35.8 | 22.7 |
| Prompt-feature GBM | 20.7 | 25.8 | 20.0 | 14.2 | 9.7 | 1.4 | 8.0 | 19.1 | 2.1 |
| MixLLM-style embeddings | 16.2 | 24.7 | 15.5 | 13.5 | 16.4 | 1.7 | 4.3 | 15.7 | 1.3 |
| CARROT-style NN | 17.5 | 23.2 | 14.3 | 15.0 | 15.3 | 0.4 | 4.0 | 20.9 | 0.3 |
| LCB | Omni | MMLU-Pro | AIME | APPS | BCB | CC | SGPQA | BBEH | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Candidate | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ | Acc. | $ |
| 20b, low | 51.8 | 0.13 | 41.9 | 0.21 | 62.1 | 0.05 | 57.2 | 0.26 | 58.4 | 0.12 | 45.3 | 0.06 | 49.1 | 0.14 | 31.0 | 0.05 | 23.3 | 0.11 |
| 20b, medium | 68.2 | 0.65 | 57.5 | 1.20 | 69.4 | 0.18 | 88.3 | 1.18 | 73.5 | 0.74 | 48.3 | 0.12 | 70.6 | 0.85 | 36.0 | 0.24 | 34.8 | 1.21 |
| deepseek-v4-flash | 89.3 | 0.90 | 71.3 | 1.66 | 86.2 | 0.33 | 98.3 | 0.86 | 84.1 | 1.05 | 52.1 | 0.11 | 84.6 | 1.15 | 67.9 | 0.47 | 64.7 | 1.54 |
| 120b, medium | 82.1 | 0.64 | 60.3 | 1.12 | 77.2 | 0.23 | 89.5 | 1.23 | 79.3 | 0.72 | 53.4 | 0.18 | 78.4 | 0.84 | 46.0 | 0.27 | 45.3 | 1.45 |
| 120b, high | 89.5 | 3.73 | 66.6 | 4.57 | 79.3 | 0.90 | 97.0 | 3.14 | 85.7 | 4.48 | 53.0 | 0.64 | 85.9 | 4.87 | 47.8 | 1.48 | 54.7 | 5.26 |
| Dataset | Domain | Test | Headroom | Ours vs. median | Capture | Ours vs. length |
|---|---|---|---|---|---|---|
| from pred. success | ||||||
| LiveCodeBench | code | 341 | 40.1 | 27.8 [13.9, 35.6] | .69 | 3.2 |
| Omni-MATH | math | 1,000 | 51.9 | 31.5 [23.9, 37.7] | .61 | |
| MMLU-Pro | knowledge | 6,500 | 58.0 | 23.4 [17.1, 29.0] | .40 | 18.4 |
| AIME 1983–2024 | math | 281 | 29.2 | 14.9 [10.8, 20.1] | .51 | 4.3 |
| APPS | code | 377 | 34.4 | 16.8 [4.2, 30.4] | .49 |
| Cost estimator, 20 training problems | LCB | Omni-MATH | MMLU-Pro | SuperGPQA | BBEH |
| Ours (cost probe) | 22.3 † | 22.5 † | 11.9 | 19.5 | 14.2 |
| Prompt-feature GBM | 1.3 | 2.4 | 2.2 | 8.8 | 2.9 |
| MixLLM-style embeddings | 3.1 | 2.0 | 0.6 | 5.9 | 3.2 |
| CARROT-style NN | 1.4 | 3.8 | 2.3 | 10.3 | 6.2 |
| ZeroRouter pricing | 1.2 | 5.6 | 0.1 | 1.9 | 1.1 |
| Our ablation: length from predicted success | 22.3 | 26.7 | 3.2 | 7.0 | 10.0 |
| Ours, | Ours, | Prefill-router rule, | Best external, | |
|---|---|---|---|---|
| Sources target | in-domain | transferred | transferred | transferred |
| APPS, BCB, CC LCB | 27.8 | 26.0 | 9.4 | 3.0 (ZeroRouter) |
| LCB, BCB, CC APPS | 16.8 | 31.5 | 9.0 | 23.7 (ZeroRouter) |
| Omni, AIME, SGPQA, BBEH MMLU-Pro | 23.4 | 26.6 | 1.1 | 18.1 ( NN) |
| Omni, MMLU-Pro, SGPQA, BBEH AIME | 14.9 | 14.3 | 1.7 | 6.8 ( NN) |
| Omni, MMLU-Pro, AIME, BBEH SuperGPQA | 33.0 | 22.5 | 11.2 | 17.6 (MixLLM) |
| Cost saved relative to | |||
| Router prices each candidate by | one median | median per benchmark | Ours vs. it |
| Baselines | |||
| One median length (the prefill router’s rule) | – | 13.9 | 31.8 [26.1, 36.7] |
| Median length per benchmark | 12.2 | – | 22.4 [16.5, 27.6] |
| Mean length per benchmark | 13.5 | 1.5 | 21.2 [15.9, 26.0] |
| MixLLM-style embeddings | 18.9 | 7.6 | 16.0 [11.1, 19.9] |
| LiveCodeBench | Omni-MATH | MMLU-Pro | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Scout | vs. median | $/1k | Ours vs. it | vs. median | $/1k | Ours vs. it | vs. median | $/1k | Ours vs. it |
| Qwen3-0.6B | 24.1 | .005 | 3.5 | 27.9 | .002 | 6.5 | 17.0 | .002 | 4.8 |
| Qwen3-1.7B | 27.6 | .007 | 1.6 | 29.0 | .003 | 3.4 | 19.4 | .004 | 2.5 |
| Qwen3-4B | 25.5 | .015 | 2.7 | 28.1 | .006 | 3.5 | 20.6 | .007 | 3.2 |
| Qwen3-8B | 24.9 | .022 | 3.6 | 30.7 | .008 | 0.6 | 20.7 | .011 | 6.2 |
| Qwen3-14B | 28.8 | .036 | 7.3 | 27.9 | .014 | 9.8 | 20.1 | .018 | 10.5 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Train / calib. / test | Samples per candidate | Samples per candidate | Test acc. | Median output | 90th/10th | |
|---|---|---|---|---|---|---|
| Dataset | problems | (train) | (test) | (%) | per candidate | pct. ratio |
| LiveCodeBench ( Jain et al., 2024 ) | 441 / 110 / 341 | 16/12/8/6/3 | 16/12/8/6/3 | 52–90 | 0.7–7.0k | 11–121 |
| Omni-MATH ( Gao et al., 2024 ) | 275 / 75 / 1,000 | 4/3/3/2/2 | 1/1/1/1/1 | 42–71 | 1.4–10.5k | 10–126 |
| MMLU-Pro ( Wang et al., 2024 ) | 550 / 150 / 6,500 | 4/3/3/2/2 | 1/1/1/1/1 | 62–86 | 0.2–1.6k | 7–29 |
| AIME 1983–2024 ( Zhang, 2025 ) | 513 / 139 / 281 | 4/3/3/2/2 | 4/3/3/2/2 | 57–98 | 1.8–7.7k | 4–16 |
| APPS ( Hendrycks et al., 2021 ) | 489 / 123 / 377 | 1/1/1/1/1 | 1/1/1/1/1 | 58–86 | 0.6–10.3k | 10–91 |
| Headroom | Ours vs. median | Capture | ||||
|---|---|---|---|---|---|---|
| Test set | reasoning | non-reas. | reasoning | non-reas. | reasoning | non-reas. |
| LiveCodeBench (341) | 40.1 | 21.4 | 27.8 | 12.1 (5.4) | .69 | .53 |
| Omni-MATH (1,000) | 53.1 | 40.5 | 31.5 | 6.8 (1.6) | .59 | .17 |
| MMLU-Pro (2,000) | 59.8 | 26.0 | 25.8 | 0.8 (2.2) | .43 | .03 |
| Cost saved by ours vs. | LCB ( =341) | Omni-MATH ( =1,000) | MMLU-Pro ( =6,500) |
|---|---|---|---|
| Median pricing | 27.8 [13.9, 35.6] | 31.5 [23.9, 37.7] | 23.4 [17.1, 29.0] |
| Mean pricing | 27.8 [19.5, 34.6] | 34.3 [26.3, 40.1] | 25.8 [20.4, 30.6] |
| Prompt-feature GBM | 20.7 [10.1, 29.0] | 25.8 [15.9, 35.0] | 20.0 [13.9, 25.9] |
| MixLLM-style embeddings | 16.2 [7.9, 22.6] | 24.7 [15.9, 31.7] | 15.5 [10.6, 20.5] |
| CARROT-style NN | 17.5 [7.9, 25.4] | 23.2 [14.9, 29.3] | 14.3 [8.3, 20.7] |
| ZeroRouter pricing, our success | 16.8 [9.4, 25.3] | 21.0 [10.5, 31.6] | 22.0 [16.5, 27.9] |
| Headroom | Ours vs | Ours best | Splits ahead | Ours length | Splits ahead / | |
|---|---|---|---|---|---|---|
| Dataset | median | external | of all external | from pred. success | behind | |
| LiveCodeBench | 45.9 3.0 | 34.1 3.5 | 12.9 2.9 | 10 | 2.2 2.6 | 4 / 0 |
| Omni-MATH | 41.7 2.5 | 19.0 3.3 | 12.0 3.8 | 9 | 1.4 2.6 | 1 / 2 |
| MMLU-Pro | 58.6 1.0 | 25.8 2.3 | 16.3 2.6 | 10 | 12.8 6.1 | 10 / 0 |
| AIME | 28.5 2.7 | 15.3 2.6 | 9.5 2.6 | 10 | 2.5 2.4 | 3 / 0 |
| APPS | 39.5 6.0 | 15.6 4.9 | 3.9 2.8 | 0 | 1.5 2.4 | 0 / 0 |
| Without | Pair: gpt-oss-20b low and | |||||||
|---|---|---|---|---|---|---|---|---|
| Dataset | All five | 20b low | 20b med. | deepseek | 120b med. | 120b high | deepseek | 120b high |
| LiveCodeBench | 27.8 | 6.5 | 28.4 | 22.4 | 27.8 | 28.3 | 29.0 | 32.1 |
| Omni-MATH | 31.5 | 16.2 | 32.6 | 15.2 | 31.8 | 32.0 | 33.8 | 22.4 |
| MMLU-Pro | 23.4 | – | 25.5 | 17.0 | 24.0 | 23.2 | 27.0 | 25.9 |
| AIME | 14.9 | 0.2 | 14.9 | 7.0 | 15.0 | 14.9 | 15.0 | 10.7 |
| APPS | 16.8 | 1.3 | 15.0 | 11.5 | 11.6 | 19.3 | 16.3 | 9.1 |
| Dataset | 20b low | 20b med. | deepseek | 120b med. | 120b high |
|---|---|---|---|---|---|
| LiveCodeBench | .74 / .85 / .99 | .71 / .96 / .99 | .72 / .92 / .99 | .73 / .95 / .99 | .75 / .94 / .98 |
| Omni-MATH | .68 / .60 / .84 | .66 / .86 / .89 | .71 / .79 / .95 | .72 / .87 / .94 | .73 / .88 / .95 |
| MMLU-Pro | .61 / .42 / .71 | .52 / .68 / .79 | .26 / .62 / .92 | .62 / .76 / .88 | .45 / .67 / .89 |
| AIME | .41 / .52 / .89 | .44 / .85 / .93 | .50 / .79 / .97 | .49 / .86 / .92 | .51 / .87 / .94 |
| APPS | .56 / .69 / – | .54 / .80 / – | .63 / .86 / – | .63 / .88 / – | .68 / .88 / – |
| BigCodeBench | .69 / .66 / .97 | .61 / .86 / .96 | .47 / .71 / .95 | .71 / .85 / .97 | .45 / .67 / .88 |
| LCB | Omni-MATH | MMLU-Pro | SuperGPQA | BBEH | |
| Ours, =10 | 19.5 | 22.7 | 19.2 | 26.7 | 9.7 |
| ZeroRouter onboarding, =10 | 7.3 | 17.4 | 9.8 | 13.7 | 3.4 |
| CARROT-style NN, =10 | 5.2 | 11.4 | 9.5 | 13.8 | 8.3 |
| Median length + base rate, =10 | 13.6 | 7.6 | 2.1 | 9.0 | 1.8 |
| Ours ZeroRouter, =10 | 12.2 [ 5.9, 26.7] | 5.2 [ 7.9, 18.2] | 9.4 [ 0.9, 19.3] | 13.0 [ 1.8, 25.9] | 6.3 [ 11.5, 29.1] |
| Ours ZeroRouter, =50 | 9.6 [3.0, 18.7] | 5.1 [ 5.4, 17.7] | 8.1 [ 0.5, 16.5] | 12.8 [4.8, 20.8] | 4.8 [ 1.5, 10.5] |
| Ours vs. embedding cost probe | Ours vs. | Success AUC | ||||
|---|---|---|---|---|---|---|
| Dataset | Ridge | MixLLM | NN | text router | text | ours |
| LiveCodeBench | 16.9 | 19.5 | 23.1 | 12.0 | .75 | .83 |
| Omni-MATH | 15.8 | 18.8 | 19.6 | 18.5 | .73 | .83 |
| MMLU-Pro | 15.8 | 13.3 | 12.0 | 12.6 | .64 | .72 |
| AIME | 9.7 | 10.1 | 12.2 | 6.8 | .65 | .78 |
| APPS | 6.5 | 11.7 | 9.0 | 5.0 | .75 | .84 |
| Omni-MATH | MMLU-Pro | |||||
| Scout | vs. median | Ours vs. it | vs. median | Ours vs. it | ||
| Qwen3-0.6B | .61 | 27.9 | 7.3 [ 0.6, 15.7] (5) | .33 | 17.0 | 8.2 [0.5, 14.0] (8) |
| Qwen3-1.7B | .65 | 29.0 | 4.1 [ 5.5, 13.4] (4) | .40 | 19.4 | 5.2 [ 1.5, 12.1] (7) |
| Qwen3-4B (original) | .66 | 28.1 | 3.6 [ 6.5, 12.3] (4) | .44 | 20.6 | 3.4 [ 2.5, 7.4] (8) |
| Phi-4-mini (3.8B) | .64 | 28.2 | 7.6 [ 2.4, 16.5] (7) | .43 | 21.4 | 2.0 [ 6.2, 6.8] (5) |
| Granite-3.3 (2.5B) | .62 | 25.1 | 5.6 [ 3.3, 14.6] (3) | .38 | 18.2 | 7.1 [2.1, 12.8] (10) |
| Ours vs median, | Best external | Ours best | Ours length | Ours: frontier loss | |
|---|---|---|---|---|---|
| Dataset | deployed | (deployed) | external | from pred. success | / target miss |
| LiveCodeBench | 31.3 (7.0) | MixLLM 14.9 | 16.3 (10) | 2.7 (2) | 2.4 / 2.6 |
| Omni-MATH | 35.0 (2.2) | ZeroRouter 13.9 | 21.5 (10) | 1.6 (0) | 2.0 / 5.3 |
| MMLU-Pro | 31.1 (4.8) | NN 18.1 | 12.7 (10) | 17.3 (10) | 1.0 / 2.3 |
| AIME | 19.6 (2.1) | ZeroRouter 10.3 | 9.4 (9) | 2.2 (2) | 1.3 / 4.6 |
| APPS | 23.3 (5.1) | ZeroRouter 15.8 | 5.2 (1) | 2.4 (0) | 9.4 / 3.6 |