Model Compression

解锁边缘计算潜能 · 让 AI 无处不在

深度学习模型压缩技术全景解析

为什么需要模型压缩?

背景现状

随着深度学习的发展,模型参数量呈指数级增长(如 GPT-3 拥有 1750 亿参数)。然而,移动端、IoT 等边缘设备的计算能力、存储空间和电池续航都非常有限。

核心定义

模型压缩 (Model Compression) 是一系列技术的统称,旨在在尽可能保持模型性能(如精度)的前提下,减少模型的参数量、计算量(FLOPs)和存储占用,从而提升推理速度。

关键价值

  • 低延迟: 实时响应,提升用户体验。
  • 💾 低存储: 减小 App 体积,方便分发。
  • 🔋 低能耗: 延长移动设备续航。
  • 🔒 隐私保护: 数据无需上传云端,本地推理。

四大核心压缩方法

1. 模型剪枝 (Pruning)

稀疏化结构化/非结构化

原理: 类似于修剪树木的枯枝。神经网络中存在大量冗余的参数(权重接近于 0),剪枝技术通过移除这些对输出贡献较小的神经元或连接,来减少模型大小。


技术细节:

  • 非结构化剪枝: 随机将权重置零,导致稀疏矩阵,需要专门硬件加速。
  • 结构化剪枝: 直接移除整个 Filter 或 Channel,对硬件友好,直接带来加速。
红色节点/连线表示被剪枝

2. 模型量化 (Quantization)

低精度INT8/FP16

原理: 将模型权重和激活值从高精度(如 32位浮点数 FP32)转换为低精度(如 8位整数 INT8)。这不仅减少了 4 倍的存储空间,还能利用整数运算加速推理。


常见类型:

  • 训练后量化 (PTQ): 模型训练完后直接量化,简单快捷。
  • 量化感知训练 (QAT): 在训练过程中模拟量化误差,精度损失更小。
FP32 (Continuous) FP32 (32-bit) ➔ INT8 (8-bit) 存储减少 75% 推理速度提升 2-4x

3. 知识蒸馏 (Knowledge Distillation)

Teacher-Student软标签

原理: 训练一个庞大的“教师模型”(Teacher),然后让一个小巧的“学生模型”(Student)去模仿教师模型的输出(不仅仅是最终分类,还包括概率分布)。


优势: 学生模型结构简单,但能学到教师模型的“暗知识”(Dark Knowledge),从而表现出超越其结构限制的性能。

Teacher Large Model Student Small Model Knowledge / Soft Targets

4. 低秩分解 (Low-Rank Factorization)

矩阵分解SVD

原理: 深度学习模型中的卷积核或全连接层本质上是矩阵。低秩分解通过将一个大的权重矩阵分解为两个或多个较小的矩阵相乘,从而减少参数量。


应用: 常用在卷积神经网络(CNN)中,将标准的 3x3 卷积分解为深度卷积(Depthwise)和逐点卷积(Pointwise),如 MobileNet 系列。

W (MxN) U (MxK) × V (KxN) K << min(M, N)

方法优劣对比

方法 优点 缺点 适用场景
剪枝 (Pruning) 显著减少参数量,可能带来大幅加速(结构化)。 非结构化剪枝需要特定硬件支持;训练复杂。 模型参数冗余度高的场景(如 VGG, ResNet)。
量化 (Quantization) 压缩率高(4x),硬件加速效果明显,通用性强。 极低比特(如 2-bit)会导致精度明显下降。 几乎所有边缘侧部署(手机 NPU, DSP)。
知识蒸馏 (Distillation) 不改变模型结构,可与其他方法叠加。 训练时间长(需要训练 Teacher 和 Student)。 提升小模型性能,模型压缩的辅助手段。
低秩分解 理论基础扎实,易于实现。 压缩率受限于秩的选取,加速比不如量化明显。 卷积层密集的 CNN 模型。

实战应用案例

案例一:移动端图像分类

任务:在 Android 手机上运行 ResNet-50 进行物体识别。

方案: 结合 剪枝 (30%) + INT8 量化

98MB 原始模型 18MB 压缩后 80ms 15ms 体积减少 81% 速度提升 5.3x

案例二:IoT 语音唤醒 (KWS)

任务:智能音箱上的“Hi, Siri”唤醒词检测。

方案: 使用 知识蒸馏 训练 TinyBERT。

Teacher (BERT) Student (Tiny) Acc: 98% 参数量: 110M Acc: 96.5% 参数量: 14M 精度损失 < 1.5% 模型缩小 87%