导读与核心亮点

欢迎阅读这篇重点关注视觉模型优化的前沿译文。对于致力于模型压缩、边缘计算与轻量化部署的开发者和算法研究员来说,这篇文章提供了一个极为巧妙且通用的剪枝新范式。

  • 🔥 核心痛点: 传统的结构化剪枝通常依赖“全局排序”来评估参数重要性 。然而,现代高级视觉模型(如 Vision Transformer 和 ConvNext)内部充斥着注意力机制、跳跃连接等“异构子结构” 。由于它们的计算拓扑和参数尺度截然不同,直接跨结构比较重要性就像“拿苹果和橘子比大小”,极易导致评估失真 。
  • 💡 创新方案: 作者提出了一种非常优雅的同构剪枝(Isomorphic Pruning)方法 。核心思想是将复杂的网络拓扑拆解为多个结构完全相同的“同构群”,并仅在同构组内进行独立的排序和剪枝,从而彻底解决了异构结构不可比的难题 。
  • 📈 惊艳效果: 这种化繁为简的方法在多种架构上都拿到了 SOTA 级别的结果 。例如,在参数敏感的 DeiT 模型上,该方法将 DeiT-Tiny 的准确率从 74.52% 逆势提升至 77.50% 。在传统卷积网络上,它也成功实现了 ResNet-101 的无损压缩 。
  • 📌 阅读建议: 重点关注本文的 第 3 节(图同构建模与排序逻辑) 以及 附录部分(ViT 的具体同构组拆解) 。无论您的业务场景是 CNN 还是大热的 Transformer,这套即插即用的思想都能为您提供极具价值的参考。

视觉模型的同构剪枝 (Isomorphic Pruning for Vision Models)

论文地址: https://arxiv.org/pdf/2407.04616
作者: 方公凡¹,新荫¹,迈克尔·毕²,王新潮¹
机构: ¹ 新加坡国立大学,² 华为技术有限公司

摘要

结构化剪枝通过去除冗余子结构来减少深度神经网络的计算开销。然而,评估不同子结构的相对重要性仍然是一个重大挑战,特别是在具有注意力、深度卷积或残差连接等新颖机制和架构的先进视觉模型中。这些异构子结构通常表现出不同的参数规模、权重分布和计算拓扑,给重要性比较带来了相当大的困难。

为了克服这一点,我们提出了同构剪枝,这是一种简单的方法,在一系列网络架构(如视觉 Transformer 和卷积神经网络)中都证明了有效性,并在不同模型规模下都能提供有竞争力的性能。同构剪枝源于一个观察结果,即在预定义的重要性标准下评估时,异构子结构在其重要性分布上表现出显著差异,而同构结构则呈现出相似的重要性模式。这启发我们对不同类型的子结构进行单独排序和比较,以进行更可靠的剪枝。

我们在 ImageNet-1K 上的实证结果表明,同构剪枝超过了专为 Transformer 或卷积神经网络设计的多个剪枝基线。例如,通过剪枝一个现成的 DeiT-Base 模型,我们将 DeiT-Tiny 的准确率从 74.52% 提高到了 77.50%。对于 ConvNext-Tiny,我们将性能从 82.06% 提高到了 82.18%,同时减少了参数数量和内存使用。

关键词: 网络剪枝 · 视觉 Transformer · 卷积神经网络


1. 引言

深度神经网络通常参数过多,包含许多冗余子结构。通过结构化剪枝可以有效消除这种冗余,而不会显著牺牲网络性能[16, 22, 25]。剪枝通常遵循“排序后剪枝”框架:为了在保留网络学习能力的同时便于压缩,使用精心设计的标准来评估不同结构的重要性得分[11, 22, 40],然后进行排序过程以识别和删除那些相对不重要的结构。剪枝后,对压缩模型进行微调以恢复其性能[11, 18]。

然而,基于排序的结构化剪枝预先假定了一个潜在假设,即来自不同结构的参数是直接可比的。经典的深度神经网络,如 VGG [47],是通过堆叠相似的卷积层或块构建的,其中神经元连接共享相似的计算拓扑结构。在这种情况下,一个直接的全局排序有望揭示它们的相对重要性并去除不重要的参数[11, 22]。
在这里插入图片描述

