4.2 结构化与非结构化优化


4.2 结构化与非结构化优化

本节摘要:剪枝按「删什么粒度」分两条路:非结构化剪枝删单个权重,压缩率惊人却难以兑现算力;结构化剪枝删整通道、整滤波器,压缩率温和但硬件实打实受益。本节讲清两者的分野、蒸馏的补位角色,以及部署视角下的选择纪律。

量化动的是数值刻度,这一节的方法动的是结构本身:把「不重要」的参数直接删掉。听起来比量化更彻底,工程上却更挑剔——删得对是瘦身,删得错是截肢。本节把两条剪枝路线讲透,再说清蒸馏如何与剪枝配合,最后给一张部署视角的方法选型表。

一、非结构化剪枝:理论丰满,现实挑剔

非结构化剪枝按单个权重的重要性打分,把得分低的置零,不管位置。阈值调高时稀疏度能到九成以上,模型理论上只剩一成乘加——纸面数字非常诱人。

问题出在硬件的口味上。现代计算单元的效率建立在规则、连续的数据布局上:向量指令一次吃一组连续数据,缓存按行搬运。散布的零值在内存里仍占着位置,加载仍要整行读,逐个判断「这个值是不是零再决定跳不跳」的分支开销,往往比老老实实算一次乘加还贵。理论省下的九成算力,硬件可能一分钱都没收到。

它真正兑现的场景有两类:一是存储与传输——稀疏表示配合压缩编码,权重文件可以显著变小,这对模型分发与端侧存储有意义;二是对稀疏有原生支持的硬件,比如某些加速器按压缩稀疏格式计算,稠密矩阵乘之前先做硬件级压缩。除此之外,把非结构化剪枝当性能手段,多数时候会失望。

二、结构化剪枝:删得少,但删的每一刀都算数

结构化剪枝以硬件看得懂的单位下手:整个输出通道、整个滤波器、整个分支。删掉一个卷积通道,意味着该滤波器全部权重消失、下游对应输入通道一起移除——模型拓扑真的变了,参数、内存、计算量同时下降,不需要硬件有任何特殊支持就能兑现。

代价是两个。其一,压缩率做不高:通道是粗粒度,删一个通道顶替成百上千个非结构化零,同样的精度损失下压缩比小一个量级。其二,需要「善后」:剪完的网络通常要微调几轮让精度回血,严重的剪枝比例甚至要花接近重训的成本。

工程上的标准打法是渐进式:每轮剪掉一成左右的通道,微调恢复,评估,再剪下一轮;逼近精度红线就停手。一步剪到五成再想救回来的路线,翻车概率远大于渐进路线。

三、蒸馏:剪枝的搭档而非替代

知识蒸馏是另一条「变小」的路:让一个小网络(学生)去模仿大网络(教师)的输出分布——不只学正确答案,还学教师对各候选答案的置信度分配。这份「软目标」携带的暗知识,让学生的精度上限明显高于同结构直接训练。

部署视角下,蒸馏与剪枝是互补位:剪枝在既有模型上做减法,起点是现成的精度;蒸馏训练一个新模型,起点是训练管线。团队有训练资源时,「蒸馏出小模型再量化」的组合拳常常优于「在大模型上硬剪」;只有推理资源时,剪枝加微调是更现实的选择。NNCF 生态里量化与剪枝接口齐备,蒸馏需要自备训练管线——这是工具选型时要算的隐性成本。

四、方法选型:一张部署视角的对照表

方法 粒度 典型压缩率 硬件受益 前置条件
非结构化剪枝 单权重 高(可达九成) 多数无,稀疏硬件除外 打分与掩码工具
结构化剪枝 通道、滤波器 中(三到五成) 直接兑现 微调管线回血
知识蒸馏 模型整体 按学生模型设计 兑现 完整训练资源
量化(对照项) 数值刻度 四倍存储起步 直接兑现 校准数据即可

表的读法自上而下是「压缩自由度递增、部署兑现难度递增」:量化最保守但最稳,蒸馏最自由但最贵。我们的建议路线是先量化、再评估、后动结构——量化到 INT8 后如果性能已达标,结构优化根本不用启动;达标无望时,优先评估换更小的骨干网络(结构性收益一步到位),最后才考虑在现有网络上做剪枝手术。很多团队把顺序走反,在剪枝上耗掉的周期,够换三个轻量骨干做完整验证。

