DepGraph 任意架构结构化剪枝 适配 CNN Transformer GNN
在深度学习模型加速领域,结构化剪枝长期被视为一把双刃剑——它能够有效降低推理延迟和显存消耗,然而在实际部署时却常常需要与多样化的网络结构进行复杂适配。本文介绍的工作旨在从根本上解决“剪枝算法实现与网络结构强耦合”这一核心痛点。 论文标题:DepGraph: Towards Any Structura
在深度学习模型加速领域,结构化剪枝长期被视为一把双刃剑——它能够有效降低推理延迟和显存消耗,然而在实际部署时却常常需要与多样化的网络结构进行复杂适配。本文介绍的工作旨在从根本上解决“剪枝算法实现与网络结构强耦合”这一核心痛点。
论文标题:DepGraph: Towards Any Structural Pruning
论文链接:https://arxiv.org/abs/2301.12900
项目地址:https://github.com/VainF/Torch-Pruning

1. 核心内容概要
本文提出了一种基于非深度图的算法——DepGraph,实现了架构通用的结构化剪枝。无论是CNN、Transformer、RNN还是GNN,只要包含可训练参数的网络结构,均可适用。其核心思路是通过自动化方式分析网络中复杂的结构耦合关系,并正确移除冗余参数,从而实现模型加速。基于该算法,作者团队还开发了PyTorch结构化剪枝框架Torch-Pruning。与依赖Masking进行“模拟剪枝”的方案不同,该框架能够真正移除参数和通道,实际降低推理成本。借助DepGraph,研究者和工程师无需再为复杂的网络结构耗费精力,复杂模型的一键剪枝成为现实。
2. 研究背景
结构化剪枝并非全新概念,它通过移除网络中的冗余结构单元来压缩模型,已在ResNet、VGG、Transformer等主流架构上展现出显著效果。然而,一个长期存在的问题始终未能解决:剪枝算法的具体实现与网络结构高度耦合。更换模型时,往往需要重新编写一套剪枝程序,耗时费力且易出错。
这种耦合从何而来?以一个神经元为例:它通常连接着多组参数,如图1(a)所示。若要剪除该神经元,则所有与之相连的参数必须同步移除,这便是所谓的“组”——结构化剪枝的最小操作单元。然而,不同架构中参数的分组方式千差万别。图1(b)-(d)分别展示了残差结构、拼接结构、降维度结构中的分组情况,且这些分组可以相互嵌套,形成更复杂的模式。简言之,参数分组是结构化剪枝实际部署中的首要障碍。

图1:不同结构中的参数耦合关系,高亮显示的神经元和参数连接需同时剪枝
3. 方法介绍
3.1 参数分组策略
为实现参数分组的自动化,文章提出了一种非深度图算法DepGraph,专门用于建模任意网络中的参数依赖关系。在结构化剪枝中,同一组内的参数两两耦合——若其中一个参数被移除,组内所有参数必须同步移除,以保持结构完整性。理想情况下,可以直接构建一个二值分组矩阵G,记录所有参数对之间的耦合关系:若第i层与第j层的参数相互耦合,则G[i][j]置为1。这样,分组问题便简化为一个查询问题。

然而,实际情况更为复杂。参数之间的依赖关系不仅取决于自身,还受中间层影响。中间层结构千变万化,难以通过硬规则直接判断耦合性。不过,在分析依赖过程中发现一个重要现象:相邻层之间的依赖关系具有传递性。例如,若相邻层A与B存在依赖,B与C也存在依赖,则A与C之间必然存在依赖——尽管A与C并不直接相连。这一发现抓住了核心:利用相邻层的局部依赖关系,可以递归地推导出完整的分组矩阵。这种局部依赖关系被称为依赖图(Dependency Graph)。依赖图是稀疏且局部的,仅对直接相连的层进行建模。由此,分组问题转化为路径搜索问题——若依赖图中节点i与节点j之间存在路径,则它们属于同一分组。
3.2 依赖图的构建
将上述思路应用于实际网络时,又面临一个新问题:同一层可能存在两种剪枝方式——剪裁输入通道或输出通道。例如,对于卷积层,可以独立修剪参数的不同维度,分别对应输入通道和输出通道。然而,前述依赖图无法刻画这种情况。为此,作者提出了一种更细粒度的模型描述符,将每一层从逻辑上拆分为输入和输出两部分。这样,一个简单的堆叠网络可以表示为:

