LLM-Pruner 剪枝与恢复

创建于:2025年2月19日

使用 GPT-4o 回答 Chat01

问题

NeurIPS-2023-llm-pruner-on-the-structural-pruning-of-large-language-models-Paper-Conference.pdf

帮助我解析文章,总结文献内容,提炼核心观点,明确核心技术。

回答

文献解析与总结:LLM-Pruner - 大型语言模型的结构化剪枝

1. 研究背景

大型语言模型(LLM)在理解和生成语言方面表现卓越,但其庞大的模型规模带来了部署、推理和训练上的挑战。现有的压缩方法(剪枝、知识蒸馏、量化等)大多针对特定任务进行优化,而LLM作为通用任务求解器,需要一种任务无关的压缩方案,以尽可能保持其多任务解决能力。


2. 研究目标

LLM-Pruner 旨在在不依赖原始训练数据的前提下,对大型语言模型进行任务无关的结构化剪枝,并在尽可能短的时间内恢复剪枝后的模型性能。

主要挑战:

  • 大规模训练数据的不可获得性:传统方法依赖于LLM的原始训练数据,而这些数据往往规模庞大(1万亿tokens以上),难以获取或传输。
  • 剪枝后微调时间过长:现有方法的微调通常需要数天至数周,例如TinyBERT的蒸馏需要14个GPU天,而本研究目标是极大减少训练时间。

3. 核心技术

LLM-Pruner 主要由依赖结构检测、剪枝重要性评估和快速恢复三部分组成:

(1) 依赖结构检测

LLM-Pruner 采用依赖图构建算法来识别模型内部的结构依赖关系,以确保剪枝操作不会破坏模型的整体计算逻辑。例如:

  • 若某个神经元仅依赖于另一个神经元,则剪枝该神经元时,必须同步剪枝其依赖的神经元。
  • 通过遍历模型神经元构建依赖关系图,自动识别所有相互依赖的结构。

(2) 剪枝重要性评估

对已检测出的依赖结构进行重要性评估,决定剪枝哪些结构,以最大程度保持模型的整体功能。

重要性计算方式:

  • 向量级重要性:计算某一组权重的梯度变化,并结合近似Hessian矩阵评估剪枝对损失函数的影响。
  • 参数级重要性:逐个计算权重参数的影响,并采用Fisher信息矩阵近似Hessian矩阵。
  • 分组重要性聚合:包括加和法、最大值法、乘积法和最后执行单元法,确保剪枝后模型仍然能有效工作。

(3) 快速恢复

LLM-Pruner采用低秩近似(LoRA) 进行微调,仅优化少量参数以快速恢复剪枝后的模型性能:

  • 在每个线性层的权重更新 ΔW 进行低秩分解 ΔW = PQ,其中 P, Q 具有较低的维度,从而降低计算量。
  • 仅需 3小时50K条公开数据 即可完成微调。

4. 实验结果

LLM-Pruner在LLaMA-7B、Vicuna-7B、ChatGLM-6B 三种LLM上进行了实验,分别评估了零样本分类任务文本生成能力

(1) 剪枝后性能

  • 剪枝20%参数后,LLM-Pruner能保持**94.97%**的原始性能,而现有的任务特定压缩方法通常会损失更多信息。
  • 剪枝50%参数后,性能有所下降,但仍可通过快速恢复减少影响。

(2) 剪枝策略比较

  • 块级剪枝(Block Pruning)(剪枝整个MLP层或多头注意力)比 通道剪枝(Channel Pruning)(剪枝某些维度)表现更稳定。
  • 全局剪枝(Global Pruning)(在整个模型范围内排序剪枝)略逊于 局部剪枝(Local Pruning)(在各层单独排序剪枝)。

(3) 量化与剪枝的结合

  • LLM-Pruner可以与 8-bit 量化(LLM.int8) 结合,在减少内存使用的同时,仍能保持较好的推理速度。

5. 研究贡献

  • 首次提出 LLM 的任务无关结构化剪枝,即无需特定任务数据,即可高效剪枝并恢复模型。
  • 显著减少训练数据需求,仅需50K条公开数据,而非完整的LLM训练数据集。
  • 大幅加速剪枝后恢复,剪枝+恢复仅需 3小时,相比TinyBERT的14 GPU天,效率大幅提升。
  • 自动化剪枝框架,可应用于不同的LLM架构,无需手动设计剪枝策略。

6. 未来工作

  • 研究高压缩率剪枝(>50%)的优化方法,以减少剪枝后性能损失。
  • 探索剪枝后如何增强文本生成质量,避免长文本生成中的重复和无意义句子问题。
  • 结合其他压缩技术(如知识蒸馏)进一步提升小模型的有效性。

7. 结论

LLM-Pruner 提供了一种任务无关、低数据需求、快速恢复的结构化剪枝方法,可用于高效压缩LLM并保持其通用任务能力。该方法在多个LLM上实验验证,能够在削减参数的同时,维持较高的推理能力,为LLM的高效部署提供了新的思路。

分享这个问答