2. 模型压缩基础
在把知识蒸馏与多任务学习真正落到工程部署之前,必须先理解模型压缩的四条基础技术路线:参数剪枝、量化、低秩分解与紧凑网络设计。它们并非互相替代,而是从不同维度削减模型的存储、计算与访存开销。本节将逐一拆解其原理、典型流程与适用边界,并给出选型对照。
一、参数剪枝:从冗余权重到稀疏结构
剪枝的出发点是深度网络普遍存在参数冗余。按粒度可分为非结构化剪枝(逐权重置零)与结构化剪枝(整通道、整注意力头、整层删除)。非结构化剪枝压缩率高,但稀疏矩阵在通用 GPU 上难以获得实际加速;结构化剪枝虽压缩率略低,却能直接减小张量尺寸,带来真实延迟下降。
典型流程为“训练—评估重要性—剪枝—微调”的迭代循环。重要性度量常用权重绝对值、Taylor 展开、BN 缩放因子等。剪枝后必须微调恢复精度,否则误差会累积。
# 结构化剪枝伪流程
1. 训练基线模型,记录各层 BN 缩放因子 γ
2. 按 |γ| 升序排序,确定全局剪枝比例 p
3. 删除低于阈值的通道及其关联卷积核
4. 对剪枝后模型进行 10~20 epoch 微调
5. 评估精度,若掉点超阈值则回退比例 p
适用边界:剪枝适合参数量大、冗余明显的过参数化模型(如 VGG、大 ResNet);对本身已紧凑的模型收益有限。非结构化剪枝需配套稀疏推理库,否则“压而不快”。
二、量化:用低位宽换吞吐与带宽
量化把 FP32 权重/激活映射到 INT8、INT4 甚至二值。它同时降低显存占用、提升访存效率,并可在支持 INT8 的硬件上获得数倍吞吐。核心是缩放因子与零点的确定:
# 对称量化(权重常用)
q = round(w / s), s = max(|w|) / (2^(b-1) - 1)
# 非对称量化(激活常用)
q = round(w / s + z), s = (max - min) / (2^b - 1), z = round(-min / s)
按阶段分为训练后量化(PTQ)与量化感知训练(QAT)。PTQ 只需少量校准数据,部署快;QAT 在训练中插入伪量化节点,精度更稳,尤其适合 INT4 及以下位宽。
适用边界:量化对卷积、全连接等计算密集层收益最大;对 LayerNorm、Softmax 等对数值范围敏感的算子需保留高精度或特殊处理。极低位宽(<4bit)通常需 QAT 与混合精度策略配合。
三、低秩分解:用矩阵分解压缩权重
低秩分解假设权重矩阵存在低秩结构,通过 SVD、Tucker 或 CP 分解,把大矩阵拆成若干小矩阵乘积。例如将 W ∈ R^{m×n} 近似为 U ∈ R^{m×r} 与 V ∈ R^{r×n} 的乘积,参数量从 m×n 降至 r(m+n),当 r ≪ min(m,n) 时显著压缩。
工程上常对卷积核做张量分解,或对全连接层做 SVD 截断。分解后同样需要微调以补偿近似误差。
适用边界:低秩分解适合权重矩阵维度大且谱衰减快的层;对已经低秩或非线性强的层效果差。分解引入的额外矩阵乘法可能增加推理碎片,需结合硬件评估。
四、紧凑网络设计:从结构源头控制成本
紧凑网络设计不压缩已有模型,而是直接设计高效结构,如深度可分离卷积、分组卷积、瓶颈结构、神经架构搜索(NAS)得到的轻量骨干。深度可分离卷积把标准卷积拆为逐通道卷积与逐点卷积,计算量可降至约 1/k² + 1/C_out 量级。
适用边界:紧凑设计适合从零构建端侧模型,精度上限受结构容量限制;若已有大模型且精度要求高,通常先剪枝/量化,再考虑结构替换。
五、四条路线对照与选型
| 方法 | 压缩对象 | 典型收益 | 主要代价 | 适用边界 |
|---|---|---|---|---|
| 参数剪枝 | 冗余权重/通道 | 参数量、部分延迟 | 需微调,稀疏加速依赖库 | 过参数化模型 |
| 量化 | 数值位宽 | 显存、带宽、吞吐 | 精度损失,算子兼容性 | 计算密集层,支持低位宽硬件 |
| 低秩分解 | 权重矩阵秩 | 参数量、矩阵乘法量 | 近似误差,碎片化 | 大维度、谱衰减快 |
| 紧凑网络设计 | 整体结构 | 算力、参数量、延迟 | 精度上限,重新训练 | 端侧从零构建 |
六、案例与误区复盘
案例:某 ResNet-50 图像分类模型部署到边缘设备。先做通道剪枝压缩 40%,再对卷积层做 INT8 PTQ,最后用深度可分离卷积替换部分 3×3 卷积。三步组合后模型体积降至原 18%,延迟下降 2.7 倍,Top-1 精度仅掉 0.8%。
理解这四条路线的原理与边界,是后续把知识蒸馏、多任务压缩与部署工程串联起来的基础。只有先明确“压什么、怎么压、在哪里收益”,才能在具体任务中做出合理的组合决策。