ICLR 2024 SliceGPT: Compress Large Language Models by Deleting Rows and Columns
背景
模型压缩技术可以分为四类:蒸馏distillation、张量分解tensor decomposition(包括低秩分解low-rank factorization)、剪枝pruning和量化quantization。
许多剪枝方法需要在剪枝后进行恢复微调rbecovery fine-tuning(RFT)以保持性能,这使得剪枝成本高昂且难以扩展。
为了解决这一问题,作者提出了一个名为SliceGPT的方法。SliceGPT 的核心思想是删除权重矩阵中的行和列来降低网络的嵌入维数,同时保持模型性能,并且不需要recovery fine-tuning (RFT) 。
核心思想
如下图最右所示,SliceGPT 会剪掉权重矩阵的整行或整列,对 X X X、 W W W降维,达成的结果是权重矩阵变小,降低了神经网络的嵌入维度。
假设原本 X X X、 W W W有 D D D维,现在要使 X X X、 W W W降为 k k k维。显然,如果直接砍掉 X X X、 W W W中的一些维度,例如将第 k + 1... D k+1...D k+1...D维砍掉后,后 D − k D-k D−k列的信息就会丢失,对网络的影响就会很大。
作者的办法是在切片之前,先对网络进行一次正交转换 X ′ = X Q , W ′ = Q T W X'=XQ,W'=Q^T W X′=XQ,W′=QTW(这里的变换矩阵 Q Q Q是一个 n n n<