模型压缩是把大模型塞进小设备的必修课,但每种压缩方法都要付出代价。理解“代价在哪”,才能在精度和成本之间做取舍。

量化是最常用的第一刀。把高精度权重压到 INT8、INT4,显存占用和推理速度立刻好看。但代价是精度损失:INT8 对大多数任务影响很小,基本可以放心上;INT4 就要看任务了,数学推理、代码生成这类对数值敏感的任务掉点明显,闲聊、分类、摘要则相对耐受。经验是先做逐层敏感度分析,对敏感层保留更高精度,混合量化往往比一刀切效果好。

剪枝是把“不重要的”权重或通道直接砍掉。非结构化剪枝(零散地砍单个权重)压缩率高,但对硬件不友好,实际加速有限;结构化剪枝(整通道、整头地砍)对推理加速实在,但掉点也更狠。剪枝之后通常要再做一轮微调“回血”,不然精度窟窿补不回来。

知识蒸馏是换个思路:不压缩大模型,而是训练一个小模型去模仿大模型的输出。学生模型的上限取决于老师模型和蒸馏数据的质量,好处是小模型架构可以自由设计,部署灵活。代价是训练成本——蒸馏本身就是一次完整的训练流程,数据量小了效果出不来。

实战里的排序建议:先量化,这是投入产出比最高的;量化不够再考虑蒸馏,重新训练一个适配目标场景的小模型;剪枝放在最后,只在你对模型结构有充分理解时动手。每做一步压缩,都要在你自己的业务评测集上跑一遍对比,而不是只看公开榜单——榜单上的分数,保不住你的业务指标。

还有一个常被忽略的点:压缩后的模型,部署方式也要跟着变。低精度模型需要支持相应精度的推理引擎才能真正吃到加速红利,否则只是省了显存,速度没变化。选型时把“模型格式—推理引擎—硬件”当成一个整体看,别只盯着模型文件本身。