然而,随着网络结构设计的最新创新,像 Vision Transformers [10、31、51] 和 ConvNext [33] 这样的先进视觉模型采用了更复杂的设计,如复杂的残差连接[19、24]、注意力机制[53]和深度卷积[6]。这些新颖的结构增加了网络的内部复杂性和异质性,对剪枝重要性标准的可靠性提出了挑战。例如,一个普通的 Vision Transformer [10] 由 MLP、多头注意力和跳跃连接组成。即使在同一个多头注意力层中,也有两种剪枝方案,即去除整个注意力头[37, 54]或头内维度[60, 70]。这些结构因其计算拓扑结构而异,并且,正如实验中将说明的那样,往往表现出不同的重要性分布。在这种情况下,直接比较这些异构结构的重要性可能会有问题。

为了解决这个问题,我们提出了一种简单的剪枝方法,称为同构剪枝,以缓解由异构子结构引起的不可比性问题。该方法的本质在于基于子结构的计算拓扑将网络分解为多个同构组。如图2 (d)所。
在这里插入图片描述

每个同构组包含具有相同结构的元素,并且倾向于呈现相似的重要性分布,使得比较它们的相对重要性更加合理。

为了验证我们方法的有效性,我们在各种视觉模型上进行了实验,包括 DeiT [51]、ConvNext [33]、ResNet [19] 和 MobileNet-V2 [45]。在 ImageNet-1K [8] 上的剪枝结果表明,同构剪枝相对于专为 CNN 或 Transformer 设计的剪枝算法,实现了相当甚至更优的性能。例如,通过对预训练的大型 DeiT 模型进行剪枝,与从零开始训练的模型相比,我们将 DeiT-T 模型的性能从 74.52% 提高到了 77.50%。同样,我们的算法在 CNN 上也产生了令人满意的结果。我们通过剪枝构建了紧凑的 ConvNext 和 ResNet,它们具有更少的 MAC 和参数,同时超越了传统训练的模型。此外,我们还研究了压缩模型在 GPU 和 CPU 设备上的实际延迟和内存占用情况。我们的研究结果表明,同构剪枝方法剪枝的模型实现了显著的实际加速,并且与精心设计的高效架构具有竞争力。

因此,我们的贡献在于一种实用且通用的剪枝方法,它能够通过新颖的机制和架构来处理各种视觉模型。在 ImageNet-1K 基准测试中,剪枝后的模型表现优于多个剪枝竞争对手。


2. 相关工作

网络剪枝。 深度神经网络通常参数过多,可以在不显著降低性能的情况下进行剪枝[16, 25]。网络剪枝的探索可以追溯到关于神经网络的早期工作[1, 17, 25]。在过去几年中,已经对卷积网络进行了大量工作以验证剪枝的有效性,这些工作大致可分为非结构化剪枝[16, 29, 35]和结构化剪枝[5, 11, 18, 22, 57]。非结构化剪枝通过强制部分权重为零来压缩预训练模型,从而得到稀疏网络[29]。为了加速稀疏模型,将使用特殊的模式和设备,如 N:M 稀疏度[12、43、49]。结构化剪枝通过去除卷积神经网络中的通道[11]或块[14]等子结构,提供了一种硬件友好的方法,在没有专用加速的情况下提高了模型效率。近年来,大量工作将网络剪枝的思想应用于视觉 Transformer。结果表明,即使是普通的视觉 Transformer 也可以进行压缩,以实现更好的效率-性能权衡[2, 4, 6, 48, 60, 62-64, 66, 67, 70, 72]。在文献中,Transformer 剪枝已经从多个维度进行了研究,如宽度缩减[72]、深度剪枝[63]、注意力头移除[60]、稀疏训练[4]和架构变换[18]。

通过全局排名进行剪枝。 在网络剪枝的背景下,全局剪枝被认为是一个关键的探索主题。这种方法需要对所有网络层进行全局排名,根据排名[5, 11, 22, 60]为每层分配自适应剪枝率。网络中的不同层通常表现出不同程度的冗余。为此,全局剪枝的优势在于能够创建一个参数效率更高、非均匀压缩的模型[60]。然而,排名方案仍存在一个关键挑战:如何确保不同层之间的一致性和可比性?针对这个问题,一种广泛使用的解决方案是在每层基础上对分数进行归一化,以平衡网络中的重要性分布[30]。或者,一些方法使用稀疏训练来学习有效的目标结构[11],但由于额外的优化,这可能成本很高。在这项工作中,我们引入了一种更直接的方法,称为同构剪枝,以促进可靠的剪枝排名。


