跳到主要内容

剪枝(结构化与非结构化)

要解决的问题

部署预算固定时,除 5.3 量化 外还可删除冗余参数或结构。剪枝分非结构化(稀疏权重)与结构化(整通道/层/头),后者直接缩小矩阵维度、利于真实加速,但 LLM 上大规模剪枝仍需谨慎验证 perplexity 与下游任务。

核心概念

类型粒度硬件友好LLM 典型做法
非结构化单个权重需稀疏 kernelmagnitude pruning + 微调恢复
结构化通道/头/层宽度剪枝、层 dropping
半结构化 2:4NVIDIA 模式Ampere+部分 conv/linear 可用

剪枝后稀疏度 ss

Params_eff(1s)Params_full\text{Params\_eff} \approx (1-s) \cdot \text{Params\_full}

结构化剪枝第 ll 层 FFN 中间维 dff=(1s)dffd_{\text{ff}}' = (1-s) d_{\text{ff}} 时,该层 FLOPs 近似同比下降。

方法 / 流程

  1. One-shot:按 w|w| 或激活统计(Wanda)剪枝,再短期 SFT 恢复。
  2. 迭代:剪枝 → 微调 → 再剪枝,逐步提稀疏度。
  3. 与蒸馏结合:剪枝学生 + 大模型教师(5.4.2)。
  4. 与量化叠加:先结构化剪枝再 INT4(注意 kernel 是否支持该形状)。

工程实践

  • 加速现实:非结构化 50% 稀疏若无专用 kernel,端到端可能无加速
  • 评测:除 ppl 外必跑 MMLUHumanEval
  • 工具torch-pruning、NVIDIA Model Optimizer;MoE 专家剪枝为活跃研究方向。

代表工作

  • Han et al., Learning both Weights and Connections for Efficient Neural Networks
  • Sun et al., A Simple and Effective Pruning Approach for Large Language Models(Wanda)
  • Frantar & Alistarh, SparseGPT(一次性稀疏化)

剪枝率与加速对照(经验)

稀疏度需专用 kernelppl 影响建议
非结构化 50%中–高研究向
结构化 20% 宽度较易配合微调
2:4 半结构化NVIDIA低–中推理栈支持时优先

剪枝后务必在目标推理框架上实测 TPS,勿只看参数量减少比例。

局限与注意点

  • LLM 大矩阵 对剪枝敏感,10%+ 非结构化常需长恢复训练。
  • 结构化剪枝改变 checkpoint,与标准 HF config 可能不兼容。
  • 个人理解:生产首选仍是量化 + 小模型,剪枝更多用于研究与专用芯片。

术语对照(中英)

本节英文关键词:结构化与非结构化(与社区论文、API 文档检索一致)。

延伸阅读

  • 本仓库 LLMs 入口 可回溯全局大纲;修改单点优化前建议先读上下游章节链接。
  • 技术报告精读见 llms/08-technical-reports/paper-reading 专栏。
  • 工程复现优先锁定:框架版本 + 量化格式 + 评测 harness commit,三者缺一即难以对齐论文数字。

相关章节