Learning Rate Transfer for Hybrid Transformer-SSM Architectures
Organizations: Seoul National University · SB Intuitions · LG AI Research · Hodoo AI
Abstract
We study learning rate (LR) scaling for hybrid architectures combining Transformer and State-Space Model (SSM) blocks, a class adopted by several recent production language models. In particular, we focus on the gap between the theoretical scaling rules derived for SSMs under zero-order-hold (ZOH) discretization at infinite width with growing state size, and the field-standard practical implementations using simplified-ZOH Mamba at fixed state size. Surprisingly, in this practical regime hybrid architectures achieve a near-zero LR transfer gap across widths 256-2048 and depths 4-32 up to billion-parameter scale using only the original P prescription, even though SSM operations fall outside its Tensor Programs representability conditions and every parameterization we test fails the standard coordinate-check diagnostic of P correctness. We attribute this to a two-condition decomposition of LR transfer in hybrid architectures: a global update-to-weight invariance, enforced by P's initialization and LR scaling; and a local per-component balance, provided by AdamW's per-parameter normalization. Our observations show that the optimal LR is invariant to width up to 8, that this width invariance holds across depth, sequence length, batch size, and Transformer-to-SSM ratio, and that it transfers to Nemotron-H, a production hybrid outside our custom architecture set. We hope these findings fill the gap between theoretical scaling rules and practical hybrid implementations, and stimulate further research toward bridging it.
Figures & tables
| Naïve | Block-wise (approximated) | Block-wise | SP | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Arch | ||||||||||||
| MM | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 3.0 | 3.0 | 3.0 | 1.0 | 0.010 | 0.003 | 0.003 |
| TT | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.003 | 0.001 | 0.0003 |
| MTMT | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 1.0 | 0.010 | 0.003 | 0.003 |
| MHMH | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 3.0 | 3.0 | 3.0 | 1.0 | 0.003 | 0.003 | 0.001 |
| HMHM | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 3.0 | 3.0 | 1.0 | 0.003 | 0.003 | 0.001 |
| Model | Params | HellaSwag | PIQA | WinoGr | ARC-E | ARC-C | LAMBADA | Avg |
|---|---|---|---|---|---|---|---|---|
| acc_n | acc | acc | acc | acc_n | acc | |||
| Published baselines (The Pile, 300B tokens) | ||||||||
| Mamba-370M | 370M | 46.5 | 69.5 | 55.3 | 55.1 | 28.0 | 55.6 | 51.7 |
| Pythia-410M | 410M | 40.6 | 66.9 | 53.8 | 52.1 | 24.6 | 51.4 | 48.2 |
| Retrained on FineWeb-Edu (5B tokens) | ||||||||
| Mamba-370M | 370M | 34.6 | 61.6 | 53.8 | 55.0 | 26.2 | 19.9 | 41.9 |
| Depth | Scheme | Best LR | Gap | |||
|---|---|---|---|---|---|---|
| 16 | Naïve | 1.0 | 3.760 | 3.344 | 3.369 | 0.0% |
| 16 | SP | 0.001–0.003 | 3.775 | 3.382 | 3.356 | 1.9% |
| 32 | Naïve | 1.0 | 3.527 | 3.313 | 3.138 | 0.0% |
| 32 | SP | 0.001–0.003 | 3.542 | 3.350 | 3.152 | 1.9% |
| FFN | in_proj FFN | ||||
|---|---|---|---|---|---|
| Optimizer | Scheme | ||||
| AdamW | Naïve | 20% | 21% | 4% | 5% |
| AdamW | Block-wise | 166% | 436% | 15% | 20% |
| SGD | Naïve | 235% | 342% | 0% | 0% |
| SGD | Block-wise | 233% | 835% | 23% | 31% |
| Optimizer | Adaptive LR | Momentum | Best loss | lower | |
|---|---|---|---|---|---|
| AdamW | Yes | Yes ( ) | 4.392 | 4.099 | 7/7 |
| Adam no-momentum | Yes | No ( ) | 4.470 | 4.465 | 7/7 |
| SGD + momentum | No | Yes (0.9) | 7.732 | 7.955 | 1/7 |
| SGD no-momentum | No | No | 9.398 | 10.803 | 2/7 |
| Component | Scheme | step 1 | stable | |
|---|---|---|---|---|
| naïve | ||||
| faithful | ||||
| naïve | ||||
| faithful | ||||
| naïve | ||||
| faithful |
Appendix figures & tables47 assets
Supplementary material from the paper’s appendix.
Appendix
| § | Experiment | # | Key finding |
|---|---|---|---|
| A.4 | Faithful -SSM: pure-Mamba SGD + hybrid AdamW | 33 | Lower loss in Vankadara regime; – higher loss on hybrids |
| B.1 | Max stable LR across 9 unit interfaces widths schemes | 195 | Naïve stable to on all; SP shrinks with width |
| B.2 | Depth – across 8 architectures ( ) | 128 | Naïve keeps at all depths |
| C.1 | Joint depth width grid (proxy target) | 54 | transfers |
| C.2 | FineWeb-Edu width transfer (500M tokens) | 132 | gap; SP shift |
| C.3 | Width 2048 ( scaling; MHMH 1.24B, HHHH 1.66B params) | 20 | gap at |
| Width | Params (HHHH) | 2k steps / 20k steps |
|---|---|---|
| 71M | 3.1 min / min | |
| 181M | 7.1 min / min | |
| 518M | 17.1 min / min |
| Dataset | Train tokens | Tokenizer (vocab) | Steps/epoch | 2k steps | 20k steps |
|---|---|---|---|---|---|
| WikiText-2 | M | GPT-2 BPE ( ) | epochs | epochs | |
| WikiText-103 | M | tiktoken cl100k_base ( ) | epoch | epochs | |
| FineWeb-Edu 500M | M | tiktoken cl100k_base ( ) | epoch | epoch |
| LR | naïve | block-wise | naïve | block-wise |
|---|---|---|---|---|
| 0.3 | 10.39 | 8.23 | 8.83 | 8.34 |
| 1.0 | 9.52 | 7.01 | 7.92 | 7.43 |
| 3.0 | 7.88 | 6.64 | 7.38 | 6.79 |
| 10.0 | 6.58 | 6.30 | 6.88 | 6.34 |
| 30.0 | 5.96 | 6.05 | 6.39 | 5.95 |
| 100.0 | 5.55 | DIV (step 942) | 6.00 | 5.96 |
| Arch | Width | Naïve | Block-wise | Gap |
|---|---|---|---|---|
| HHHH | 256 | 3.514 | 3.712 | |
| HHHH | 512 | 3.270 | 3.500 | |
| HHHH | 1024 | 3.192 | 3.414 | |
| MHMH | 256 | 3.741 | 3.957 | |
| MHMH | 512 | 3.317 | 3.520 | |
| MHMH | 1024 | 3.171 | 3.395 |
| Width ( ) | ||||||
| Interface | Scheme | 128 | 256 | 512 | 1024 | 2048 |
| TT | SP | 1.0 | 0.30 | 0.30 | 0.30 | 0.03 |
| Naïve | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | |
| Block-wise (approx.) | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | |
| Block-wise (faithful) | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | |
| TM | SP | 0.30 | 0.30 | 0.30 | 0.10 | 0.03 |
| Arch | Depth Width | =0.3 | =1.0 | =3.0 | Gap @ |
|---|---|---|---|---|---|
| MHMH | =8, =256 | 4.508 | 4.304 | 4.318 | 0.00% |
| =8, =512 | 4.488 | 4.253 | 4.230 | 0.55% | |
| =8, =1024 | 4.403 | 4.140 | 4.204 | 0.00% | |
| =16, =256 | 4.411 | 4.219 | 4.241 | 0.00% | |
| =16, =512 | 4.495 | 4.262 | 4.843 | 0.00% | |
| =16, =1024 | 4.453 | 4.164 | 4.246 | 0.00% |
| Arch | Scheme | Loss (opt. LR) | Opt. LR | Transferred | Retuned |
|---|---|---|---|---|---|
| HHHH | Naïve | 4.467 ( ) | 1.0 | 4.115 | — |
| HHHH | SP | 4.452 ( ) | 0.001 | 4.194 | 4.149 |
| MHMH | Naïve | 4.313 ( ) | 1.0 | 3.993 | — |
| MHMH | SP | 4.315 ( ) | 0.001 | 4.339 | 3.998 |
| MTMT | Naïve | 4.451 ( ) | 1.0 | 4.033 | — |
| Arch | Gap @ | |||||||
|---|---|---|---|---|---|---|---|---|
| MHMH | 4.234 | 4.070 | 3.989 | 3.934 | 3.907 | 3.984 | 4.044 | 0.70% |
| HHHH | 4.480 | 4.296 | 4.209 | 4.161 | 4.121 | 4.173 | 4.270 | 0.97% |
| Arch | |||
|---|---|---|---|
| MHMH | 3.935 | 4.102 | 11.3 |
| HHHH | 4.211 | 4.341 | 10.8 |
| 20k steps (164M tokens) | 60k steps (492M tokens) | |||||||
| seed 42 | seed 123 | seed 456 | mean | seed 42 | seed 123 | seed 456 | mean | |
| 0.5 | – | – | – | – | 3.290 | 3.284 | 3.275 | 3.283 |
| 0.7 | 3.234 | 3.237 | 3.238 | 3.236 | 3.260 | 3.257 | 3.256 | 3.258 |
| 1.0 | 3.223 | 3.231 | 3.229 | 3.228 | 3.215 | 3.227 | 3.220 | 3.220 |
| 1.5 | 3.636 | 3.415 | 3.500 | 3.517 | 3.315 | 3.301 | 3.254 | 3.290 |
| 2.0 | 3.661 | 3.563 | 3.481 | 3.568 | – | – | – | – |
| Depth | Parameters | (nats) | (%) | |
|---|---|---|---|---|
| 48 | 834M | 1.0 | 0.000 | 0.00% |
| 64 | 1.04B | 1.0 | 0.000 | 0.00% |
| 96 | 1.46B | 0.7 | 0.043 | 1.06% |
| 128 | 1.88B | 1.5 | 0.004 | 0.09% |
| Arch | Width | =0.3 | =0.5 | =0.7 | =1.0 | =1.5 | =2.0 | =3.0 | Gap @ |
|---|---|---|---|---|---|---|---|---|---|
| MHMH | 256 | 4.411 | 4.290 | 4.262 | 4.218 | 4.202 | 4.209 | 5.523 | 0.38% |
| 512 | 4.495 | 4.354 | 4.301 | 4.265 | 4.240 | 4.249 | 4.255 | 0.59% | |
| 1024 | 4.453 | 4.285 | 4.221 | 4.170 | 4.145 | 4.145 | 4.264 | 0.60% | |
| HHHH | 256 | 4.562 | 4.468 | 4.421 | 4.403 | 4.387 | 4.399 | 4.443 | 0.36% |
| 512 | 4.504 | 4.368 | 4.294 | 4.268 | 4.255 | 4.286 | 4.349 | 0.31% | |
| 1024 | 4.386 | 4.217 | 4.142 | 4.107 | 4.083 | 4.126 | 4.174 | 0.59% |
| W | Gap @ | |||||||
|---|---|---|---|---|---|---|---|---|
| 256 | 4.190 | 4.142 | 4.113 | 4.117 | 4.093 | 4.096 | 4.318 | 0.48% |
| 1024 | 4.360 | 4.299 | 4.253 | 4.235 | 4.232 | 4.332 | 4.480 | 0.51% |
| W | |||||
|---|---|---|---|---|---|
| 256 | 5.163 | 4.541 | 4.247 | 4.198 | 4.825 |
| 1024 | 4.624 | 4.342 | 4.384 | 4.580 | 11.3 |
| =0.0003 | =0.001 | =0.003 | =0.01 | =0.03 | |
|---|---|---|---|---|---|
| MHMH =256 | 4.181 | 3.826 | 3.774 | 3.858 | 4.505 |
| MHMH =1024 | 3.267 | 3.210 | 3.635 | 3.853 | 11.5 |
| MTMT =256 | 4.004 | 3.685 | 3.615 | 3.671 | 4.462 |
| MTMT =1024 | 3.226 | 3.186 | 3.559 | 11.5 | 11.5 |
| Width | Parameters | ||||
|---|---|---|---|---|---|
| 256 | 60M | 3.732 | 3.708 | 3.785 | 1.0 |
| 512 | 137M | 3.575 | 3.556 | 3.587 | 1.0 |
| 1024 | 342M | 3.488 | 3.450 | 3.501 | 1.0 |
| Variant | Depth | Best LR | Gap | |||
|---|---|---|---|---|---|---|
| MHA, no RoPE | 16 | |||||
| MHA, no RoPE | 32 | |||||
| GQA, no RoPE | 16 | |||||
| GQA, no RoPE | 32 |
| Loss at | SP divergence rate | ||||
|---|---|---|---|---|---|
| Arch | @2k | @20k | |||
| HHHH | 3.514 | 3.270 | 3.191 | 67% | 100% |
| MHMH | 3.741 | 3.317 | 3.171 | 67% | 100% |
| MTMT | 3.607 | 3.495 | 3.158 | 78% | 100% |
| Batch size | MHMH gap | HHHH gap | MHMH optimal LR | HHHH optimal LR |
|---|---|---|---|---|
| 8 | 0.5% | 0.0% | 0.7–1.0 | 0.5 |
| 16 | 0.0% | 1.1% | 1.0 | 0.7–1.0 |
| 32 | 0.3% | 0.0% | 1.5–2.0 | 1.0 |
| 64 | 0.0% | 0.0% | 1.5–2.0 | 1.5 |
| Arch | Width | seq=128 | seq=256 | seq=512 | seq=1024 |
|---|---|---|---|---|---|
| HHHH | 4.399 | 4.100 | 4.074 | 4.477 | |
| 4.102 | 4.262 | 4.215 | 4.509 | ||
| MHMH | 4.213 | 4.388 | 4.580 | 4.084 | |
| 4.161 | 4.323 | 4.300 | 4.338 | ||
| TT | 4.258 | 4.235 | 4.454 | 4.267 | |
| 4.255 | 4.459 | 4.207 | 4.547 |
| expand | Attention | SwiGLU FFN | T total | M total | T:M Ratio | H block | |
|---|---|---|---|---|---|---|---|
| 1 | 512 | 1.05M | 2.16M | 3.21M | 0.85M | 3.8:1 | 4.06M |
| 2 | 1024 | 1.05M | 2.16M | 3.21M | 1.69M | 1.9:1 | 4.91M |
| 4 | 2048 | 1.05M | 2.16M | 3.21M | 3.39M | 0.9:1 | 6.60M |
| Naïve | Block-wise (approx.) | Block-wise | SP | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pattern | %M | ||||||||||||
| TT | 0% | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.003 | 0.003 | 0.003 |
| M1T3 | 25% | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 3.0 | 1.0 | 3.0 | 1.0 | 0.003 | 0.003 | 0.003 |
| MTMT | 50% | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 1.0 | 0.010 | 0.003 | 0.003 |
| M3T1 | 75% | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 1.0 | 3.0 | 1.0 | 0.010 | 0.003 | 0.003 |
| JAMBA (1:7) | 87.5% | 1.0 | 1.0 | 1.0 | 1.0 | 3.0 | 3.0 | 3.0 | 3.0 | 1.0 | 0.010 | 0.003 | 0.003 |
| Pattern | %M | Loss at | Best loss (best ) | Penalty |
|---|---|---|---|---|
| TT | 0% | 1.048 | 1.048 ( ) | |
| M1T3 | 25% | 0.755 | 0.725 ( ) | |
| MTMT | 50% | 0.734 | 0.734 ( ) | |
| M3T1 | 75% | 0.818 | 0.600 ( ) | |
| JAMBA | 87.5% | 0.852 | 0.630 ( ) | |
| MM | 100% | 1.144 | 0.916 ( ) |
| Arch | Scheme | Median width-spread |
|---|---|---|
| TT | Naïve | 1.52 |
| SP | 819 | |
| GTGT | Naïve | 1.23 |
| SP | ||
| HHHH | Naïve | 2.78 |
| Block-wise (approx.) | 2.45 |
| Width | |||||
|---|---|---|---|---|---|
| Scheme | 128 | 256 | 512 | 1024 | 2048 |
| SP | 0.6 | 0.9 | 1.2 | 1.7 | 2.5 |
| Naïve | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 |
| Block-wise | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 |
| Arch | Optimizer Width | =0.3 | =1.0 | =3.0 | =10.0 | =30.0 | =100.0 |
|---|---|---|---|---|---|---|---|
| MHMH | AdamW =256 | 3.566 | 3.518 | 3.616 | 4.018 | 9.909 | 5.445 |
| AdamW =1024 | 3.226 | 3.129 | 3.567 | 3.667 | 3.838 | 10.5 | |
| SGD =256 | 6.927 | 6.503 | 6.176 | 5.668 | 5.238 | 5.121 | |
| SGD =1024 | 7.296 | 6.736 | 6.329 | 6.147 | 5.687 | 5.176 | |
| HHHH | AdamW =256 | 3.505 | 3.487 | 3.581 | div | 4.542 | 10.9 |
| AdamW =1024 | 3.160 | 3.082 | 3.476 | 3.691 | 3.829 | 10.9 |
| Optimizer Width | =100 | =300 | =1000 | =3000 | =7000 |
|---|---|---|---|---|---|
| SGD =256 | 5.122 | 5.077 | 5.067 | div | – |
| SGD =1024 | 5.174 | 5.033 | 5.010 | 5.004 | div |
| Parameterization | Optimizer | Best LR @256 | Loss @256 | Best LR @1024 | Loss @1024 |
|---|---|---|---|---|---|
| Naïve | AdamW | 1.0 | 3.518 | 1.0 | 3.129 |
| Naïve | SGD | 100.0 | 5.121 | 100.0 | 5.176 |
| Approximated block-wise | SGD | 100.0 | 5.122 | 100.0 | 5.408 |
| =0.3 | =1.0 | =3.0 | |
|---|---|---|---|
| HHHH =256 WD=0 | 4.573 | 4.411 | 4.517 |
| HHHH =256 WD=0.1 | 4.561 | 4.404 | 5.013 |
| HHHH =1024 WD=0 | 4.392 | 4.090 | 4.471 |
| HHHH =1024 WD=0.1 | 4.381 | 4.102 | 4.161 |
| MHMH =256 WD=0 | 4.411 | 4.234 | 4.296 |
| MHMH =256 WD=0.1 | 4.411 | 4.217 | 4.234 |
| Arch | Optim Width | =0.001 | =0.003 | =0.01 | =0.03 | =0.1 | =0.3 | =1.0 |
|---|---|---|---|---|---|---|---|---|
| MHMH | AdamW =256 | 9.968 | 8.215 | 6.638 | 5.625 | 4.898 | 4.412 | 4.219 |
| AdamW =1024 | 9.303 | 7.950 | 6.665 | 5.706 | 5.020 | 4.450 | 4.160 | |
| Adam ( ) =256 | 9.951 | 8.194 | 6.726 | 5.653 | 4.954 | 4.448 | 4.511 | |
| Adam ( ) =1024 | 9.289 | 7.935 | 6.718 | 5.737 | 5.059 | 4.608 | 4.418 | |
| SGD =256 | 11.5 | 11.5 | 11.5 | 11.4 | 9.999 | 8.462 | 7.626 | |
| SGD =1024 | 11.5 | 11.5 | 11.5 | 11.4 | 10.9 | 8.821 | 7.911 |
| 4.306 | 4.293 | 4.260 | 4.557 | ||
| 4.287 | 4.286 | 4.281 | 4.852 | ||
| 4.236 | 4.209 | 4.177 | 4.316 | ||
| 4.176 | 4.167 | 4.150 | 4.447 | ||
| 4.219 | 4.211 | 4.163 | 4.243 | ||
| 4.156 | 4.148 | 4.209 | 4.302 |
| Optimizer | Arch | Gap (mean) | Gap (per seed) | |||
|---|---|---|---|---|---|---|
| Sophia | HHHH | 0.1 | 0.1 | 0.1 | 0.00% | 0.00% (3/3) |
| Sophia | MHMH | 0.1 | 0.1 | 0.1 | 0.00% | 0.00% (3/3) |
| Muon | HHHH | 0.01 | 0.01 | 0.005 | 3.58% | 2.29–5.74% |
| Muon | MHMH | 0.01 | 0.01 | 0.005 | 7.83% | 5.62–10.38% |
| Adam component | Role for LR transfer | Evidence |
|---|---|---|
| Adaptive LR ( ) | Load-bearing | Only Adam variants transfer |
| Momentum ( ) | Not load-bearing | 2–9% degradation, transfer preserved |
| Weight decay ( ) | Not load-bearing | 0.4% effect |