大模型压缩的核心目标是在尽可能保持模型性能(精度)的前提下,降低其存储需求、显存占用和推理延迟。三大主流方法——量化(Quantization)、剪枝(Pruning)和知识蒸馏(Knowledge Distillation)——分别从不同维度切入:
量化(侧重数值精度):将模型权重和激活值从高精度(如FP32)映射到低精度(如INT8/INT4)。它直接减少每个数值占用的比特数,从而降低模型体积和内存带宽压力。
适用场景:几乎所有部署场景,尤其是对延迟敏感的线上服务。训练后量化(PTQ)适合快速上线,量化感知训练(QAT)则适合对精度要求苛刻的任务。
剪枝(侧重结构稀疏):移除网络中冗余的神经元、注意力头或整个层。非结构化剪枝(移除单个权重)能极大减少参数量但依赖特殊硬件支持;结构化剪枝(移除通道/头)则对通用硬件(如GPU)更友好,能直接加速矩阵运算。
适用场景:需要显著减少计算量(FLOPs)的场景,如边缘设备部署,但通常需要配合微调(Fine-tuning)来恢复精度。
知识蒸馏(侧重模型结构):用一个参数量大、精度高的“教师模型”去指导一个轻量级“学生模型”学习,使学生模型模仿教师的输出分布(logits)或中间层特征。
适用场景:当你希望用一个更小的网络结构(如从LLaMA-70B蒸馏到LLaMA-7B)来近似大模型能力时,蒸馏几乎是最有效的手段,但训练成本较高。
对比知识蒸馏、量化和剪枝,它们在压缩比、精度损失和实现成本上有何优劣?
| 维度 | 知识蒸馏 | 量化 | 剪枝 |
|---|---|---|---|
| 压缩比 | 中等偏高(可设计任意小体积的学生网络,如教师1/10参数) | 极高(INT8压缩4倍,INT4压缩8倍,模型体积直线下降) | 高(结构化剪枝可达2~4倍FLOPs减少,非结构化更高) |
| 精度损失 | 最小(若能设计好学生结构,可接近教师性能,甚至在某些任务上超过) | 中等(PTQ在8-bit损失较小,4-bit损失明显;QAT可恢复大部分精度) | 较大(尤其是结构化剪枝,常掉点3~5个点,必须配合微调) |
| 实现成本 | 最高(需要训练教师模型、设计学生网络,并完成两阶段训练,GPU小时数巨大) | 最低(PTQ仅需几小时校准,无需训练;QAT需部分重训练) | 中等(需要评估重要性、执行剪枝和微调,流程相对复杂) |
| 硬件友好性 | 与学生模型结构相关,不依赖特殊硬件 | 极好(几乎所有硬件都支持低精度运算) | 结构化友好,非结构化差 |
实战选择逻辑:
若你有充足算力和时间,追求极致精度 → 首选蒸馏。
若你有现成模型,只需快速部署 → 首选PTQ。
若你需要显著降低计算量(延迟敏感)且能接受重训成本 → 选结构化剪枝+微调。
最理想的工业方案通常是蒸馏→剪枝→量化的组合流水线。