符号表示网络连接。注意,此处“相邻层”的定义被扩展——同一层的输入与输出也视为相邻。无论神经网络中包含多少层和算子,均可抽象出两类基本依赖关系:层间依赖与层内依赖。
层间依赖:由层与层之间的连接产生,与层类型无关。某一层的输出与下一层的输入对应同一个中间特征,因此必须同时进行剪枝。在通道剪枝中,“某层的输出通道剪枝”与“相邻后续层的输入通道剪枝”本质上是同一操作。
层内依赖:与层本身的属性相关。神经网络中的层大致可分为两类:一类允许输入和输出独立剪枝,且各自具有不同的剪枝布局。例如,全连接层的二维参数矩阵,其输入维度和输出维度可分别修剪,因此在依赖图中输入和输出节点相互独立。另一类则输入输出之间存在耦合,如逐元素运算、Batch Normalization,其参数仅有一种剪枝布局,同时影响输入和输出维度。好在深度网络中层类型有限,可以预先为每类层定义剪枝布局,从而确定依赖关系。
综上所述,依赖图的构建仅需两条简洁规则:

符号分别表示逻辑“OR”和“AND”。算法1和算法2总结了依赖图构建与参数分组的过程,参数分组本质上是一个递归的连通分量搜索,通过简单的深度优先或广度优先搜索即可实现。

将该算法应用于具体的残差块,可得到如图2所示的可视化结果。剪枝时,任选一个节点作为起点,递归访问所有可达节点,并将它们归入同一组。注意,卷积网络因其输入输出采用不同的剪枝布局,在依赖图中输入输出节点之间不存在依赖;而Batch Normalization等层的输入输出之间存在依赖。

图2:残差结构的依赖图建模示例
3.3 基于依赖图的剪枝实现

图3:不同稀疏性策略对比。本方法根据依赖关系对耦合参数进行同步稀疏,确保被剪枝的参数具有“一致冗余性”
依赖图解决了参数自动分组问题,从而实现了任意架构的模型剪枝。此外,它还有一个隐藏功能:辅助设计组级别的剪枝策略。在结构化剪枝中,同一组参数需同时移除,因此必须保证这些参数是“一致冗余”的——即它们的重要性相近,剪除任意一个均不会造成显著损失。然而,常规训练的网络显然不满足此条件,因此需要引入稀疏学习来对参数进行稀疏化。这里存在一个难点:传统的逐层独立稀疏技术无法解决该问题,因为它忽略了层间依赖,导致如图2(b)所示的非一致稀疏结果。解决方案很简单:按照依赖关系将参数打包成组,进行一致性稀疏训练——即将图2(c)虚线框内的参数共同推向0,使耦合参数的重要性趋于一致。具体实现中,通过添加一个简单的L2正则项,并为不同参数组分配不同的正则权重,从而实现组级稀疏化。

其中k用于定位可剪枝参数的第k组子矩阵。该稀疏算法会生成k组具有不同稀疏程度的耦合参数,最终选择整体L2范数最小的那一组进行剪枝。当然,依赖图还可用于设计更复杂的组剪枝方法,但由于稀疏训练和重要性评估并非本文重点,在此不再赘述。
4 实验评估
4.1 基准测试
实验分为两部分。第一部分在CIFAR和ImageNet数据集上测试了多种模型的结构化剪枝效果。基于DepGraph与一致性稀疏构建的剪枝器虽然简单,但在两个数据集上均取得了良好的性能。

4.2 消融实验与分析
一致性稀疏:首先对比了逐层独立稀疏与一致性稀疏。结果与3.3节分析一致:逐层方法无法实现依赖参数的一致性稀疏。下图中绿色直方图代表传统逐层稀疏策略,其整体稀疏性表现明显逊于本文方法。

