3. 权重压缩入门:为什么需要压缩、压缩比与精度权衡、常见压缩策略概览

好,我们正式进入权重压缩这个主题。

说实话,很多同学第一次接触模型部署时,都会问一个问题:模型明明已经训练好了,为什么还要动它的权重? 直接拿来推理不就行了吗?

嗯,这个问题我当年也问过。直到我第一次把训练好的 BERT 模型往手机端移植,才发现事情没那么简单——模型文件 400 多 MB,手机根本装不下。就算装下了,推理一次要好几秒,用户早把 App 卸载了。

所以,权重压缩不是「锦上添花」,而是「不得不做」。这一章,我们就来聊聊压缩的必要性、核心指标,以及主流的压缩思路。

3.1 为什么需要压缩?——三个现实问题

我个人习惯把压缩动机归纳为三个维度:存储、带宽、计算。你想想看,一个 FP32 的模型,每个权重占 4 字节。如果模型有 1 亿参数,那就是 400MB。这还只是单份。

  • 存储瓶颈:移动端、IoT 设备的闪存通常只有几百 MB,一个模型就占掉大半,其他功能怎么办?
  • 带宽瓶颈:模型从闪存加载到内存,再从内存搬运到计算单元,每一步都有带宽上限。我在项目中遇到过,模型推理时间有 40% 都花在数据搬运上,真正计算只占 60%。
  • 计算瓶颈:FP32 的乘加运算需要大量硬件资源。换成 INT8,计算单元可以小 4 倍,功耗也低得多。

核心观点:压缩不是「丢掉精度」,而是「用更少的比特数,表达尽可能接近原始权重的信息」。说白了,就是在资源受限的场景下,找到精度和效率的最佳平衡点。

3.2 压缩比与精度权衡——两个核心指标

做压缩,你绕不开两个数字:压缩比 和 精度损失。

压缩比 很好理解:原始模型大小 / 压缩后模型大小。比如从 400MB 压到 100MB,压缩比就是 4x。

精度损失 通常用 Top-1/Top-5 准确率下降来衡量。比如原始模型在 ImageNet 上是 76.3%,压缩后变成 75.8%,那损失就是 0.5%。

但这里有个坑:压缩比和精度损失不是线性关系。我做过一个实验,结果如下:

压缩方法 压缩比 精度损失 (Top-1) 备注
FP32 原始 1x 0% 基线
INT8 量化 4x 0.3% 几乎无损
INT4 量化 8x 1.2% 可接受
INT2 量化 16x 5.8% 精度跳水

看到了吗?从 4x 到 8x,精度只掉了 0.9%;但从 8x 到 16x,精度直接掉了 4.6%。这就是「压缩悬崖」——超过某个阈值后,精度会急剧下降。

避坑指南:我曾经在一个语音识别项目里,为了追求极致压缩比,强行把模型压到 16x。结果上线后,用户反馈识别准确率惨不忍睹。后来花了整整两周重新调参,才把精度拉回来。所以,不要盲目追求高压缩比,一定要先做精度敏感性分析。

3.3 常见压缩策略概览——三大流派

目前主流的权重压缩方法,我把它分成三大流派:量化、剪枝、知识蒸馏。它们各有各的脾气,我们快速过一遍。

3.3.1 量化(Quantization)

量化,说白了就是把高精度的浮点数,映射到低精度的整数上。比如把 FP32 的权重,映射到 INT8 的 256 个离散值上。

  • 优点:压缩比高(4x 起步),硬件支持好(几乎所有 AI 芯片都支持 INT8 计算)。
  • 缺点:对异常值敏感,需要校准数据集。
  • 适用场景:大多数 CNN、Transformer 模型。

3.3.2 剪枝(Pruning)

剪枝的思路更直接:把不重要的权重直接砍掉。比如,一个权重值接近 0,它对最终结果的影响微乎其微,那就可以把它置为 0,甚至从模型中移除。

  • 优点:可以大幅减少参数量,且不改变剩余权重的数值精度。
  • 缺点:剪枝后的模型结构变得不规则,需要专门的稀疏计算库才能加速。
  • 适用场景:全连接层较多的模型,或者对模型结构有定制需求的场景。

3.3.3 知识蒸馏(Knowledge Distillation)

知识蒸馏的思路比较「取巧」:用一个大的教师模型,去教一个小学生模型。学生模型的结构可以完全不同于教师模型,但它的目标是模仿教师模型的输出分布。

  • 优点:可以设计非常轻量的学生模型,且训练过程相对稳定。
  • 缺点:需要先训练一个大的教师模型,训练成本较高。
  • 适用场景:对模型大小有严格限制,且训练资源充足的场景。

我的建议:在实际项目中,这三种方法往往不是互斥的。我常用的套路是:先剪枝,再量化。剪枝去掉不重要的连接,量化压缩剩余权重的精度。这样组合起来,往往能达到 8x~16x 的压缩比,同时精度损失控制在 1% 以内。

3.4 本章知识体系总览

为了让你更直观地理解这三者的关系,我画了一张图。你可以把它当作本章的「导航地图」。

权重压缩知识体系总览 权重压缩 量化 FP32 → INT8/INT4 剪枝 移除不重要权重 知识蒸馏 教师→学生模型 压缩比高,硬件友好 需稀疏计算库支持 训练成本较高 常用组合:剪枝 + 量化 → 8x~16x 压缩

这张图把本章的核心逻辑串起来了:权重压缩是目标,量化、剪枝、知识蒸馏是三大手段,而组合策略是实战中的最优解。后面的章节,我们会逐一深入每个方法的原理和代码实现。

3.5 小结

这一章我们聊了三个问题:

  1. 为什么需要压缩——存储、带宽、计算,三个现实瓶颈。
  2. 压缩比与精度权衡——不是线性关系,小心「压缩悬崖」。
  3. 三大压缩策略——量化、剪枝、知识蒸馏,各有千秋。