Congestion-aware equimarginal MoE router
Implementation & benchmark of arXiv:2608.10373 — The Game of Marginal Utilities
Source paper: The Game of Marginal Utilities arXiv:2608.10373 ⓘ · analyzed Sep 1, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace independent token-to-expert softmax routing with a fixed-budget congestion game. Each token group distributes a fixed routing mass across experts, while the marginal value of an expert decreases as other groups send mass there. Iteratively route toward the highest current marginal utility and exploit sorted-prefix supports to produce sparse, capacity-aware assignments.
Formulas
Mathematical statement
The paper defines player j's allocation x^j=(x_1^j,...,x_n^j) over n projects, with fixed budget \(\sum_i x_i^j=r^j\), nonnegative allocations \(x_i^j\ge0\), and payoff \(F^j(x)=\sum_{i=1}^n a_i x_i^j/(b_i+\sum_{\ell=1}^m x_i^\ell)\). For an MoE router, j is a token group, i is an expert, \(r^j\) is the group's routing mass, \(a_i>0\) is expert affinity, \(b_i>0\) is baseline capacity or load, and \(D_i=b_i+\sum_\ell x_i^\ell\) is total congestion. The own-allocation marginal utility is \(g_i^j=\partial F^j/\partial x_i^j=a_i(D_i-x_i^j)/D_i^2\). At equilibrium, every active expert for group j has equal marginal rate \(g_i^j=c^j\), while every inactive expert has \(g_i^j\le c^j\). The paper also proves that after sorting projects by \(a_i/b_i\), each support is an initial segment and supports are nested across players. This gives a practical prefix-based sparsification rule for routing.
Implementation notes
Integrate the method immediately before MoE dispatch. Partition each minibatch into groups, such as one sequence or a 32-token block, and let each group j have routing budget \(r^j=1\). Convert router logits to positive affinities \(a_{ji}=\exp(s_{ji}/\tau)\), and use expert capacity plus epsilon as \(b_i\). Initialize each row \(x_j\) uniformly on the simplex. For 3-10 iterations, compute \(D_i=b_i+\sum_jx_{ji}\), compute \(g_{ji}=a_{ji}(D_i-x_{ji})/D_i^2\), update \(y_{ji}=x_{ji}+\eta g_{ji}\), and project every row y_j onto \(\{x\ge0:\sum_i x_i=1\}\). Reduce eta or backtrack whenever the batch payoff \(\sum_j\sum_i a_{ji}x_{ji}/D_i\) decreases. For hard dispatch, sort experts for each group by \(a_{ji}/b_i\), retain the smallest prefix reaching the desired top-k mass, and renormalize; use a straight-through estimator during training. The paper supplies the payoff, marginal derivative, simplex constraint, and active/inactive tests. Estimate congestion from the current minibatch or an exponential moving average; tune iteration count, temperature, step size, and threshold empirically. First compare against top-2 Switch routing plus load-balancing loss in a 125M-parameter Transformer with 8 experts on C4 or WikiText-103 at equal expert FLOPs. Record perplexity, expert-load coefficient of variation, overflow/drop rate, routing overhead, and wall-clock throughput. Success is lower overflow and load variance at equal perplexity, or equal perplexity with fewer active experts.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Inconclusive
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 9/10
Built a congestion-aware equimarginal router using projected marginal-utility ascent with payoff backtracking, plus an independent softmax baseline. The mechanism manifested clearly: analytic support transitions matched observed transitions near budgets 0.4142, 1.4142, and 5.8284; the maximum KKT residual was 1.11e-16; and congestion-aware routing reduced expert-load CV and overflow in all five toy load sweeps. This is a promising toy signal, not evidence of an end-to-end MoE or language-model win.
- Agent confidence
- 9/10
- Baseline
- Independent softmax: load CV 0.624, 0.624, 0.626, 0.611, 0.621 and overflow 0.867, 1.730, 3.380, 6.641, 13.576 for 4, 8, 16, 32, 64 groups.
- Idea
- Equimarginal congestion routing: load CV 0.433, 0.435, 0.329, 0.458, 0.453 and overflow 0.524, 1.080, 1.331, 4.502, 8.755 for 4, 8, 16, 32, 64 groups; KKT residual 1.11e-16.
Limitations: Only a small fixed-seed toy allocation experiment was tested. There was no Transformer or MoE language-model training, perplexity comparison, GPU or dispatch-kernel throughput measurement, top-2 dispatch implementation, straight-through estimator, EMA capacity tracking, or large-scale capacity/drop-rate evaluation.
How to run: python3 router_experiment.py > results.json
Stage 2 — Benchmark vs. tuned baseline (arXiv:2608.10373)
No significant difference vs. the tuned baseline (+2.5%, p=0.1379, wins 2 / 8 paired seeds).
- Benchmark
- Congestion_moe_sequence
- Model
- tiny_moe
- Paired seeds
- 8
- Baseline mean
- 0.947
- Idea mean
- 0.9705
- Effect (Δ)
- 0.0235 (+2.5%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1379 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±3.4%
- Mechanism
- Confirmed ✓
- Practical effect
- Inconclusive
- Baseline tuning
- swept over 9 configs
Small custom registered track, tiny four-expert model, 240 training examples, 100 test examples, four epochs, and CPU fallback due to host CUDA initialization failure. Production-scale Transformer/MoE, hard top-k dispatch, overflow/drop rate, throughput, EMA capacity, straight-through routing, and large-scale expert-FLOP parity were not tested.
How to run: CUDA_VISIBLE_DEVICES='' /home/maxwelhelp/main/bin/python3 stage2_bench.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 9/10
The congestion-aware router was implemented and evaluated end-to-end on the registered custom multi-token MoE track. It reduced trained-model expert-load CV substantially, confirming the proposed mechanism, but test MSE was worse than the tuned independent-softmax baseline and the paired permutation test was not significant.
- Baseline
- MSE mean 0.9469610155, std 0.2249618225; best lr=0.006, temperature=0.5.
- Idea
- MSE mean 0.9704978541, std 0.2190361309; best lr=0.006, temperature=0.7. Load-CV delta=-0.2865399508.
Benchmark result
No significant difference vs. the tuned baseline (+2.5%, p=0.1379, wins 2 / 8 paired seeds).
- Benchmark
- Congestion_moe_sequence
- Model
- tiny_moe
- Paired seeds
- 8
- Baseline mean
- 0.947
- Idea mean
- 0.9705
- Effect (Δ)
- 0.0235 (+2.5%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1379 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±3.4%
- Mechanism
- Confirmed ✓
- Practical effect
- Inconclusive
- Baseline tuning
- swept over 9 configs
Small custom registered track, tiny four-expert model, 240 training examples, 100 test examples, four epochs, and CPU fallback due to host CUDA initialization failure. Production-scale Transformer/MoE, hard top-k dispatch, overflow/drop rate, throughput, EMA capacity, straight-through routing, and large-scale expert-FLOP parity were not tested.
How to run: CUDA_VISIBLE_DEVICES='' /home/maxwelhelp/main/bin/python3 stage2_bench.py
Artifacts
- bench_report.json 6.2 KB View Raw
- custom_moe_track.py 0.9 KB View Raw
- report.md 1.5 KB View
- report_bench_2026-09-01T115221.md 4.6 KB View
- results.json 2.3 KB View Raw
- router_experiment.py 5.2 KB View Raw
- stage2_bench.py 7.0 KB View Raw