分组策略与稀疏度分配:此外,评估了三种分组策略:无分组、仅卷积分组、全分组。无分组即参数独立稀疏;卷积分组仅考虑卷积层而忽略其他参数化层;全分组则将所有参数层纳入一致性稀疏。结果表明,全分组不仅性能更优,且剪枝稳定性更高——不易出现因过度剪枝导致的性能急剧下降。
关于稀疏度分配,还测试了两种方案:逐层相同稀疏度与可学习稀疏度。可学习稀疏度根据稀疏后参数的L2范数进行全局排序,从而决定每层的剪枝量。该方法的优点在于能够自动适应参数冗余的非均匀分布,因此性能更优。但代价是存在过度剪枝的风险——可能在某一层移除过多参数。

依赖图可视化:下图展示了DenseNet-121、ResNet-18、ViT-Base的依赖图及其递归推导得到的分组矩阵。可以清晰看出,不同网络的参数依赖关系复杂且差异显著,这正是自动分组工具的价值体现。

非图像模型的结构化剪枝:深度学习不仅限于CNN和Transformer。作者还针对LSTM(文本分类)、DGCNN(3D点云分类)、GAT(图数据)进行了测试,结果同样令人满意。

5 实践与代码
5.1 最小示例
空谈不如实践。这里提供一个最简示例:对标准ResNet-18的第一层进行通道剪枝。

通过调用DG.get_pruning_group即可获取包含model.conv1的最小剪枝单元pruning_group,随后执行pruning_group.prune()即可按组完成剪枝。打印该分组可以发现,model.conv1上看似简单的操作背后,依赖关系实际上相当复杂:

若没有DepGraph,这些分组需要手工逐层分析并修剪,不仅要求开发者对网络结构了如指掌,还需手动处理依赖关系,过程极为繁琐。

5.2 高级剪枝器
基于DepGraph,该项目还集成了更高级的剪枝器,支持对任意架构一键剪枝。目前支持的剪枝器包括常规权重剪枝(MagnitudePruner)、BN剪枝(BNScalePruner)、本文使用的组剪枝(GroupNormPruner)、随机剪枝(RandomPruner)等。借助DepGraph,这些剪枝器可直接应用于不同模型,大幅降低开发成本。

6 总结与展望
本文的核心贡献在于提出了DepGraph——一种面向任意架构的结构化剪枝技术,显著简化了剪枝流程。目前该框架已覆盖Torchvision模型库中85%的模型,涵盖分类、分割、检测等任务。然而,作者也明确指出,这只是对“任意架构剪枝”问题的初步探索,无论在工程还是算法层面,仍有大量改进空间。此外,当前大多数剪枝算法均针对单层设计,DepGraph为未来“组级别剪枝”的研究提供了有益的基础设施。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:DepGraph 任意架构结构化剪枝 适配 CNN Transformer GNN要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点先来看看Remaker AI这款工具。它的定位非常清晰——专注于解决图像处理中的常见难题:水印、文字、多余元素,以及低分辨率图像的修复与放大。无论是设计师、社交媒体运营人员,还是普通用户,只要遇到需要“清理”图片的场景,它都能轻松应对。下面直接了解它的适用人群和实际能力。 需求人群 Remaker
文心大模型覆盖文化传媒、艺术创作、教育科研、金融保险、医疗健康等需文字与创意的场景,集成文本生成、文生图、智能对话、信息抽取、文本纠错、古诗创作、文案续写等十余种文字处理能力。
今天我们来聊一款非常实用的浏览器工具——Ask AI Browser。如果你经常在Google上搜索问题,又希望随时与AI对话,或者在浏览各类网站时想直接向AI提问,那么这款工具可能会为你的日常浏览体验带来显著提升。 目标用户群体 简单来说,它主要面向以下几类用户:在Google上搜索问题时,希望无
说起来,联通云盘这事儿,其实就是中国联通在云存储这条赛道上的一次重要布局。目标很明确:为个人和家庭用户解决海量数据存储的刚需。具体能干啥呢?个人云、家庭云、微信 通讯录 相册备份、多端文件共享……说白了,就是从存储到共享的一条龙服务。 联通云盘官网网页版登录入口网址:https: pan wo c
- 日榜
- 周榜
- 月榜
热点快看
