Quantizing Looped Transformers: Feedback Exposure and Calibration Blindness
Organizations: Meta
Abstract
Looped transformers reuse weights across recurrence steps, making low-bit quantization especially attractive. We identify two distinct failure modes of standard post-training quantization. On Huginn-3.5B, per-channel INT4 fails primarily at the non-residual loop-entry adapter, while quantizing the residual core is much less damaging. We call this feedback exposure: a quantized layer perturbs the recurrent state without an identity path, and the resulting error is fed back at later steps. Controlled experiments on linear filters and Mamba state-space models show that feedback exposure also occurs outside transformers. Grouped INT4 reveals a separate failure, calibration blindness: our one-step GPTQ baseline builds its Hessian from step-0 activations, leaving input directions used later in the recurrence nearly unweighted. Across nine checkpoints from seven looped architectures, one-step GPTQ is worse than round-to-nearest (RTN) on the primary task metric for five checkpoints. Accumulating the GPTQ Hessian across recurrence steps outperforms both one-step GPTQ and RTN on all nine checkpoints and recovers bf16-level accuracy on Huginn. These results separate two questions for PTQ on looped models: where quantization error enters the recurrence, and which states calibration sees.
Figures & tables
| Layer | Dimension | 1-step rank | 1-step % | 32-step rank | Gain |
|---|---|---|---|---|---|
| Adapter | 10,560 | 43 | 0.41% | 335 | 7.8 |
| Core Wqkv (avg) | 5,280 | 1,050 | 20% | 1,450 | 1.3 |
| mlp.proj (block 3) | 17,920 | 65 | 0.36% | 89 | 1.4 |
| Checkpoint | Base | RTN | 1-step | -step | Gap closed | |
|---|---|---|---|---|---|---|
| Full GSM8K exact-match accuracy | ||||||
| Huginn 3.5B a | 32 | 34.9 | 27.9 | 26.9 | 35.0 | 102% |
| R-Llama 1.4B | 32 | 50.2 | 39.5 | 40.3 | 45.3 | 54% |
| Full WikiText-2 perplexity | ||||||
| Ouro 1.4B | 4 | 11.51 | 14.38 | 14.67 | 12.97 | 49% |
| Ouro 2.6B b | 4 | 10.10 | 11.94 | 13.61 | 11.62 | 17% |
Appendix figures & tables26 assets
Supplementary material from the paper’s appendix.
Appendix
| Arm | Quantized layers | Top-1 (N=32) | Top-1 endpoints ( ) |
|---|---|---|---|
| 0 | None (bf16 control) | 98.9% | 68.8% 98.9% |
| 1 | Adapter only | 10.5% | 24.8% 10.5% |
| 2 | Core only (16 projections) | 87.9% | 68.4% 87.9% |
| 3 | All (adapter + core) | 10.6% | 25.0% 10.6% |
| 4 | Gaussian noise (norm-matched) | 25.0% | 49.3% 25.0% |
| Arm | Quantized layers | Top-1 (N=32) |
|---|---|---|
| 0 | None (bf16 control) | 98.7% |
| 1 | Adapter only | 49.1% |
| 2 | Core blocks only (6 layers) | 74.8% |
| 3 | All (adapter + core) | 34.6% |
| Configuration | Top-1 (N=32) | GSM8K strict/flex |
|---|---|---|
| bf16 | 100% | 34% / 41% |
| Per-channel INT4, no rotation | 8.5% | 0% / 0% |
| Per-channel RTN + rotation | 82.6% | 13% / 15% |
| Per-channel -step + rotation | 92.7% | 24% / 25% |
| Rank and top-1 diagnostic | |||
| Hessian rank | Rank (% of dim.) | Top-1 (32-step) | |
| 1 | 43 | 0.41% | 88.2% |
| 4 | 234 | 2.22% | 90.9% |
| 8 | 282 | 2.67% | 92.5% |
| 32 | 335 | 3.17% | 92.5% |
| RTN baseline | 88.0% | ||
| Model | WikiText-2 PPL | LAMBADA acc | |
|---|---|---|---|
| Ouro 1.4B | 1 | 14.67 | — |
| 2 | 13.17 | — | |
| 3 | 13.05 | — | |
| 4 | 12.97 | — | |
| Parcae 1.3B | 1 | 27.35 | 0.341 |
| 2 | 99.59 † | 0.326 |
| Model | Config | ARC-C (%) | HellaSwag (%) | WikiText-2 PPL |
|---|---|---|---|---|
| Huginn 3.5B | bf16 | 37.4% | 66.6% | 14.02 |
| -step + rotation | 37.0% | 65.3% | 14.54 | |
| R-Llama 1.4B | bf16 | 37.1% | 46.1% | 30.49 |
| -step + rotation | 36.3% | 45.2% | 32.64 |
| Checkpoint | Metric | RTN | 1-step | -step |
|---|---|---|---|---|
| Ouro-2.6B | GSM8K strict/flex ( ) | 78.8 / 81.5 | 72.6 / 74.6 | 79.8 / 82.8 |
| Parcae-1.3B | LAMBADA accuracy | 0.3117 | 0.3410 | 0.4157 |
| Configuration | Strict (%) | Flexible (%) |
|---|---|---|
| bf16 | 34.87 (460/1,319) | 42.23 (557/1,319) |
| RTN | 8.11 (107/1,319) | 8.64 (114/1,319) |
| 1-step GPTQ | 5.84 (77/1,319) | 6.44 (85/1,319) |
| Equal-row trajectory GPTQ | 17.44 (230/1,319) | 17.82 (235/1,319) |
| Full-trajectory GPTQ | 20.70 (273/1,319) | 23.28 (307/1,319) |
| Checkpoint | Base | RTN | 1-step | -step |
|---|---|---|---|---|
| Ouro 1.4B | 0.6591 | 0.7193 | 0.7238 | 0.6912 |
| Ouro 2.6B | 0.6240 | 0.6689 | 0.7014 | 0.6582 |
| LoopFormer 278M | 0.9334 | 0.9600 | 1.0327 | 0.9516 |
| Parcae 140M | 0.9847 | 1.0326 | 1.0053 | 0.9899 |
| Parcae 1.3B | 0.8032 | 1.0514 | 0.8895 | 0.8311 |
| PonderPythia 2.8B | 0.6646 | 0.6837 | 0.6817 | 0.6757 |
| Configuration | Strict (%) | Flex (%) |
| RTN (no rotation, no GPTQ) | 25% | 28% |
| 1-step GPTQ (rotated variant) | 25% | 28% |
| Adapter-bf16 + RTN (no rotation) | 32% | 35% |
| Adapter -step + rotation (core 1-step) | 23% | 29% |
| -step all layers (no rotation) | 30% | 37% |
| -step all layers (rotated variant) | 34% | 39% |
| Configuration | WikiText-2 PPL |
|---|---|
| RTN | 14.98 |
| GPTQ | |
| Step 0 (1-step) | 15.36 |
| Step 31 | 15.07 |
| 32-step | 14.89 |
| AWQ | |
| Config | Top-1 (N=32) | GSM8K ( ) strict/flex | GSM8K ( ) strict/flex |
|---|---|---|---|
| Random orthogonal | 91.0% | 23% / 24% | 26.9% / 27.5% |
| Hadamard | 90.7% | 29% / 33% | 29.4% / 34.0% |
| bf16 | 100% | 34% / 41% | 34.9% / 42.2% |
| Perturbation | Adapter | Core | Gap (Core Adapter) |
|---|---|---|---|
| Trained rank-4 update | 13.4% | 77.8% | 64.4 pp |
| Random rank-4 update | 71.8% | 95.8% | 24.0 pp |
| Gaussian noise | 89.3% | 96.5% | 7.2 pp |
| Projection | Ablation sens. | Random-direction rank | Hessian-trace rank |
|---|---|---|---|
| transformer.adapter | 0.118 ( next) | 17/17 (last) | 3/17 |
| core_block.3.mlp.fc | 0.051 | 4/17 | 4/17 |
| core_block.3.mlp.proj | 0.044 | 14/17 | 1/17 |
| core_block.1.mlp.proj | 0.041 | 15/17 | 2/17 |
| core_block.2.mlp.fc | 0.040 | 5/17 | 5/17 |
| Group size | |||
|---|---|---|---|
| 68.3% | 90.6% | 88.4% | |
| 68.8% | 90.5% | 87.5% | |
| 68.7% | 87.7% | 86.5% | |
| 69.4% | 86.6% | 83.9% | |
| Per-channel | 18.8% | 7.8% | 7.6% |
| Architecture | Bottleneck layer | Step-0 rank | Max rank gain | 1-step vs. RTN | Gap closed |
|---|---|---|---|---|---|
| Ouro 1.4B | layer-0 down_proj | 0.02% | 6.2 | worse | 49% |
| Ouro 2.6B | layer-0 down_proj | 0.02% | 5.4 | worse | 17% |
| Nanbeige4.2-3B-Base | layer-1 down_proj | 0.02% | 3.67 | worse | 58% |
| R-Llama 1.4B | adapter | 0.02% | 3.0 | better | 54% |
| Parcae 1.3B | core.7 mlp.proj | 0.03% | 6.9 | better | 96% |
| Huginn 3.5B | core.3 mlp.proj | 0.36% | 7.8 | worse | 102% |
| Checkpoint | Screened layer | Step 0 | Step 1 |
|---|---|---|---|
| 1-step GPTQ worse than RTN | |||
| Ouro 1.4B | layer-0 down_proj | ||
| Ouro 2.6B | layer-0 down_proj | ||
| Huginn 3.5B | adapter | ||
| LoopFormer 278M | c_fc block 0 | ||
| 1-step GPTQ better than RTN | |||
| Filter | Bits | (orig) | (A-quant) | (BCD-quant) | A-quant stable? |
|---|---|---|---|---|---|
| Butterworth 4 | 4 | 0.915 | 2.593 | 0.915 | No |
| 6 | 0.915 | 1.287 | 0.915 | No | |
| 8 | 0.915 | 1.134 | 0.915 | No | |
| 10 | 0.915 | 1.011 | 0.915 | No | |
| 12 | 0.915 | 0.934 | 0.915 | Yes | |
| 16 | 0.915 | 0.916 | 0.915 | Yes |
| Divergence at last | vs. | |
|---|---|---|
| 0.00 | 0.127 | baseline |
| 0.10 | 0.130 | |
| 0.15 | 0.120 | |
| 0.25 | 0.111 | |
| 0.50 | 0.101 |
| Condition | ||||||
|---|---|---|---|---|---|---|
| Adapter ( ) | ||||||
| 50p, 1-step | 1 | 2 | 43 | 2,120 | 2,919 | 2,919 |
| 1000p, 1-step | 1 | 2 | 20 | 3,047 | 7,462 | 9,621 |
| 50p, 32-step | 1 | 16 | 335 | 1,795 | 4,796 | 6,213 |
| Core Wqkv@0 ( ) | ||||||
| 50p, 1-step | 12 | 323 | 2,111 | 2,870 | 2,870 | 2,919 |
| Model | RTN | -step | Skip-0 | ||
|---|---|---|---|---|---|
| Ouro 2.6B | 4 | 11.94 | 11.62 | 11.10 | 0.52 |
| Parcae 1.3B | 8 | 51.30 | 20.84 | 20.58 | 0.26 |
| Huginn 3.5B | 32 | 14.98 | 14.89 | 14.92 | 0.03 |
| R-Llama 1.4B | 32 | 34.02 | 33.46 | 33.65 | 0.19 |
| LoopFormer 278M | 8 | 35.10 | 34.08 | 34.33 | 0.25 |
| Ouro 1.4B | 4 | 14.38 | 12.97 | 13.78 | 0.81 |
| Model | Config | Strict (%) | Wilson 95% CI |
|---|---|---|---|
| Huginn 3.5B | bf16 | 34.9 | [32.4, 37.5] |
| Huginn 3.5B | RTN | 27.9 | [25.5, 30.4] |
| Huginn 3.5B | 1-step GPTQ | 26.9 | [24.6, 29.4] |
| Huginn 3.5B | -step GPTQ | 35.0 | [32.5, 37.6] |
| R-Llama 1.4B | bf16 | 50.2 | [47.5, 52.9] |
| R-Llama 1.4B | RTN | 39.5 | [36.9, 42.2] |
| Rows | Calibration data | Hessian collection | Solver |
|---|---|---|---|
| Huginn/R-Llama | First 50 GSM8K training questions | 1 or 32 recurrence steps | GPTQ, 1% damping for core and 10% for adapter |
| Ouro | WikiText-2 train, 128 2048 tokens | 1 or 4 recurrence steps | Column-wise GPTQ, 0.01 damping |
| LoopFormer | WikiText-2 train, 128 1024 tokens | 1 or 8 loop iterations | Column-wise GPTQ, 0.01 damping |
| Parcae | WikiText-2 train, 128 1024 tokens | 1 or 8 core iterations | Column-wise GPTQ, 0.01 damping |
| PonderPythia | WikiText-2 train, 128 2048 tokens | First pass or all 4 shared-stack passes | Column-wise GPTQ, 0.01 damping |
| Nanbeige | WikiText-2 train, 128 2048 tokens | First pass or both shared-stack passes | Column-wise GPTQ, 0.01 damping |
| Asset / source | License |
|---|---|
| Checkpoints | |
| Huginn-3.5B ( 0f0fa0ba ); R-Llama-1.4B ( a5f6f126 ); Ouro-1.4B ( 574fa66c ); Ouro-2.6B ( 1ed04250 ) | Apache-2.0 (pinned checkpoint cards). |
| PonderPythia-2.8B ( 5bd111c1 ); Nanbeige4.2-3B-Base ( 4a38e817 ) | Apache-2.0 (pinned checkpoint cards). |
| Mamba-130M ; Mamba-2.8B | Checkpoint terms not stated; code Apache-2.0. |
| LoopFormer-278M ( e7c87640 ); Parcae-140M ( 236739ce ); Parcae-1.3B ( 517f8e6a ) | Checkpoint terms not stated; code MIT. |
| COCONUT-GPT2-124M | Checkpoint terms not stated; code MIT. |
LLM Quantization
Large language model quantization reduces numerical precision to lower memory use and accelerate training or inference.
See all 381 papers