AIMET工具 压缩介绍(3)

240 篇文章 11 订阅
本文介绍了AIMET工具中的通道修剪技术,这是一种用于压缩深度学习模型的方法,主要针对Conv2d层。通道修剪通过分析每个输入通道的幅度并去除不重要的通道来减小模型大小。Winnowing过程则负责删除选定层的输入通道,并可能影响上游层的输出通道。权重重建是最后一步,确保剪枝后的模型输出与原始模型保持一致。整个流程旨在实现模型压缩的同时保持精度。
摘要由CSDN通过智能技术生成

AIMET 通道修剪

通道修剪是一种模型压缩技术,可减少给定模型中层中不太重要的输入通道。 目前 AIMET 支持 Conv2d 层的通道修剪。

整体流程

下图解释了通道修剪给定层的不同步骤。 从模型顶部开始,按照它们出现的顺序对所有选定要压缩的层重复这些步骤。
在这里插入图片描述在以下小节中更详细地解释了这些单独的步骤。

通道选择

对于给定的层和给定的压缩比,通道选择分析每个输入通道的幅度(基于该通道的内核权重)并选择幅度最小的通道进行修剪。

Winnowing

Winnowing用于去除从通道选择获得的权重矩阵的输入通道,从而产生压缩张量
在这里插入图片描述一旦移除了一层的一个或多个输入通道,则意味着也可以移除上游层的相应输出通道以获得进一步的压缩增益。 请注意,跳过连接或残差的存在有时会阻止上游层进行输出修剪。
在这里插入图片描述

AIMET Winnowing

概述

模型压缩算法 Channel Pruning 识别模型中的模块,其输入通道的子集可以在不损失太多准确性的情况下进行修剪。 除非明确删除,否则这些输入通道会占用内存并增加不必要的计算。 对于每个识别出的模块,Winnow 工具会删除选择用于修剪的输入通道。 仅支持 Conv2D 层进行Winnowing。

Winnowing概述

下图提供了 Winnowing 的图形概述。 在此示例中,模型中的模块的输入体积为 HxWx8,其中 H = 高度,W = 宽度,输入通道数 = 8。通道修剪算法确定对于该模块,输入通道 1、4 和 7 应 被修剪。 Winnowing会从此模块中删除已识别的输入通道。 模块的输入音量现在减少到 HxWx5。
在这里插入图片描述Winnowing的工作原理
当一个 Conv 模块的输入通道数减少时,它上面的模块的输出通道也必须修改。如果上面的模块是另一个 Conv 层,则该 Conv 层的输出通道也会减少以匹配被筛选的 Conv 模块的输入通道数。如果上面的模块不是 Conv 层(例如 BatchNorm、ReLU),则该模块只是将更改传播到上游。也就是说,BatchNorm 和 ReLU 模块的输出和输入通道都经过筛选,以匹配它们正下方的 Conv 层的筛选通道。

下图解释了一个非常简单的场景。在这种情况下,已确定一个 Conv 模块用于筛选其输入通道的子集。这由图左侧的绿色表示。图的右侧表示Winnowing 采取的行动。Winnowing包括对 3 个受影响的模块进行的以下更改。

已识别的 Conv 模块的输入通道子集将被删除。这由图右侧的粉红色表示。位于被筛选的 Conv 模块正上方的模块不是 Conv 模块。它可以是 ReLU 或 BatchNorm 模块。对于该模块,相应的输出和输入通道被筛选。这由图右侧的橙色表示。 ReLU/BatchNorm 上面的模块是另一个 Conv 模块。这个 Conv 模块的输出通道被筛选出来。 这在图的右侧用粉红色表示。

在这里插入图片描述

权重重建

作为通道剪枝的最后一步,AIMET 将调整被剪枝的层的权重和偏置参数,以尝试匹配该层的输出以在剪枝之前与输出紧密匹配。 这是通过收集随机样本来完成的 来自原始模型的层的输出和来自该层的修剪模型的相应输入样本。 AIMET 然后执行线性回归来调整层参数。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值