MoDeGPT: Modular Decomposition for Large Language Model Compression
<|reference_start|>MoDeGPT: Modular Decomposition for Large Language Model Compression: Large Language Models (LLMs) have reshaped the landscape of artificial intelligence by demonstrating exceptional performance across various tasks. However, substantial computational requirements make their deployment challenging on devices with limited resources. Recently, compression methods using low-rank matrix techniques have shown promise, yet these often lead to degraded accuracy or introduce significant overhead in parameters and inference latency. This paper introduces \textbf{Mo}dular \textbf{De}composition (MoDeGPT), a novel structured compression framework that does not need recovery fine-tuning while resolving the above drawbacks. MoDeGPT partitions the Transformer block into modules comprised of matrix pairs and reduces the hidden dimensions via reconstructing the module-level outputs. MoDeGPT is developed based on a theoretical framework that utilizes three well-established matrix decomposition algorithms -- Nystr\"om approximation, CR decomposition, and SVD -- and applies them to our redefined transformer modules. Our comprehensive experiments show MoDeGPT, without backward propagation, matches or surpasses previous structured compression methods that rely on gradient information, and saves 98% of compute costs on compressing a 13B model. On \textsc{Llama}-2/3 and OPT models, MoDeGPT maintains 90-95% zero-shot performance with 25-30% compression rates. Moreover, the compression can be done on a single GPU within a few hours and increases the inference throughput by up to 46%.<|reference_end|>
@article{lin2024modegpt:,
    title={MoDeGPT: Modular Decomposition for Large Language Model Compression},
    author={Chi-Heng Lin, Shangqian Gao, James Seale Smith, Abhishek Patel,
  Shikhar Tuli, Yilin Shen, Hongxia Jin, Yen-Chang Hsu},
    journal={arXiv preprint arXiv:2408.09632},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.09632},
    primaryClass={cs.LG cs.CL stat.ML}
}