为什么需要压缩
大模型部署受两类资源限制:
- 显存:模型权重、KV Cache 和激活值要同时放进 GPU;
- 带宽与算力:Decode 阶段每生成一个 token 都要读取大量权重,访存带宽常成为瓶颈。
压缩的目标是在尽量保持效果的前提下,减少存储和计算量。两种主要手段是量化(降低每个参数的位数)和蒸馏(把大模型的能力迁移到小模型)。
量化
量化把浮点数映射为低位整数。最常用的是均匀量化:
其中:
- 是量化前的浮点值;
- 是缩放因子,把浮点范围映射到整数范围;
- 是零点,用于表示浮点零对应的整数,支持非对称范围;
- 是量化后的整数范围,例如 int8 为 ;
- 防止超出范围。
对称量化令 ,常用于权重量化;非对称量化保留零点偏移,适合分布偏斜的激活值。
量化粒度
| 粒度 | 做法 | 特点 |
|---|---|---|
| Per-tensor | 整个张量共用一组 | 实现简单,精度较低 |
| Per-channel / per-token | 每个通道或每个 token 单独量化 | 更精细,适合权重/激活分布差异大的情况 |
| Per-group | 把通道分成大小为 的组,每组一组参数 | 在精度和开销之间折中 |
组越小,量化越精细、精度越高,但需要存储更多缩放因子。 退化为逐通道, 等于通道数时退化为逐张量。
量化对象
- 权重量化:减少模型存储和加载带宽,是部署中最常见的做法;
- 激活值量化:减少每层中间结果的存储和计算,难度更大,因为激活值中存在离群点。
训练时机
- QAT(量化感知训练):训练时就模拟量化,前向用伪量化值,反向仍用浮点梯度,让模型适应低精度;
- QAF(量化感知微调):在微调阶段加入量化感知,兼顾压缩和效果;
- PTQ(训练后量化):直接对训练好的模型量化,实现简单、成本低,但会带来精度损失。
大模型通常先用 PTQ;精度不够时再考虑 QAT/QAF。
常见 PTQ 方法
LLM.int8()
观察:激活值中存在少量数值很大的离群特征,它们拉伸了量化范围,导致其他值有效位数不足。LLM.int8() 把离群特征保持 FP16 单独计算,其余特征用 int8 矩阵乘,最后把两部分结果相加。
GPTQ
GPTQ 逐层量化,目标是让量化后的层输出尽量接近原始层输出:
它利用 Hessian 近似估计每个权重对输出的影响,按列量化并在量化后补偿误差。GPTQ 可以把权重压到 3–4 bit,推理时反量化计算。
SmoothQuant
激活值难量化、权重容易量化。SmoothQuant 引入平滑因子 ,做等效变换:
让激活值除以 缩小离群点影响,权重乘以 承担一部分难度,从而把“激活难量化、权重易量化”变成两者都较容易量化。
SpQR
SpQR 识别对量化误差特别敏感的少量权重(约 top 1%),用稀疏矩阵高精度保存,其余权重压到 3–4 bit。它通过校准输入评估每个权重的敏感度,实现接近无损的压缩。
AWQ
AWQ(Activation-aware Weight Quantization)认为只需保护少量关键权重就能显著减少误差。它根据激活值和权重的大小寻找缩放因子,保护重要通道,而不是单独存储离群权重,因此实现更简单、推理更高效。
知识蒸馏
蒸馏把复杂教师模型的知识迁移到更小的学生模型。学生不只学习真实标签,还学习教师输出的软标签(概率分布),其中包含类别之间的相似性信息。
设教师输出 、学生输出 ,温度为 时:
平衡真实标签损失和蒸馏损失, 软化概率分布,让学生看到“哪些错误答案也比较接近”。
白盒与黑盒
- 白盒蒸馏:可以访问教师内部结构和中间层,例如 MiniLLM 用反向 KL 散度让学生匹配教师的分布,避免学生在教师低概率区域分配过多概率;
- 黑盒蒸馏:只能访问教师的输入和输出,例如 GKD 对学生生成的序列进行采样,用教师打分来构造训练信号。
涌现能力的蒸馏
大模型的上下文学习(ICL)、思维链(CoT)、指令遵循(IF)等能力通常在规模达到一定程度后才出现。蒸馏不只迁移最终答案,还可以迁移:
- 教师的推理过程(思维链);
- 教师对示例的使用方式;
- 教师的指令遵循行为。
这比只拟合输出分布更难,因为学生需要学习“如何思考”,而不只是“答案是什么”。
取舍
| 方法 | 压缩对象 | 优点 | 局限 |
|---|---|---|---|
| 量化 | 权重/激活 | 显著降低显存和带宽,推理快 | 低位量化可能损失精度 |
| 蒸馏 | 模型规模 | 学生模型小、推理便宜 | 需要教师和训练数据,能力上限受教师限制 |
量化通常不需要重新训练,适合快速部署;蒸馏需要训练学生模型,但能得到结构更小、延迟更低的新模型。实际部署中两者可以叠加,例如先蒸馏得到小模型,再做 4-bit 量化。
相关阅读
- 推理框架与 KV Cache:推理框架与部署
- QLoRA 中的 4-bit 量化:LoRA 与 QLoRA
- 训练显存与混合精度:大模型训练系统
- 模型能力评价:大语言模型的评价
- 知识蒸馏中的概率分布:KL 散度与交叉熵