3. 方法

同构剪枝的核心思想很简单:我们根据网络拓扑结构对网络中的子结构进行分组,并在组内进行重要性排序。这就带来了两个问题:

  1. 如何识别网络中可移除的子结构;
  2. 如何比较拓扑图以进行分组和剪枝。
3.1 网络中的子结构

结构化剪枝旨在移除网络中的子结构,例如隐藏状态或特征的维度。为了使表述清晰,我们主要关注堆叠全连接网络,尽管本文建立的原理可以很容易地扩展到卷积神经网络(CNNs)和变压器(Transformers)。

最初,我们考虑一个由矩阵 W ∈ R m × n W \in \mathbb{R}^{m\times n} WRm×n 参数化的单个线性层。为了阐明剪枝过程,我们引入一个如下定义的剪枝函数 g ( W , d , k ) g(W, d, k) g(W,d,k)

w ^ = g ( W , d , k ) = { g ( W , 0 , k ) = W [ k , : ] ∈ R 1 × n , if pruning output dimension , g ( W , 1 , k ) = W [ : , k ] ∈ R m × 1 , if pruning input dimension , ( 1 ) \hat{w} = g(W, d, k)= \begin{cases} g(W, 0, k) = W_{[k, :]} \in \mathbb{R}^{1 \times n}, & \text{if pruning output dimension},\\ g(W, 1, k) = W_{[:, k]} \in \mathbb{R}^{m \times 1}, & \text{if pruning input dimension}, \end{cases} \quad (1) w^=g(W,d,k)={g(W,0,k)=W[k,:]R1×n,g(W,1,k)=W[:,k]Rm×1,if pruning output dimension,if pruning input dimension,(1)

其中 w ^ \hat{w} w^ 指的是计划移除的权重列或行,通过由下标 [ k , : ] [k, :] [k,:] [ : , k ] [:, k] [:,k] 表示的切片操作获取。剪枝函数 g ( W , d , k ) g(W, d, k) g(W,d,k) 由三个参数定义,参数矩阵 W W W、指出要压缩维度的轴 d ∈ { 0 , 1 } d \in \{0, 1\} d{0,1} 以及标识 W W W 中第 k k k 行或列的索引 k k k。在由二维矩阵 W ∈ R m × n W \in \mathbb{R}^{m\times n} WRm×n 表示的线性层的上下文中,轴 d d d 可以取值 0 或 1, k k k 分别具有 [ 0 , m ] [0, m] [0,m] [ 0 , n ] [0, n] [0,n] 的允许范围。这种表述封装了单个层的剪枝;为了将其扩展到整个网络,我们还需要考虑依赖性[5, 11, 30],其中来自不同层的参数是耦合的,应该同时进行剪枝。对于由 W 1 W_{1} W1 W 2 W_{2} W2 参数化的两个相邻线性层,前者的输出维度与后者的输入维度整体耦合,从而构成一个适合移除的最小子结构。如果我们将每个剪枝操作 g ( W , d , k ) g(W, d, k) g(W,d,k) 视为由三元组 ( W , d , k ) (W, d, k) (W,d,k) 定义的顶点,将依赖性视为边,那么将子结构建模为图是很自然的。

3.2 子结构的图形建模

在本节中,我们将更深入地探讨在剪枝中将网络分解为多个独立且最小子结构的方法,并将它们建模为图。我们可以从 MLP 网络开始,其中激活函数被省略。该网络由一系列二维参数矩阵 { W 1 , W 2 , … , W L } \{W_1, W_2, \ldots, W_L\} {W1,W2,,WL} 组成, L L L 表示网络深度。最初,所有参数都未分配给任何子结构。

我们随机选择一个参数 W 1 W_{1} W1 作为种子,以找到其相关的子结构并构建相应的图。例如,选择参数 W 1 W_{1} W1 并设置轴 d = 0 d = 0 d=0,我们可以建立一个初始图 G = ( V = { ( W , 0 , k ) } , E = { } ) G = (V = \{(W, 0, k)\}, E = \{\}) G=(V={(W,0,k)},E={}),重点是消除 W 1 W_{1} W1 中第 k k k 个输出维度。然后我们遍历所有潜在的 ( W ′ , d ′ , k ′ ) ∉ V (W', d', k') \notin V (W,d,k)/V,以确定与 ( W , d , k ) ∈ V (W, d, k) \in V (W,d,k)V 的任何依赖关系。层之间的依赖关系可以通过制作的模式或自动算法来确定。在这项工作中,我们遵循[11]的方法,基于两个基本规则来评估依赖关系:

依赖建模。对于一对三元组 ( W , d , k ) (W, d, k) (W,d,k) ( W ′ , d ′ , k ′ ) (W', d', k') (W,d,k),如果满足以下任何一个标准,则建立依赖关系:

  1. W W W W ′ W' W 是具有 d = d ′ d = d' d=d k = k ′ k = k' k=k 的相邻层。
  2. W ′ = W W' = W W=W g ( W ′ , d ′ , k ′ ) = g ( W , d , k ) g(W', d', k') = g(W, d, k) g(W,d,k)=g(W,d,k)

第一个标准涉及相邻层;第二个标准适用于专用的层,例如归一化层,其输出和输入共享相同的剪枝模式。此后,我们相应地使用在 ( W , d , k ) (W, d, k) (W,d,k) ( W ′ , d ′ , k ′ ) (W', d', k') (W,d,k) 之间发现的依赖关系更新顶点集 V V V 和边集 E E E

V = V ∪ { ( W ′ , d ′ , k ′ ) } , E = E ∪ { ( ( W , d , k ) , ( W ′ , d ′ , k ′ ) ) } . ( 2 ) \begin{aligned} V &= V \cup \{(W', d', k')\}, \\ E &= E \cup \{((W, d, k),(W', d', k'))\}. \end{aligned} \quad (2) VE=V{(W,d,k)},=E{((W,d,k),(W,d,k))}.(2)

我们可以进一步重复上述过程,直到没有额外的顶点被纳入当前图中。
在这里插入图片描述

得到的图 G G G 随后作为与初始种子参数相关联的单个子结构的拓扑表示。为了将所有子结构映射到不同的图上,我们随后开始一个递归过程,从那些尚未分配到任何子结构的节点开始。

3.3 使用图同构进行排序

基于网络子结构的图表示,我们进入排序阶段。这个阶段涉及估计和排序每个子结构的重要性以识别冗余。这个过程的一个关键组成部分是一个重要性标准,它量化了各种子结构的相对重要性。文献中先前的工提出了许多精心设计的标准,包括幅度修剪和泰勒展开。在这项工作中,我们关注单层的通用重要性函数 I ( ⋅ ) I(\cdot) I(),表示为:

I ( W , d , k ) = { ∥ g ( W , d , k ) ) ∥ , if Magnitude Pruning ∥ ∂ L ∂ g ( W , d , k )    g ( W , d , k ) ) ∥ 2 , if Taylor Pruning ... Other importance Criteria. ( 3 ) I(W,d,k) = \begin{cases} \|g(W, d, k))\|, &\quad \text{if Magnitude Pruning}\\ \|\frac{\partial \mathcal{L}}{\partial g(W, d, k)} \; g(W, d, k))\|_2, &\quad \text{if Taylor Pruning}\\ \text{...} &\quad \text{Other importance Criteria.} \end{cases} \quad (3) I(W,d,k)= g(W,d,k)),g(W,d,k)Lg(W,d,k))2,...if Magnitude Pruningif Taylor PruningOther importance Criteria.(3)

