⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

8.1 模型压缩:量化、剪枝与蒸馏

核心问题: 如何在尽量少损失效果的前提下,降低模型显存、延迟和部署成本?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明


为什么需要压缩

LLM 的生产瓶颈通常不是“能不能跑”,而是“能不能稳定、便宜、低延迟地跑”。

主要成本来自:

  • 参数占用显存
  • KV cache 占用显存
  • 每个 token 的矩阵计算
  • 并发请求带来的峰值资源需求

量化、剪枝和蒸馏都是压缩手段,但解决的问题不同:

  • 量化主要降低数值精度和显存占用。
  • 剪枝主要删除权重、通道、注意力头或网络结构中的冗余部分。
  • 蒸馏主要把大模型能力迁移到小模型。

量化

量化把 FP16/BF16 权重转换为 INT8、INT4 等低精度表示。

方法思路适用场景主要风险
PTQ训练后直接量化快速部署、低成本试验长尾任务精度下降
QAT量化感知训练对精度要求更高训练成本更高
GPTQ/AWQ面向 LLM 的权重量化本地推理、边缘部署硬件和框架适配复杂

量化不是免费午餐。低 bit 数会降低显存和带宽压力,但也可能让数学、代码、长上下文或小众领域任务退化。


剪枝与稀疏化

剪枝通过移除模型中贡献较低的参数或结构,让模型变小或计算更少。它常和“稀疏化”一起讨论:剪枝制造稀疏结构,推理框架和硬件负责把稀疏结构转化为真实加速。

常见类型:

方法思路优点主要风险
非结构化剪枝删除单个权重,形成稀疏矩阵理论压缩率高普通硬件上不一定加速
结构化剪枝删除通道、层、注意力头或 FFN 维度更容易获得真实加速容易破坏模型能力
半结构化稀疏例如固定比例的 N:M 稀疏更容易匹配特定硬件依赖硬件和推理框架支持

在 LLM 部署里,剪枝通常不是默认首选。原因是:

  • 量化更通用,工具链更成熟,部署收益更容易兑现。
  • 非结构化稀疏如果没有硬件加速,可能只减少参数量,不减少实际延迟。
  • 结构化剪枝会改变网络容量,容易导致长尾任务、推理能力或领域能力退化。
  • 剪枝后通常还需要校准、继续训练或任务微调,否则质量回退不可控。

因此,剪枝更适合在明确约束下使用:目标硬件支持稀疏加速、业务任务边界清楚、有可靠评估集,并且可以接受重新校准或微调成本。


蒸馏

蒸馏用大模型生成或标注训练数据,让小模型学习大模型的行为。

text
大模型
  ↓ 生成高质量样本 / 打分 / 解释
训练数据
  ↓ 微调小模型
小模型

蒸馏适合:

  • 任务范围明确
  • 输出格式稳定
  • 线上成本敏感
  • 可以接受小模型只覆盖部分能力

不适合:

  • 任务开放且变化快
  • 需要大模型完整推理能力
  • 缺少可靠评估集

选择原则

目标优先方案
快速降低显存PTQ / INT8
本地低成本部署INT4 / GGUF / AWQ
目标硬件支持稀疏加速结构化剪枝 / 半结构化稀疏
保持业务任务效果QAT 或任务评估驱动的量化
用小模型替代大模型蒸馏 + 任务微调

上线前必须用业务评估集验证,而不是只看通用 Benchmark。


本节小结

  • 量化降低数值精度,主要换取显存和速度收益
  • 剪枝删除冗余参数或结构,但真实收益依赖硬件、框架和后续校准
  • 蒸馏迁移大模型行为,主要换取更小模型和更低推理成本
  • 压缩会改变模型行为,必须用业务评估集验证
  • 生产系统里,量化收益要和硬件、推理框架、并发模式一起评估

下一节: 8.2 推理优化

本教程采用 CC BY-NC-SA 4.0 许可协议