相关工作
Last updated
Last updated
Get amazing things done with awesome feature one. But remember that awesome feature two and three exist too. In fact, Awesome Product is full of awesome features.
Get amazing things done with awesome feature two. But remember that awesome feature one and three exist too. In fact, Awesome Product is full of awesome features.
由于特征图的不同通道会含有冗余信息,该部分的卷积计算并没有对目标检测提供有效地帮助,因此我们使用DepGraph剪枝[1]对模型进行压缩,将其裁剪可以进一步减少模型计算量。该方法的核心是估计依赖图(DepGraph),它显式地模拟神经网络中成对层之间的相互依赖性。我们引入DepGraph进行结构修剪的动机源于观察到:一层的结构修剪有效地“触发”相邻层的修剪,从而进一步导致连锁效应。因此,为了跟踪不同层之间的相互依赖关系,我们可以将依赖链分解为递归过程,这自然归结为寻找图中最大连接组件的过程,并且可以通过图遍历以O(N)的复杂度来解决。具体来说,对于网络中待剪枝层,我们可以将其作为根,在相邻耦合层上触发剪枝,然后继续以被触发层为起点,递归重复触发过程。这样就可以全面收集所有的耦合层进行剪枝。同时,由于单个层中的参数重要性由于与其他参数化层的纠缠而不再显示正确的重要性。在不同层上估计的重要性很可能是非相加的,有时甚至是自相矛盾的,这使得很难选择真正不重要的组进行修剪。为了解决这个问题,我们充分利用由DepGraph提供支持的依赖建模的综合能力来学习组内一致的稀疏性,以便可以安全地删除那些被归零的组,而不会造成太多的性能下降。通过依赖性建模,该方法在实验中表明,一个简单的L1规范准则可以达到与现代方法相当的性能。
特性:
结构化(通道)剪枝: 支持CNNs, Transformers,各类检测器以及语言模型
高级剪枝器(High-level pruners): MagnitudePruner, BNScalePruner, GroupNormPruner (论文所使用的组剪枝器), RandomPruner等
支持计算图构建和依赖建模
支持的基础模块: Conv, Linear, BatchNorm, LayerNorm, Transposed Conv, PReLU, Embedding, MultiheadAttention, nn.Parameters and 自定义层(customized modules)
支持的操作: split, concatenation, skip connection, flatten, reshape, view, all element-wise ops等
底层剪枝函数 (Low-level pruning functions)