在结构剪枝中,我们的目标是去除跨多层包含参数的子结构。现有方法[5,11,30]通常通过聚合顶点集 V V V 的所有组成部分 ( W , d , k ) (W, d, k) (W,d,k) 的分数,将单层重要性扩展为整体度量,如下表示为 I ∗ ( G ) I^*(G) I(G)

I ∗ ( G ( V , E ) ) = ∑ ( W , d , k ) ∈ V I ( W , d , k ) , ( 4 ) I^*(G(V, E)) = \sum_{(W,d,k)\in V} I(W,d,k), \quad (4) I(G(V,E))=(W,d,k)VI(W,d,k),(4)

从而累积图 G G G 中所有元素的重要性。然而,不同子结构 G G G 之间参数和计算拓扑的内在多样性在这个度量中引入了潜在的模糊性。实验证据,特别是在视觉 Transformer 的背景下,阐明了这个问题:最大的子结构包含所有嵌入维度,包含大量参数,最微小的子结构仅由两个线性层组成。因此,这种聚合可能无法准确反映这些实体的真正相对重要性。

为了解决子结构异质性带来的挑战,我们描述了一种简单的方法,旨在保留聚合重要性所封装的细微信息,同时减轻子结构异质性带来的不利影响。我们的主要策略是根据子结构的拓扑逻辑和参数配置将其聚类为不同的同构组。在这种情况下,在组内应用聚合重要性可能是有意义的,因为同构子结构在其参数之间表现出对应关系,并且不同参数如何参与计算是完全相同的。为了便于实现这一点,关键步骤是检查两个图 G 1 G_1 G1 G 2 G_2 G2 的同构性。

