EMNLP 2026
Train Overcomplete, Deploy Compact: Scaling Recovery Capacity for Structured LLM Pruning
Scale recovery capacity during training, then merge it away: better pruned LLMs at the same deployment cost.
- 1Ajou University
- †Corresponding author
- Paper Soon
- arXiv
- Code
- Checkpoints
- retained performance on six LLMs at 25% and 50% pruning
- SOTA
- points of retained reasoning over the best recovery baseline (best case, 50% pruning)
- +8.4
- extra parameters, memory or latency after merging
- 0
See it prune, grow and merge
A dense LLM: eight blocks, each built from linear projections like the weight matrix P.
- Blocks at inference
- 8
- Trainable recovery parameters
- -
- Extra inference cost
- -
A schematic eight-block model; drag the timeline, pick a step or press Play. The matrices are a toy 6×8 example (the merge is computed exactly), the α schedule is the paper's, and parameter counts are its LLaMA3-3B setting at 25% pruning.
Train overcomplete, deploy compact
Overcomplete recovery module
After the pruned blocks are removed, the two blocks right after the gap become recovery blocks. Each linear projection Pi in them is temporarily expanded to Di(Pi + Wi): an additive parallel branch Wi (initialized to zero) broadens the optimization space, and a cascaded multiplicative transformation Di in the output space (initialized to the identity) reshapes it, so training starts exactly at the pretrained weights. The first recovery block trains its own weights and the added ones; the second keeps its weights frozen and trains only the added ones. In the reported setup, attention Di and MLP Wi sit only on selected projections of that frozen second block (the hybrid placement).
Annealed activation
The annealed activation 𝒜s(x) = αsσ(x) + (1 − αs)x sits between Pi + Wi and Di, with σ the model’s own activation. αs rises from 0 to 1 over the first 1% of steps, follows a cosine decay and stays at 0 for the last 20%, so the module trains with nonlinear dynamics but starts and ends as a purely linear map.
Exact re-parameterization
Once linear, each triplet merges into one standard weight, Pi = Di(Pi + Wi). The deployed checkpoint is a plain pruned model: same architecture, parameters, memory and latency.
Better recovery, nearly everywhere
On average over six LLMs, OverRep retains the most performance in reasoning and generation at both pruning ratios, and it leads in 23 of the 24 backbone-by-setting comparisons.
- AdaLoRAICLR’23
- RankAdaptorNAACL’25 Findings
- RestoreLCCNeurIPS’25
- LaCoEMNLP’24 Findings
- ShortGPTACL’25 Findings
- StreamlineICLR’25
- OverRep (ours)
| Reasoning | Generation | |||
|---|---|---|---|---|
| 25% | 50% | 25% | 50% | |
| LLaMA2-7B | +3.2 | +3.9 | +1.6 | +4.2 |
| LLaMA2-13B | +0.7 | +3.4 | +2.9 | +5.2 |
| LLaMA3-3B | +4.1 | +3.9 | +1.4 | +1.3 |
| LLaMA3-8B | +2.4 | +4.5 | +2.2 | −1.7 |
| Qwen3-4B | +1.1 | +2.4 | +4.1 | +3.3 |
| Qwen3-8B | +0.4 | +1.4 | +0.4 | +1.3 |
Not just more parameters
More trainable parameters alone do not explain the gain: at 25% pruning, LoRA scaled to OverRep's 650M parameters gets worse, and full fine-tuning and logit distillation cost more yet still trail OverRep in reasoning. OverRep and OverRep-KD sit at the top, and OverRep trains in the least time (4.6 GPU-hours with cached features, tied with Streamline).
Retained reasoning vs. trainable parameters
Cheaper to train as models grow
Recovery is local to two blocks with cached inputs, so its cost barely grows with model size, while LoRA backpropagates through the whole model.
Every piece adds recovery
Components on the MLP side help most, W and D are complementary, and the annealed activation adds the last step on top of the hybrid placement.
Reasoning RP, gain over Plain
Generation RP, gain over Plain
Citation
@inproceedings{oh2026overrep,
title = {Train Overcomplete, Deploy Compact: Scaling Recovery Capacity for Structured {LLM} Pruning},
author = {Oh, Seungmin and Lee, Donggeon and Ryu, Jongbin},
booktitle = {Proceedings of the Conference on Empirical Methods in Natural Language Processing},
year = {2026},
publisher = {Association for Computational Linguistics},
url = {https://arxiv.org/abs/2609.06974}
}