第 288 题:设计模型压缩的剪枝算法,结构化与非结构化的选择。
题目
设计模型压缩的剪枝算法,结构化与非结构化的选择。
完整讲解
一、模型压缩与剪枝
- 剪枝:去掉部分参数(置零或移除),得到更小、更快的模型。结构化剪枝移除整块结构(如整通道、整头、整层);非结构化剪枝移除单个权重,稀疏度高但需稀疏计算支持才能加速。
二、结构化剪枝
- 单位:以通道(channel)、注意力头(head)、层(layer)为单位。例如卷积中剪掉某输出通道,则对应卷积核整列与下一层整行可删;Transformer 中剪掉某 head 或某 FFN 维度。
- 优点:剪枝后仍是稠密矩阵,现有框架与硬件可直接加速;实现简单、压缩与加速比稳定。
- 选择:按重要性排序(如通道的 L1 范数、梯度、BN 缩放因子),删掉重要性低的;可逐层或全局排序,需配合微调恢复精度。
三、非结构化剪枝
- 单位:单个权重。按权重大小或重要性置零,得到稀疏权重矩阵;稀疏度可很高(如 90%)。
- 优点:理论压缩比高;实际加速依赖稀疏算子(稀疏矩阵乘、稀疏卷积)与硬件支持,否则仅省存储不省算。
- 选择:按绝对值或梯度敏感度;可逐层定比例或全局定总稀疏度;常需微调与重训。
四、选型与流程
- 若目标为推理加速且无强稀疏支持:优先结构化(通道/头/层)。若存储为主、有稀疏库:可非结构化。流程一般为:预训练 → 剪枝(按重要性)→ 微调/校准 → 导出与部署;可迭代多轮剪枝+微调。
面试要点
- 能说清结构化与非结构化剪枝的区别(单位、是否需稀疏支持、加速效果)。
- 能说明重要性度量(范数、梯度、BN)与剪枝流程(剪枝→微调→部署);能根据目标选型。
记忆要点
- 结构化:按通道/头/层删,稠密可直接加速;非结构化:按权重稀疏,需稀疏算子才加速。
- 重要性:L1、梯度、BN 等;流程:剪枝→微调;选型看加速与硬件支持。