定义 1(图同构):两个带标签的图 G 1 G_1 G1 G 2 G_2 G2 是同构的,当且仅当它们的顶点之间存在一个双射,使得所有映射的顶点保持相同的标签,并且以相同的方式相连。

为了开发一个通用指标“同构 Isomorphic ( g 1 , g 2 ) \text{Isomorphic}(g_1, g_2) Isomorphic(g1,g2)”,我们需要同时检查两个图中的标签和连通性。

顶点标签与连通性。在我们的设定中,每个顶点由三元组 ( W , d , k ) (W, d, k) (W,d,k) 标记。我们遵循一个简单的标记原则:当且仅当参数 W W W 源自相同的层类型且具有相同的剪枝维度 d d d 时,两个顶点具有相同的标签。我们允许索引 k k k 不同,因为在同一个参数矩阵中,沿 d d d 维切片的权重向量始终是同质的,因此可以被视为同构。

为了使这个过程更形式化,我们假设图 G G G 中的边已经按照前向传播中的执行顺序排序,并通过以下公式检查:

KaTeX parse error: Undefined control sequence: \mathbbm at position 28: …phic}(G, G') = \̲m̲a̲t̲h̲b̲b̲m̲{1}\{|G|=|G'| \…

其中 KaTeX parse error: Undefined control sequence: \mathbbm at position 1: \̲m̲a̲t̲h̲b̲b̲m̲{1} 是一个指示函数。 ∣ G ∣ |G| G 表示图中的边数, ∧ \land 表示逻辑与运算。第一个条件确保图中顶点数量相等,第二个条件确认边对两侧顶点的匹配标签。这使得可以轻松地将子结构聚类到不同的组中,并仅在每个组内进行排名。

算法 1:同构剪枝
输入: 具有参数 { W 1 , W 2 , … , W n } \{W_1, W_2, \ldots, W_n\} {W1,W2,,Wn} 的网络,剪枝率 p % p\% p%
输出: 剪枝后的网络 { W 1 ′ , W 2 ′ , … , W n ′ } \{W'_1, W'_2, \ldots, W'_n\} {W1,W2,,Wn}
过程: IDENTIFYSUBSTRUCTURES ( { W 1 , W 2 , … , W n } ) (\{W_1, W_2, \ldots, W_n\}) ({W1,W2,,Wn})

  1. 初始化空的子结构列表 S = { } S = \{\} S={}
  2. 对于 { W 1 , W 2 , … , W n } \{W_1, W_2, \ldots, W_n\} {W1,W2,,Wn} 中的每一层 W i W_i Wi,执行:
  3. 如果 W i W_i Wi 未分配给任何子结构,则:
  4. 初始化一个图 G ( V = { W i } , E = { } ) G (V = \{W_i\}, E = \{\}) G(V={Wi},E={})
  5. 查找并将耦合的 W j W_j Wj 添加到 G G G,直到没有新的依赖关系。
  6. S = S ∪ { G } S = S \cup \{G\} S=S{G}
  7. 返回 S S S

过程: PRUNEBYGROUPEDRANKING ( S , p ) (S, p) (S,p)

  1. 对于 { G 1 , G 2 , … , G n } \{G_1, G_2, \ldots, G_n\} {G1,G2,,Gn} 中的每个子结构 G i G_i Gi,执行:
  2. 如果 G i G_i Gi 未分配到任何组,则:
  3. 初始化一个组 R = { G i } R = \{G_i\} R={Gi}
  4. 找到并添加满足与 R R R 同构的 G j G_j Gj(即 Isomorphic ( G i , G j ) = 1 \text{Isomorphic}(G_i, G_j) = 1 Isomorphic(Gi,Gj)=1)。
  5. 计算重要性得分 { I ∗ ( G ) ∣ G ∈ R } \{I^*(G) \mid G \in R\} {I(G)GR}
  6. 通过对重要性得分进行排序,移除 R R R p % p\% p% 的子结构。
  7. 返回 S S S

主程序:

  • S ← IDENTIFYSUBSTRUCTURES ( { W 1 , W 2 , … , W n } ) S \leftarrow \text{IDENTIFYSUBSTRUCTURES}(\{W_1, W_2, \ldots, W_n\}) SIDENTIFYSUBSTRUCTURES({W1,W2,,Wn})
  • S ← PRUNEBYGROUPEDRANKING ( S , p ) S \leftarrow \text{PRUNEBYGROUPEDRANKING}(S, p) SPRUNEBYGROUPEDRANKING(S,p)

4. 实验

本节报告了我们在 ImageNet-1K 数据集[8]上的实证结果,该数据集包含 1,281,167 张用于训练的图像和 50,000 张用于验证的图像。我们部署了所提出的同构剪枝来压缩多个视觉模型,包括 ConvNext [33]、ResNet [36]、MobileNetv2 [45] 和 Vision Transformers [10,51]。

4.1 ImageNet-1K 设置

剪枝。 为简化起见,我们采用基于泰勒的剪枝框架[39],该框架将数据驱动的泰勒展开应用于损失函数。为此,我们从 ImageNet 数据集中随机采样 100 个批次。我们累积所有批次的梯度以进行更可靠的重要性估计,并一次性应用同构剪枝,无需迭代剪枝和微调[40]。

微调。 在剪枝模型的微调过程中,为了进行公平比较,我们遵循原始的训练协议。在保持大部分原始设置不变的情况下,我们根据文献[13]中提出的线性学习率缩放规则,调整了学习率和批大小,以使训练适合 A5000 GPU。

4.2 修剪卷积神经网络

卷积神经网络是网络修剪领域的一个关键重点。在本节中,我们专注于修剪三种流行的卷积网络:ConvNext [33]、ResNet [19] 和 MobileNet-v2 [45]。

表 1:在 ImageNet-1K 上修剪卷积神经网络

Pruning Method #Params (M) MACs (G) Base Acc. Final Acc. ∆ Acc.
ConvNext-B [33] 88.59 15.39 - 83.83 -
ConvNext-S [33] 50.22 8.71 - 83.14 -
ConvNext-S (Ours) 47.36 8.48 83.83 83.17 -0.66
ConvNext-T [33] 28.59 4.47 - 82.06 -
ConvNext-T (Ours) 25.32 4.19 83.83 82.19 -1.64
ResNet-152 [19] 60.19 11.58 - 78.31 -
AOFP-E2 [9] - 4.13 77.37 77.00 -0.37
ABCPruner [28] 24.07 4.31 78.31 77.12 -1.19
EPruner-0.63 [27] 21.56 4.08 78.31 76.83 -1.48
ResNet-152-4.0G (Ours) 23.11 4.05 78.31 77.84 -0.47
ResNet-101 [19] 44.55 7.85 - 77.38 -
IE [39] 31.2 4.70 77.37 77.35 -0.02
FPGM [21] - 4.51 77.37 77.32 -0.05
SFP [20] - 4.51 77.37 77.51 +0.14
ISTA [61] - 4.47 76.40 75.27 -1.13
Res101-4.5G (Ours) 29.14 4.48 77.38 77.56 +0.16
GFP [30] 28.02 3.90 78.29 78.33 +0.04
AOFP [9] - 3.89 76.63 76.40 -0.23
Res101-3.8G (Ours) 24.87 3.85 77.38 77.43 +0.05
ResNet-50 [19] 25.56 4.13 - 76.13 -
Taylor [39] 14.20 2.25 76.18 74.50 -1.68
CCP [42] - 2.11 76.15 75.50 -0.65
GFP [30] 19.42 2.04 76.79 76.42 -0.37
AutoSlim [65] 20.60 2.00 76.10 75.60 -0.50
DepGraph [11] - 1.99 76.15 75.83 -0.32
ResNet50-2G (Ours) 15.05 2.06 76.13 75.91 -0.22
Mobv2 [45] 3.50 0.32 - 71.88 -
Meta [32] - 0.14 74.70 68.20 -6.50
GFP [30] - 0.15 75.74 69.16 -6.58
DepGraph [11] - 0.15 71.90 68.49 -3.41
Mobv2-0.15G (Ours) 2.19 0.15 71.88 68.91 -2.97

ConvNext。 在微调过程中,我们观察到去除一半参数的剪枝后的 ConvNext,仅在 20 个轮次,这有效地验证了剪枝的效率。此外,经过 300 次完全微调后的最终模型,在参数较少(25.32M vs. 28.59M)和 MACs(4.19G vs. 4.47G)的情况下,与预训练模型相比具有竞争力的性能(82.19% vs. 82.06%)。

残差网络(ResNet)。 所提出的同构剪枝在 ResNet-50 中识别出五种不同的同构组,其中四种针对块结构,一种与瓶颈结构相关[19]。我们的方法利用一个简单的泰勒准则[39]并获得了一系列轻量级的 ResNet。值得注意的是,同构剪枝在 4.5G 和 3.8G 设置下对 ResNet-101 都实现了无损压缩。

4.3 剪枝视觉 Transformer

表 2 展示了我们在 DeiT 上的剪枝结果,DeiT 是一种通过知识蒸馏增强的普通视觉 Transformer [51]。我们实现同构剪枝,通过按照 [60] 的方法剪枝头、头维度和嵌入来压缩预训练的 DeiT-Base 模型。

表 2:在 ImageNet-1K 上对 DeiT 进行剪枝

Method #Params (M) MACs (G) Acc (%)
DeiT-B [51] 87.34 17.69 83.32
DeiT-S [51] 22.44 4.64 81.17
DeiT-S-600EP [60] 22.44 4.64 81.80
VTP - 40% [72] 48.00 10.00 80.70
WDPruning [63] 55.30 9.90 80.76
UVC [67] - 8.00 80.57
X-Pruner [66] - 8.50 81.02
NViT-B [60] 34.00 6.80 83.29
SAViT [70] 25.40 5.30 81.66
UP-DeiT-S [64] 22.10 - 81.56
NViT-S [60] 21.00 4.20 82.19
Upop [46] 19.90 4.10 81.10
DeiT-S (Ours) 20.69 4.16 82.41
GOHSP [62] 14.40 2.99 79.98
ViT-Slim [2] 13.50 2.80 79.20
CP-ViT [48] - 2.66 79.08
DeiT-2.6G (Ours) 13.07 2.62 81.13
DeiT-T [51] 5.91 1.27 74.52
WDPruning [63] 13.30 2.60 78.38
NViT-T [60] 6.90 1.30 76.21
DeiT-T (Ours) 5.74 1.21 77.50
DeiT-0.6G (Ours) 3.08 0.62 72.60

我们开发了四种轻量级视觉 Transformer:DeiT-S、DeiT-2.6G、DeiT-T 和 DeiT-0.6G。优化后的 DeiT-T 实现了 77.50% 的准确率,仅 1.2G MAC,这优于预训练的跨层宽度均匀的 DeiT-T 的结果(74.52%)。

4.4 对剪枝模型的分析

设备端延迟。 表 3 测量了单个 RTX A5000 GPU 和 CPU 上的实际延迟和峰值内存消耗。结果表明,剪枝后的 DeiT 模型可以达到与一些先进的 Transformer 相当的性能,同时保持有竞争力的延迟。

表 3:在单个 RTX A5000 GPU 和 CPU 上对剪枝模型和其他现成的视觉模型进行性能分析

Method #Params MACs Peak Mem. GPU Latency (256) CPU Latency (8) Acc. (%)
DeiT-S [51] 22.44 M 4.64 G 1363.47 MB 241.81 ms (3.32×) 80.64 ms (2.45×) 81.17
Swin-T [31] 28.29 M 4.51 G 4257.98 MB 375.45 ms (2.14×) 203.86 ms (0.97×) 81.19
DeiT-S (Ours) 20.69 M 4.16 G 1547.97 MB 230.84 ms (3.48×) 44.10 ms (4.48×) 82.41
DeiT-2.6G (Ours) 13.07 M 2.62 G 1203.07 MB 189.68 ms (4.23×) 56.59 ms (3.49×) 81.13
DeiT-T [51] 5.91 M 1.27 G 720.22 MB 93.78 ms (8.56×) 46.83 ms (4.22×) 74.52
DeiT-T (Ours) 5.71 M 1.20 G 837.16 MB 93.17 ms (8.62×) 47.89 ms (4.13×) 77.50
ConvNext-T [33] 28.59 M 4.46 G 3785.37 MB 291.02 ms (2.82×) 126.17 ms (2.08×) 82.06
ConvNext-T (Ours) 25.32 M 4.19 G 3607.06 MB 292.77 ms (2.83×) 97.82 ms (2.68×) 82.19

重要性分数的分布。 显然可以发现,由于 MLP 层和注意力层的计算过程不同,它们的重要性分布有所差异。当我们对 DeiT 模型应用简单的 50% 全局剪枝时,注意力层中的多数参数将被移除,而编号为 #1 的嵌入数量甚至不会被剪枝。这不可避免地导致了不同结构的剪枝不均衡。

在这里插入图片描述

在这里插入图片描述

表 4:剪枝模型上的迁移学习

Models CIFAR-10 CIFAR-100
DeiT-S [39] 98.52 87.07
NViT-S [60] 98.78 87.90
DeiT-S (Ours) 99.02 90.09
DeiT-T 93.93 85.66
NViT-T [60] 98.31 85.88
DeiT-T (Ours) 98.28 87.08
ConvNext-S 98.77 89.15
ConvNext-S (Ours) 98.78 89.36

5. 结论

在本文中,我们介绍了同构剪枝,这是一种旨在通过新颖的机制和架构来压缩视觉网络的实用方法。该方法专注于缓解网络中异构子结构带来的挑战,从而提高排序和剪枝过程的可靠性。我们在 ImageNet-1k 数据集上的实证结果展示了同构剪枝在 ConvNext、ResNet、MobileNet-v2 和视觉 Transformer 等多种视觉模型上的有效性。


附录

视觉 Transformer 剪枝的细节

与卷积神经网络不同,视觉 Transformer 在其网络架构中包含更多样化的子结构组成。由于其异构组成,视觉 Transformer 自然地形成了几个组:

  • 嵌入组:该组包含负责在模块之间生成中间特征的参数,其维度标记为 E E E
  • 多层感知组:该组将 N × E N \times E N×E 嵌入映射到 N × M N \times M N×M 中间结果,然后再将它们转换回 E E E 维特征。
  • 头部维度组:将嵌入映射为查询、键和值。
  • 头部组:考虑对注意力头进行剪枝以进一步加速。

表 5:剪枝的目标架构和相应配置

Architecture Base Model Emb% Head% Dim%
DeiT-S DeiT-B 50% 50% 25%
DeiT-2.6G DeiT-B 60% 60% 30%
DeiT-T DeiT-S 50% 50% 10%
DeiT-0.6G DeiT-T 25% 30% 30%

表 6:在 ImageNet-1K 上预训练的 Swin Transformer 的剪枝结果

Method #Params (M) MACs (G) Acc (%)
Swin-B [31] 87.77 15.48 83.42
Swin-T [31] 28.29 4.51 81.19
Swin-T (Ours) 24.66 4.47 81.32
X-Pruner [66] N/A 3.20 80.70

表 7:剪枝普通视觉 Transformer (训练配置)

Training Configs DeiT ConvNext ResNet-50 MobileNet-v2 Swin
optimizer AdamW AdamW SGD SGD AdamW
base learning rate 0.0005 0.001 0.08 0.036 0.0005
weight decay 0.05 0.05 1e-4 4e-5 0.05
batch size 2048 1024 1024 4096 2048
training epochs 300 300 100 300 300
D 局限性

在本研究中,我们实证检验了同构子结构对剪枝的影响。结构相似性可能不是重要性分布的唯一决定因素。诸如训练方法、正则化技术和网络深度等因素在形成不同分布方面也可能发挥重要作用。虽然我们的实验证明了同构剪枝的有效性,但未来有必要对这些额外因素进行进一步研究,以建立更全面的框架。


总结

文献翻译可能有疏漏,可以参考原始论文一起阅读,对你有帮助的话,请帮忙一键三连,谢谢。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