Routing Should Pay for Itself: Sparse Supervision for Economical LLM Routing
Organizations: School of Artificial Intelligence, Nanjing University · National Key Laboratory for Novel Software Technology, Nanjing University · SinapisAI · The Hong Kong University of Science and Technology
Abstract
Large language model (LLM) routing reduces serving cost by assigning each query to an appropriate model while preserving response quality. Learning such a router, however, often requires executing multiple candidate models on historical queries to collect query--model quality feedback, creating a nontrivial supervision cost before deployment. Existing work largely focuses on serving-time efficiency, overlooking whether the resulting savings are sufficient to recover this upfront expenditure. We further observe that routing quality often saturates well before all query--model feedback is collected, suggesting that dense supervision can be economically over-provisioned. We propose SaveRouter, a sparse-supervision routing framework that selectively acquires informative model feedback and shares capability information across related queries, while retaining query-level refinement for fine-grained routing. We evaluate routing by jointly accounting for supervision expenditure and subsequent serving-time savings. Across four routing benchmarks, the main setting uses only about 33--41% of available training feedback while maintaining competitive or better routing quality, and reduces the break-even deployment volume by approximately 1.9--9.5 times compared with the fastest conventional router. Further analysis shows that acquiring more supervision is not always economically preferable: the supervision level that minimizes serving cost can differ from the one that achieves the earliest payback. Our code is publicly available at https://github.com/LAMDA-Model-Reuse/SaveRouter.
Figures & tables
| LLMRouterBench | Mixinstruct | |||||||
| Method | CR | SA-BEP | SA-CR@1M | CR | SA-BEP | SA-CR@1M | ||
| EmbedLLM | 0.6094 | 0.5246 | 15.6K | 0.5321 | 0.7488 | 0.9924 | 28.60M | 1.2088 |
| kNN | 0.6230 | 0.3770 | 11.9K | 0.3845 | 0.7484 | 0.9814 | 11.63M | 1.1977 |
| OmniRouter | 0.6218 | 0.3564 | 11.5K | 0.3638 | 0.7435 | |||
| RMSoftmax | 0.6126 | 0.6328 | 20.2K | 0.6403 | 0.7495 | 0.9893 | 20.19M | 1.2056 |
| TRouter | 0.6145 | 0.5221 | 15.6K | 0.5295 | 0.7488 | 1.0000 | ||
Appendix figures & tables15 assets
Supplementary material from the paper’s appendix.
Appendix
| Hyperparameter | Symbol | Value |
| Global prior parameter | 1 | |
| Global prior parameter | 1 | |
| Acquisition prior strength | 10 | |
| UCB exploration coefficient | 0.35 | |
| Additive-prior Ridge weight | 10 | |
| Final shrinkage strength | 40 |
| Benchmark | Training groups | New-query assignment |
| LLMRouterBench | 10 task groups | Logistic classifier |
| Mixinstruct | Single global group | Single group |
| MMRBench | 7 dataset groups | Logistic classifier |
| RouterBench | 85 task groups | Logistic classifier |
| Benchmark | #Queries | #Train | #Test | #Models | #Groups | Train Pairs |
| LLMRouterBench | 12,446 | 2,489 | 9,957 | 12 | 10 | 29,868 / 29,868 |
| Mixinstruct | 110,000 | 22,000 | 88,000 | 12 | 1 | 264,000 / 264,000 |
| MMRBench | 10,370 | 2,074 | 8,296 | 10 | 7 | 20,149 / 20,740 |
| RouterBench | 36,497 | 7,299 | 29,198 | 11 | 85 | 80,289 / 80,289 |
| Method | Configuration |
| EmbedLLM | ; 30 epochs; learning rate . |
| kNN | . |
| OmniRouter | top- ; ; 50 epochs. |
| RMSoftmax | 30 linearly spaced cost weights from to ; 300 epochs. |
| TRouter | hidden dimension 256; dropout 0.1; temperature 0.07; 20 epochs. |
| UniRoute | 10 clusters; mapping network trained for 5 epochs. |
| Benchmark | Sup. (%) | CR | SA-BEP | SA-CR@1M | |||
| LLMRouterBench | 1 | 8.33 | 0.621874 | 0.2395 | 44.64 | 1,311 | 0.2405 |
| 2 | 16.67 | 0.631415 | 0.2357 | 85.21 | 2,489 | 0.2376 | |
| 3 | 25.00 | 0.630160 | 0.2228 | 146.69 | 4,213 | 0.2261 | |
| 4 | 33.33 | 0.633825 | 0.2320 | 181.09 | 5.3K | 0.2360 | |
| 6 | 50.00 | 0.627699 | 0.2180 | 241.15 | 6,884 | 0.2234 | |
| 8 | 66.67 | 0.627147 | 0.2260 | 279.86 | 8,071 | 0.2322 |
| Method | CR | SA-BEP | SA-CR@1M | |
| Dense-supervision routers | ||||
| EmbedLLM | 0.776135 | |||
| kNN | 0.795418 | 0.816906 | 4,772,514 | 1.6907 |
| MLP | 0.776705 | |||
| SVM | 0.718650 | |||
| RouteLLM-MF | 0.780365 | |||
| Train/Test | CR | |||||
| SaveRouter | Best Dense | (pp) | SaveRouter | Best Dense | CR | |
| 20/80 | 0.6338 | 0.6230 | +1.08 | 0.2320 | 0.3564 | 34.9% |
| 40/60 | 0.634842 | 0.624665 | +1.018 | 0.1888 | 0.3275 | 42.4% |
| 60/40 | 0.633461 | 0.626029 | +0.743 | 0.2137 | 0.2965 | 27.9% |
| 80/20 | 0.641566 | 0.636145 | +0.542 | 0.1412 | 0.2275 | 38.0% |
| Configuration | CR | SA-BEP | SA-CR@1M | |
| Main: | 0.633825 | 0.2320 | 5,263 | 0.2360 |
| 0.631365 | 0.2182 | 5,171 | 0.2223 | |
| 0.625791 | 0.2208 | 5,188 | 0.2248 | |
| 0.633373 | 0.2517 | 5,402 | 0.2558 | |
| 0.624385 | 0.2430 | 5,340 | 0.2471 | |
| 0.628955 | 0.2024 | 5,068 | 0.2065 |
| Method | |||||
| EmbedLLM | 0.0286 / 7.7K / 0.0360 | 0.0953 / 8.2K / 0.1027 | 0.5246 / 15.6K / 0.5321 | 0.5246 / 15.6K / 0.5321 | 0.5246 / 15.6K / 0.5321 |
| kNN | 0.0863 / 8.1K / 0.0938 | 0.1107 / 8.4K / 0.1182 | 0.1530 / 8.8K / 0.1605 | 0.2490 / 9.9K / 0.2564 | 0.3770 / 11.9K / 0.3845 |
| OmniRouter | 0.1419 / 8.7K / 0.1493 | 0.1618 / 8.9K / 0.1693 | 0.2037 / 9.3K / 0.2112 | 0.2579 / 10.0K / 0.2653 | 0.3564 / 11.5K / 0.3638 |
| RMSoftmax | 0.0285 / 7.7K / 0.0359 | 0.6328 / 20.2K / 0.6403 | 0.6328 / 20.2K / 0.6403 | 0.6328 / 20.2K / 0.6403 | 0.6328 / 20.2K / 0.6403 |
| TRouter | 0.0328 / 7.7K / 0.0402 | 0.1500 / 8.7K / 0.1575 | 0.2447 / 9.8K / 0.2521 | 0.2995 / 10.6K / 0.3069 | 0.5221 / 15.6K / 0.5295 |
| UniRoute | 0.0285 / 7.7K / 0.0359 | 0.1962 / 9.2K / 0.2036 | 0.5583 / 16.8K / 0.5657 | 0.5583 / 16.8K / 0.5657 | 0.5583 / 16.8K / 0.5657 |
| Method | |||||
| EmbedLLM | 0.5000 / 432.7K / 0.7163 | 0.5000 / 432.7K / 0.7163 | 0.9924 / 28.60M / 1.2088 | 0.9924 / 28.60M / 1.2088 | 0.9924 / 28.60M / 1.2088 |
| kNN | 0.5000 / 432.7K / 0.7163 | 0.5000 / 432.7K / 0.7163 | 0.8561 / 1.50M / 1.0725 | 0.8561 / 1.50M / 1.0725 | 0.9814 / 11.63M / 1.1977 |
| OmniRouter | 0.5596 / 491.2K / 0.7759 | 0.5596 / 491.2K / 0.7759 | 0.6292 / 583.4K / 0.8455 | 0.8097 / 1.14M / 1.0261 | / / |
| RMSoftmax | 0.5000 / 432.7K / 0.7163 | 0.5000 / 432.7K / 0.7163 | 0.9893 / 20.19M / 1.2056 | 0.9893 / 20.19M / 1.2056 | 0.9893 / 20.19M / 1.2056 |
| TRouter | 0.5000 / 432.7K / 0.7163 | 0.5000 / 432.7K / 0.7163 | 0.6441 / 607.9K / 0.8604 | 0.9879 / 17.95M / 1.2043 | 1.0000 / / |
| UniRoute | 0.5000 / 432.7K / 0.7163 | 0.5000 / 432.7K / 0.7163 | 1.0000 / / | 1.0000 / / | 1.0000 / / |
| Method | |||||
| EmbedLLM | 1.0000 / / | 1.0000 / / | 1.0000 / / | 1.0000 / / | 1.0000 / / |
| kNN | 0.5503 / 12.2K / 0.5557 | 0.7515 / 22.0K / 0.7569 | 0.9274 / 75.3K / 0.9329 | 1.0000 / / | 1.0000 / / |
| OmniRouter | 0.2911 / 7.7K / 0.2965 | 0.4700 / 10.3K / 0.4755 | 0.6581 / 16.0K / 0.6635 | 0.8215 / 30.6K / 0.8269 | / / |
| RMSoftmax | 1.0350 / / | 1.0350 / / | 1.0350 / / | 1.0350 / / | 1.0350 / / |
| TRouter | 0.2103 / 6.9K / 0.2158 | 0.6730 / 16.7K / 0.6784 | 0.6730 / 16.7K / 0.6784 | 0.6730 / 16.7K / 0.6784 | 0.8396 / 34.1K / 0.8451 |
| UniRoute | 0.8173 / 29.9K / 0.8227 | 0.8173 / 29.9K / 0.8227 | 0.8173 / 29.9K / 0.8227 | 0.8173 / 29.9K / 0.8227 | / / |
| Method | |||||
| EmbedLLM | 0.0742 / 24.8K / 0.0972 | 0.2648 / 31.3K / 0.2878 | 0.9296 / 326.4K / 0.9526 | 0.9296 / 326.4K / 0.9526 | 0.9296 / 326.4K / 0.9526 |
| kNN | 0.0655 / 24.6K / 0.0885 | 0.1443 / 26.9K / 0.1672 | 0.4101 / 39.0K / 0.4331 | 0.7455 / 90.3K / 0.7684 | / / |
| OmniRouter | 0.1617 / 27.4K / 0.1847 | 0.1811 / 28.1K / 0.2040 | 0.3522 / 35.5K / 0.3752 | 0.6616 / 67.9K / 0.6846 | / / |
| RMSoftmax | 0.9865 / 1.70M / 1.0095 | 0.9865 / 1.70M / 1.0095 | 0.9865 / 1.70M / 1.0095 | 0.9865 / 1.70M / 1.0095 | 0.9865 / 1.70M / 1.0095 |
| TRouter | 0.0901 / 25.3K / 0.1131 | 0.3151 / 33.5K / 0.3381 | 0.4450 / 41.4K / 0.4680 | 0.5987 / 57.3K / 0.6217 | / / |
| UniRoute | 0.0741 / 24.8K / 0.0970 | 0.9327 / 341.3K / 0.9557 | 0.9327 / 341.3K / 0.9557 | 0.9327 / 341.3K / 0.9557 | 0.9327 / 341.3K / 0.9557 |
| CR | SA-BEP | SA-CR@1M | ||||
| Benchmark | Cached | Fresh | Cached | Fresh | ||
| LLMRouterBench | 0.6181 | 0.3161 | 10.8K | 114.0K | 0.3235 | 0.3941 |
| Mixinstruct | 0.7482 | 0.9695 | 6.13M | 44.66M | 1.1565 | 2.3329 |
| MMRBench | 0.7448 | 0.9052 | 57.6K | 640.8K | 0.9107 | 0.9660 |
| RouterBench | 0.8053 | 0.9355 | 329.2K | 3.25M | 0.9567 | 1.1449 |
| Benchmark | Arrival | SA-BEP 10 | SA-CR@1M 10 | ||||||||
| LLMRouterBench | Cheap | 254 | 11.92% | 0.6276 | 0.6273 | 0.6230 | 0.2296 | 0.2261 | 0.3564 | 4,921 | 0.2334 |
| Median | 254 | 9.35% | 0.6263 | 0.6340 | 0.6230 | 0.2650 | 0.2287 | 0.3564 | 5,610 | 0.2691 | |
| Expensive | 254 | 10.97% | 0.6339 | 0.6305 | 0.6230 | 0.2606 | 0.2412 | 0.3564 | 3,887 | 0.2635 | |
| Mixinstruct | Cheap | 2,200 | 10.00% | 0.7486 | 0.7496 | 0.7495 | 0.9847 | 0.9516 | 0.9814 | 6,088,547 | 1.0779 |
| Median | 2,200 | 10.00% | 0.7498 | 0.7498 | 0.7495 | 0.9354 | 0.9354 | 0.9814 | 1,257,581 | 1.0166 | |
| Expensive | 2,200 | 10.00% | 0.7498 | 0.7497 | 0.7495 | 0.9368 | 0.9569 | 0.9814 | 1,287,017 | 1.0181 |