Raw-Routed Mixture of Adapters: A Causal Intervention for Routing Collapse in Time Series Foundation Models
Abstract
Time series foundation models (TSFMs) commonly adapt to new data by attaching a single trainable head to a frozen backbone, a one-size-fits-all setup that underfits heterogeneous regimes. Replacing the head with a mixture of experts is the standard upgrade, but on instance-normalized backbones (the dominant TSFM design class) it fails: routing entropy collapses to zero and one expert absorbs every input, a failure we call normalization-induced routing collapse. Standard MoE rescue mechanisms do not repair it, because the cause is in the router's input, not its optimization. Pre-encoder normalization strips the statistics a router would need to tell regimes apart. A mutual-information decomposition makes this precise and yields a signal-ratio that, computed before training, predicts dataset vulnerability (Spearman ). Eight causal controls, including a vision-modality replication, isolate instance normalization as the cause. The prescription is a minimal causal intervention: Raw-Routed Mixture of Adapters (RR-MoA), which routes on the raw, pre-normalization input. Under a strictly frozen backbone, RR-MoA wins 54/54 comparisons against the strongest fixed adapter and significantly outperforms LoRA, TRACE, AdaMix, and full fine-tuning. The effect generalizes across six backbones and an imputation task. Frozen RR-MoA also beats full fine-tuning by 12-79% (the Frozen Paradox); two architecturally distinct variants confirm the principle generalizes beyond this specific router.
Figures & tables
| Dataset | Freeze level | RR-MoA | Best single-head | MSE vs. single-head |
|---|---|---|---|---|
| ETTh1 | Frozen (0/8) | |||
| Last-2 (2/8) | ||||
| Last-4 (4/8) | ||||
| ETTm1 | Frozen (0/8) | |||
| Last-2 (2/8) | ||||
| Last-4 (4/8) |
| Dataset | Freeze level | MSE (mean std) | Routing entropy (mean std) |
|---|---|---|---|
| ETTh1 | Frozen | ||
| Last-2 | |||
| Last-4 | |||
| Last-4 (no RevIN) | |||
| ETTm1 | Frozen | ||
| Last-2 |
| # | Control | Hypothesis (rejected) | Observed result verdict |
|---|---|---|---|
| C1 | RevIN ablation | Collapse is intrinsic to MoE itself, not caused by normalization | Entropy – when RevIN disabled (Table 2 ) RevIN is necessary for collapse |
| C2 | MOMENT vs Timer-XL | Architecture, not normalization, causes collapse | Opposite trajectories with identical code, only norm differs (Fig. 3 ) normalization is sufficient |
| C3 | BatchNorm1d / GroupNorm | Collapse is unique to RevIN; other per-window normalizers are immune | All three per-window normalizers collapse identically (App. H ) any norm that strips triggers collapse |
| C4 | 5-family rescue sweep | Optimization problem (load-balance, z-loss, ReLU, expert-choice) | 0/12 configs recover; best is worse than RR-MoA (Table G.3 ) not in the optimizer |
| C5 | AdaMix with raw router | Router architecture is the bottleneck | Same router, swap input only: entropy – ; MSE – (App. G.2 ) the input matters, not the router |
| C6 | SR-MoA raw vs hidden routing | The fix only works for RR-MoA’s specific Conv1d router design | Different router (per-expert sigmoid); hidden-routed – worse (Table F.2 ) raw-input principle generalizes |
| Method | ETTh1 | ETTm1 | Weather | -value |
|---|---|---|---|---|
| Best fixed adapter | ||||
| Best LoRA (108-run sweep) | ||||
| TRACE (frozen) | ||||
| Ind. Ensemble (5 experts) | ||||
| AdaMix (frozen) | ||||
| Full fine-tuning (all unfrozen) |
Appendix figures & tables43 assets
Supplementary material from the paper’s appendix.
Appendix
| Symbol | Meaning |
|---|---|
| Data and task | |
| Input window: time steps, channels | |
| Forecast target at horizon | |
| Model prediction | |
| Per-window mean, scale, RevIN-normalized shape ( ) | |
| Backbone and adapter | |
| Method | Latency (ms) | vs. backbone | Peak GPU (MB) | Adapter params |
|---|---|---|---|---|
| Backbone only | — | — | ||
| Single adapter (Conv1dPool) | K | |||
| RR-MoA (Top-2, ) | K | |||
| SR-MoA (dense ) | K | |||
| Residual-IA + | K | |||
| DLinear (no backbone) | — | K |
| ETTh1 | ETTm1 | Weather | |||||||
|---|---|---|---|---|---|---|---|---|---|
| RR-MoA | Best fix | DLin | RR-MoA | Best fix | DLin | RR-MoA | Best fix | DLin | |
| 96 | |||||||||
| 192 | |||||||||
| 336 | |||||||||
| 720 | |||||||||
| Dataset | Rank | Targets | Head | MSE (mean std) |
| ETTh1 (RR-MoA frozen: ) | ||||
| q,v | linear | |||
| q,v | mlp | |||
| qkvo | linear | |||
| qkvo | mlp | |||
| q,v | linear | |||
| Dataset | Raw router (main) | RevIN router | Degradation ( , worse) |
|---|---|---|---|
| ETTh1 | |||
| ETTm1 | |||
| Weather |
| Dataset | Config | Backbone | MSE ( ) | Entropy |
| Routing input control (frozen, MOMENT-small, 5 seeds): | ||||
| ETTh1 | Raw | MOMENT-sm | ||
| ETTh1 | Hidden | MOMENT-sm | ( ) | |
| ETTh2 | Raw | MOMENT-sm | ||
| ETTh2 | Hidden | MOMENT-sm | ( ) | |
| ETTm1 | Raw | MOMENT-sm | ||
| Dataset | Reinjected MSE | Raw RR-MoA MSE | Entropy | |
|---|---|---|---|---|
| ETTh1 | ||||
| ETTh2 | ||||
| ETTm1 | ||||
| ETTm2 | ||||
| Weather | ||||
| Electricity |
| Dataset | Freeze level | RR-MoA | Best single-head | MSE vs. single-head |
|---|---|---|---|---|
| ETTh2 | Frozen (0/8) | |||
| Last-2 (2/8) | ||||
| Last-4 (4/8) | ||||
| ETTm2 | Frozen (0/8) | |||
| Last-2 (2/8) | ||||
| Last-4 (4/8) |
| Dataset | Freeze level | MSE (mean std) | Routing entropy (mean std) |
|---|---|---|---|
| ETTh2 | Frozen | ||
| Last-2 | |||
| Last-4 | |||
| ETTm2 | Frozen | ||
| Last-2 | |||
| Last-4 |
| Rescue mechanism | MSE (pooled) | Routing | Collapsed | |
|---|---|---|---|---|
| Baseline (Switch LB ) | 46/60 (77%) | 60/60 | ||
| + Entropy reg | ( ) | 44/60 (73%) | 60/60 | |
| + Entropy reg | ( ) | 19/60 (32%) | 60/60 | |
| + Entropy reg | ( ) | 7/60 (12%) | 60/60 | |
| + Z-loss (ST-MoE) | ( ) | 12/60 (20%) | 60/60 | |
| + Z-loss | ( ) | 3/60 (5%) | 60/60 |
| Dataset | Freeze | AdaMix MSE | AdaMix | AdaMix-Raw MSE | AdaMix-Raw |
|---|---|---|---|---|---|
| ETTh1 | frozen | ( ) | |||
| ETTh1 | last-4 | ( ) | |||
| ETTm1 | frozen | ( ) | |||
| ETTm1 | last-4 | ( ) | |||
| ETTm2 | frozen | ( ) | |||
| ETTm2 | last-4 | ( ) |
| Normalizer | Entropy (step 0) | Entropy (step 400) | Collapses? |
|---|---|---|---|
| RevIN (default) | Yes | ||
| BatchNorm1d | Yes | ||
| GroupNorm | Yes | ||
| None (identity) | No |
| Backbone | Cond | Configuration | Entropy | Collapses? | Acc |
| ResNet-18 | A | Unfrozen + InstanceNorm2d | No | ||
| B | Frozen + InstanceNorm2d | No | |||
| C | Unfrozen + No norm | Yes | |||
| D | Unfrozen + BatchNorm2d | No | |||
| ViT-B/16 | E | Frozen + InstanceNorm1d | Yes | ||
| F | Frozen + No norm | No |
| Sparsity ( ) | Active experts | Active expert FLOPs | Test MSE | vs Dense |
|---|---|---|---|---|
| 1/5 | 20% | |||
| (default) | 2/5 | 40% | ||
| 3/5 | 60% | |||
| Dense | 5/5 | 100% | — |
| Expert pool | ETTh1 | ETTm1 | Weather |
|---|---|---|---|
| Canonical (diverse) | |||
| Mean-pool | ( ) | ( ) | ( ) |
| Conv1d-pool | ( ) | ( ) | ( ) |
| Attention-pool | ( ) | ( ) | ( ) |
| Routing | ETTh1 | ETTm1 | Weather | |
|---|---|---|---|---|
| 1 | dense | |||
| 2 | top-2 | |||
| 3 | top-2 | |||
| 5 | top-2 | |||
| 7 | top-2 | |||
| 10 | top-2 |
| Dataset | Best fixed adapter | RR-MoA | % |
|---|---|---|---|
| ETTh1 | |||
| ETTh2 | |||
| ETTm1 | |||
| ETTm2 | |||
| Weather | |||
| Electricity |
| Dataset | Learned (mean std) | MSE |
|---|---|---|
| ETTh1 | ||
| ETTh2 | ||
| ETTm1 | ||
| ETTm2 | ||
| Electricity | ||
| Weather |
| Dataset | Ret% | LB | Gap | |||
|---|---|---|---|---|---|---|
| ETTh1 | 0.73 | 0.61 | 16.3 | 0.02 | 0.06 | |
| ETTh2 | 0.76 | 0.57 | 26.3 | 0.00 | 0.10 | |
| ETTm1 | 0.75 | 0.57 | 24.2 | 0.18 | 0.03 | |
| ETTm2 | 0.82 | 0.53 | 35.1 | 0.18 | 0.07 | |
| Weather | 1.37 | 0.98 | 29.1 | 0.61 | 0.08 | |
| Electricity | 0.68 | 0.46 | 32.4 | 0.13 | 0.02 |
| k-NN (MSE) | Ridge (MSE) | Backbone | |||
|---|---|---|---|---|---|
| Dataset | Raw input | Backbone | Raw input | Backbone | penalty |
| ETTh1 | |||||
| ETTm1 | |||||
| Weather | |||||
| ETTh1 | Weather | Electricity | ||||
|---|---|---|---|---|---|---|
| DLinear | RR-MoA | DLinear | RR-MoA | DLinear | RR-MoA | |
| 10 | ||||||
| 100 | ||||||
| 1000 | ||||||
| 5000 | ||||||
| MOMENT-small | MOMENT-large | Moirai-small | ||||
|---|---|---|---|---|---|---|
| Dataset | RR-MoA | Best fixed | RR-MoA | Best fixed | RR-MoA | Best fixed |
| ETTh1 | ( ) | ( ) | ( ) | |||
| ETTh2 | ( ) | |||||
| ETTm1 | ( ) | ( ) | ( ) | |||
| ETTm2 | ( ) | |||||
| Weather | ( ) | ( ) | ( ) | |||
| Dataset | RR-MoA (ours) | AdaMix MSE | % | AdaMix |
|---|---|---|---|---|
| ETTh1 | ||||
| ETTh2 | ||||
| ETTm1 | ||||
| ETTm2 | ||||
| Weather | ||||
| Electricity |
| Dataset | Freeze | AdaMix MSE | AdaMix Ent | RR-MoA MSE | Winner |
|---|---|---|---|---|---|
| ETTh1 | frozen | AdaMix | |||
| last-2 | AdaMix | ||||
| last-4 | AdaMix | ||||
| ETTm1 | frozen | AdaMix | |||
| last-2 | AdaMix | ||||
| last-4 | RR-MoA |
| Dataset | Method | MSE (mean std) | Entropy | Best fixed | % |
|---|---|---|---|---|---|
| Exchange | RR-MoA (frozen) | ||||
| AdaMix (frozen) | |||||
| AdaMix (last-4) | |||||
| DLinear (from scratch) | — | — | |||
| Solar | RR-MoA (frozen) | ||||
| AdaMix (frozen) |
| Configuration | ETTh1 | ETTm1 | Weather |
| Full-FT 15ep Adam (lr=1e-4) | |||
| Full-FT 50ep Adam (lr=1e-4) | |||
| Full-FT 50ep cosine+warmup | |||
| Full-FT 50ep cosine+layerwise | |||
| Full-FT 50ep Adam (lr=1e-5) | |||
| Full-FT best (any config) |
| Setting | ETTh1 | ETTm1 | Weather |
|---|---|---|---|
| Full FT (RevIN on) | |||
| Full FT (RevIN off) | |||
| % |
| Epochs | ETTh1 | ETTm1 | Weather |
|---|---|---|---|
| 15 | |||
| 50 | |||
| % |
| Method | ETTh1 | ETTm1 | Weather | Avg. gap |
|---|---|---|---|---|
| DLinear (scratch) | — | |||
| RR-MoA (main) | ( ) | ( ) | ( ) | |
| Dual-Stream | ( ) | ( ) | ( ) | |
| Raw-Input ( ) | ( ) | ( ) | ( ) | |
| Multi-Res | ( ) | ( ) | ( ) |
| Method | ETTh2 | ETTm2 | Electricity |
|---|---|---|---|
| DLinear (from scratch) | |||
| Dual-Stream | ( ) | ( ) | |
| Raw-Input Expert | ( ) | ( ) | ( ) |
| Multi-Resolution | ( ) | ||
| FiLM (neg. control) | ( ) | ( ) | ( ) |
| Config | ETTh1 | ETTh2 | ETTm1 | ETTm2 | Weather | Elec. |
|---|---|---|---|---|---|---|
| Dual-stream ( ) | ||||||
| Residual-IA (gate-init ) | ||||||
| Residual-IA + cos+wd ( ) |
| Dataset | DLinear | Residual-IA (ours) | Gap | Verdict | |
|---|---|---|---|---|---|
| ETTh1 | (n=10) | sig loss | |||
| ETTh2 | (n=10) | sig loss | |||
| ETTm1 | (n=10) | parity | |||
| ETTm2 | (n=5) | win (mean) | |||
| Weather | (n=5) | sig win | |||
| Electricity | (n=5) | parity |
| Dataset | DLinear ( ) | Res-IA | Res-IA + ( ) | Gap | Verdict | |
| ETTh1 | sig loss | |||||
| ETTh2 | win | |||||
| ETTm1 | parity | |||||
| ETTm2 | sig win | |||||
| Weather | sig win | |||||
| Electricity | sig win |
| Dataset | H | H | H | H | Match-or-beat |
|---|---|---|---|---|---|
| ETTh1 | parity | marg. | sig loss | ||
| ETTh2 | |||||
| ETTm1 | parity | parity | parity | sig loss | |
| ETTm2 | |||||
| Weather | |||||
| Electricity | sig loss |
| Backbone | ETTh1 | ETTh2 | ETTm1 | ETTm2 | Weather | Elec | MoB |
|---|---|---|---|---|---|---|---|
| Moirai | |||||||
| Chronos | |||||||
| MM-large | |||||||
| Timer-XL | — | — | — | ||||
| Moirai-MoE |
| Backbone | Dataset | H | H | H | H | MoB |
|---|---|---|---|---|---|---|
| Moirai | ETTh1 | X | X | |||
| ETTh2 | ||||||
| ETTm1 | X | |||||
| ETTm2 | ||||||
| Weather | ||||||
| Elec | X | X | X |
| Dataset | SR-RIA + | DLinear | RIA + | vs DL |
| ETTh1 | ||||
| ETTh2 | ||||
| ETTm1 | ||||
| ETTm2 | ||||
| Weather | ||||
| Electricity |
| Dataset | Raw-MLP MoE | Dual-Stream | DLinear | vs DS | vs DL |
|---|---|---|---|---|---|
| ETTh1 | |||||
| ETTh2 | |||||
| ETTm1 | |||||
| ETTm2 | |||||
| Weather | |||||
| Electricity |