概要
大语言模型(LLMs, Large Language Models)在各种任务上展现出了惊人的能力,这些能力很大程度上来自于模型庞大的模型规模以及海量的训练语料。为了应对这些模型部署上存在的挑战,许多研究者开始关注大语言模型的轻量化问题。由于 LLM 模型庞大的参数量,我们希望能以最小的成本完成对模型的压缩,尽可能的减少压缩后训练的开销,实现高效的模型压缩。
因为,我们提出了一种基于自动化的结构化剪枝的方案,采用结构化剪枝可以尽最大可能保留模型已习得的知识,实现高效的大语言模型压缩。在实验中,我们仅使用了 5 万条训练语料以及单张 4090 24GB 显卡,就可以在 3 小时内完成 LLaMA,Vicuna 和 ChatGLM 等大语言模型的剪枝和训练。
论文标题:
LLM-Pruner: On the Structural Pruning of Large Language Models
论文作者:
Xinyin Ma, Gongfan Fang, Xinchao Wang
单位:
新加坡国立大学
论文地址:
https://arxiv.org/abs/2305.11627
Github地址:
https://github.com/horseee/LLM-Pruner
大语言模型压缩面临的问题
首先,大语言模型的压缩与之前的语言模型(例如 BERT,RoBERTa 等)的压缩等有什么差异呢。这需要从模型/数据/任务三个角度来分析,
模型规模:第一个主要差异来自 LLM 参数量规模远超之前的语言模型,这导致许多依赖重新训练的压缩方案,例如知识蒸馏,重新训练的开销较大。
海量训练语料:许多 LLMs 经历了 1 万亿甚至更大规模的 tokens 上的训练,这导致许多依赖于原始数据或收集替代数据的方案变得尤其昂贵。
任务无关的模型压缩:现有的压缩算法通常针对单一、特定的任务进行压缩,而 LLMs 是很优秀的多任务处理器,在压缩过程中我们不希望折损 LLM 的通用性和多功能性。
上述三种问题实际上对应了三个基本要求:
降低训练规模:压缩算法需要尽可能少的依赖大规模的重新训练。
减少数据依赖:压缩训练所需要的数据需要尽可能少
保留模型原始能力:压缩模型过程中需要保留一定的原始模型能力。
由此,我们需要一种能够避免大规模重新训练、且能保持模