⚠️ 剪枝后的模型一定要重跑 2.1 节的对拍与全量精度验证:拓扑变了,任何「应该差不多」都是未经证实的假设。

剪枝决策的三道门

把「何时剪枝」细化成三道门,依次过。第一道门,量化的收益确认不足——量化加调度优化后性能仍不达标,才开剪枝议题;量化还有余量就剪枝,是用高风险工具干低风险工具的活。第二道门,存在可换的更小骨干——网络结构里有过时或明显超配的骨干时,换一个同精度轻量骨干的收益风险比远优于在旧结构上做手术;剪枝真正的用武之地是「模型不能换」的场景(已定型、有合规绑定、或与上游系统耦合)。第三道门,有微调资源——剪后不微调等于裸奔,没有训练管线与数据的团队,剪枝议题到此为止。三道门逐个过,大多数项目会在第一或第二道门转身——这不是否定剪枝,而是把它放到该在的位置:特定约束下的精准工具,不是常规优化手段。

一单通道剪枝的数字复盘

给结构化剪枝补一组完整数字,让「温和但兑现」变成具体量感。对象是一个双分支检测模型,约束是模型不能换(与标注管线深度耦合)。作业分四轮:第一轮剪百分之十通道,微调五个周期,精度回弹到基线零点二以内,参数量降百分之十二;第二轮再剪百分之十,微调后差零点八;第三轮剪到累计百分之三十五,精度差扩大到一点九,微调十周期只回到一点一;第四轮停在第三轮水平,接受一点一的掉点换端侧延迟降三成、体积降四成。四轮作业历时一周半,其中微调占八成时间。

这组数字的三个读法:收益是真实的(延迟与体积同步下降,硬件无需任何稀疏支持);代价也是真实的(训练资源、周期、精度);边际递减明显——第三轮之后每多剪一分,微调成本非线性上升。把它与 4.1 节的量化对照:量化一天拿到接近的延迟收益且几乎无损,剪枝一周半拿到多出来的三成——顺序纪律「先量化后评估」的经济账,就在这两个数字之间。

稀疏的另一种兑现:存储与分发

非结构化剪枝在性能上空头,在「模型分发」上却常有实绩。剪枝后的权重矩阵高度稀疏,配合稀疏编码格式存储,模型包体积可降到原品的几分之一——对 OTA 分发频繁、设备存储金贵的边缘产品线,这一条足以让它进工具箱。兑现它只需「训练侧剪枝、分发侧编码、端侧解码还原」的固定链路,推理侧拿到的仍是稠密模型,性能零风险。一句话总结这一节的两条路:要推理速度,走结构化;要分发体积,非结构化加编码;两条路各管一段,别混着期待。

三个高频追问

结构优化收尾,回答三个高频追问。追问一:剪枝比例有没有经验数字?有起点没终点——分类骨干常在四到六成通道时精度明显跳水,检测模型更低,但每家模型差异极大,「渐进加压、红线即停」的流程比任何经验数字可靠。追问二:剪枝与量化谁先谁后?先剪后量——剪枝改变激活分布,先量化的刻度会被剪枝作废;顺序反了要重做量化。追问三:蒸馏的学生模型怎么选尺寸?按部署设备的延迟预算反推——先拿几个现成小模型在目标设备上跑出延迟档位,再把「落在预算内的最大学生」当候选,蒸馏要的是「预算内的精度极限」,不是「越小越好」。三个追问里,第二问的顺序纪律与 4.1 节的追问呼应,值得与它一起写进团队规范:压缩手段的排列组合,顺序本身就是参数。

本节要点回顾

  • 非结构化剪枝的两副面孔:存储与分发的好手,多数硬件上的性能空头。
  • 结构化剪枝讲兑现:删通道动真拓扑,压缩温和但每一刀都省真金白银,渐进式是标准打法。
  • 蒸馏补位:有训练管线时「蒸馏小模型加量化」常优于硬剪大模型。
  • 顺序纪律:先量化、再换骨干、最后剪枝——按兑现确定性排优先级。

本节的方法都在「改模型」层面发力,下一节回到硬件本身:同样的模型在不同设备上到底差多少、为什么差、哪些参数能把设备潜力真正榨出来——4.3 节用实测数据说话。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U