跳到主要内容
技术WHITEHOLE

模型蒸馏与剪枝:前提与不该做的三种情况

蒸馏与剪枝,指的是把大模型的能力迁移到更小的模型上、或裁掉模型中贡献较低的部分,以换取更低的部署成本与更快的推理速度。两者都要求有足够的样本、可靠的评测集与明确的部署约束。本文说明两种压缩方式的差别、需要什么前提、哪三种情况下不该做,以及验收方式

技术模型压缩模型蒸馏

蒸馏与剪枝,都属于用质量换成本的压缩手段:前者让小模型学习大模型的行为,后者直接移除模型里贡献较低的部分。它们不是免费的午餐 —— 省下的是算力,付出的是能力覆盖范围,问题在于能不能把代价控制在业务可接受的位置

两种压缩方式的区别

  • 蒸馏:用更大的模型产生样本,再让小模型去学习;能迁移的不只是答案,还有输出风格与拒答行为。
  • 剪枝:移除结构中冗余的部分,通常需要一次再校准;对高频能力影响较小,对长尾能力影响更大。
  • 共同点:两者都会改变模型的行为分布,因此都必须用同一套业务评测集回归验证。

选择哪一种,取决于约束是什么:受限的是显存,剪枝往往更直接;受限的是延迟或成本,蒸馏出来一个更小的模型通常更彻底。

需要什么前提

  • 有足够的高质量样本:没有样本就没有学习信号,样本质量直接决定压缩后的上限。
  • 有能判断质量下降的评测集:来自真实业务问题,覆盖高频、边界与高风险三类场景。
  • 有明确的部署约束:需要说清压缩是为了解决显存、延迟还是成本,否则无法判断取舍是否值得。
  • 有可回退的原始版本:压缩版本与原始版本应能通过配置切换。

不该做的三种情况

  • 没有部署约束,只是为了「更省」:约束不清时,压缩的代价与收益都无法评估,最后只会得到一个小一点但更难解释的模型。
  • 没有评测集就开始压:没有基线就无法判断质量是否下降,也无法确定下降是否可接受。
  • 数据涉敏但仍用真实业务数据生成样本:把数据用于训练等于扩大了它的处理范围,需要重新走一遍边界与合规确认。

第三条尤其容易被忽略。用真实业务数据生成训练样本,在很多团队眼里只是技术步骤,但从数据治理角度看,这是一次用途变更 —— 原本只用于推理的数据,现在被用于训练,两者的授权范围并不相同。

压缩之后要重测什么

  • 业务评测集:与压缩前使用同一套题目,比较可感知的差异。
  • 长尾与边界案例:压缩对小模型的影响通常首先体现在这些地方。
  • 拒答行为:模型是否仍然在不确定时选择拒答,而不是给出看似合理的答案。
  • 延迟与成本实测:确认压缩确实带来了预期收益,而不是只换了个瓶颈。

压缩与部署形态的关系

压缩不是独立的技术动作,它的意义取决于部署在哪里。同一份压缩结果,放在服务端与放在端侧,评价标准完全不同

  • 服务端部署:显存与并发是主约束,压缩的收益体现在同一台设备能承载更多请求。
  • 端侧或边缘设备:算力、内存与功耗都被严格限制,压缩往往是能不能跑起来的前提,而不是优化项。
  • 混合形态:敏感任务跑在端侧小模型上,复杂问题回落到服务端,此时压缩的目标是让回落频率尽可能低。
  • 离线场景:没有网络可用时,模型必须在本地完成推理,压缩决定的是可用能力的天花板。

验收

  • 有压缩前后的评测对照,且差异在事先约定的范围内。
  • 有部署约束的书面说明:这次压缩要解决的问题是什么。
  • 有可回退路径与切换记录。
  • 涉及真实业务数据的部分有用途变更确认,而不是默认沿用原授权。

FAQ

常见问题

与这篇相关、并且被问得最多的几个问题

蒸馏出来的小模型能替代原模型吗
在限定场景内通常可以,但覆盖范围会变窄。是否可替代取决于业务评测集上的表现,而不是压缩比例
剪枝会不会找不到可剪的部分
有可能。部分结构的冗余度本就不高,强行剪枝只会带来质量下降。此时应当重新评估约束,而不是继续加大剪枝力度
压缩用到的样本算不算数据使用
算。把原本用于推理的数据用于训练属于用途变化,需要重新确认边界与授权范围,这一点应在上线前就明确