DS-Net:可落地的动态网络,实际加速1.62倍,快改造起来 | CVPR 2021 Oral

news2024/11/6 9:41:49

论文提出能够适配硬件加速的动态网络DS-Net,通过提出的double-headed动态门控来实现动态路由。基于论文提出的高性能网络设计和IEB、SGS训练策略,仅用1/2-1/4的计算量就能达到静态SOTA网络性能,实际加速也有1.62倍

来源:晓飞的算法工程笔记 公众号

论文: Dynamic Slimmable Network

  • 论文地址:https://arxiv.org/abs/2103.13258
  • 论文代码:https://github.com/changlin31/DS-Net

Introduction


 模型速度在模型的移动端应用中十分重要,提高模型推理速度的方法有模型剪枝、权值量化、知识蒸馏、模型设计以及动态推理等。其中,动态推理根据输入调整其结构,降低整体计算耗时,包含动态深度和动态维度两个方向。如图2所示,动态网络自动在准确率和计算量之间trade-off,比静态的模型设计和剪枝方法要灵活。

 然而,论文发现包含动态维度的网络的实际运行速度大都不符合预期,主要原因在于动态剪枝后的稀疏卷积与当前硬件的计算加速不匹配。大多数卷积核的动态剪枝通过zero masking(常规卷积后再通过mask取对应的输出)或path indexing(直接通过 [ : , : ] [:,:] [:,:]获取对应的新卷积再计算)来实现,如表1所示,这些方法的计算效率都不高,导致整体推理速度没有加快。
 为了解决这一问题,论文提出了动态可精简网络DS-Net,在实现动态网络的同时也有很好的硬件匹配性。
 论文的主要贡献如下:

  • 提出新的动态网络路由机制,通过提出的double-headed动态门控来实现网络结构的动态路由。另外,卷积的动态剪枝通过切片的方式保持权值的内存连续性,可以很好地适配硬件加速。
  • 提出用于DS-Net的两阶段训练方式,包含IEB和SGS方法。IEB用于稳定可精简网络的训练,SGS用于提高门控输出的多样性,两者都能帮助提高DS-Net的性能。
  • 通过ImageNet实验对比,DS-Net的整体性能比SOTA动态网络高约5.9%,比ResNet和MobileNet等静态网络性能稍微下降,但是有2-4倍计算量节省以及1.62倍实际推理加速。

Dynamic Slimmable Network


 论文提出的dynamic slimmable network通过学习可精简的超网(supernet)以及动态门控(gating)机制,达到根据不同输入样本动态生成网络的目的。如图3所示,DS-Net的超网为包含全部完整卷积的完整网络。动态门控则是一系列预测模块,根据输入动态设定每个阶段的卷积维度,进而生成子网,这一过程也称为动态路由(dynamic routing)。
 目前的动态网络研究中,主网络和动态路由通常是联合训练的,类似于联合优化的网络搜索方法。参考one-shot NAS方法,论文提出解耦的两阶段训练方法来保证DS-Net中每个路径的泛化性。在stage I中,禁用门控的功能并用IEB方法训练超网,在stage II中,固定超网的权值单独用SGS方法训练门控。

Dynamic Supernet

 这里先介绍可在硬件高效运行的通道切片方法以及论文设计超网,然后再介绍Stage I中用到的IEB方法。

  • Supernet and Dynamic Channel Slicing

 在如动态裁剪、动态卷积等动态网络中,卷积核 W \mathcal{W} W根据输入 X \mathcal{X} X进行动态参数化 A ( θ , X ) \mathcal{A}(\theta, \mathcal{X}) A(θ,X),这样的卷积可表示为:

 动态卷积根据输入去掉不重要的特征通道,降低理论计算量,但其实际加速大都不符合预期。由于通道的稀疏性与硬件加速技术不匹配,在计算时不得不多次索引和拷贝需要的权值到新的连续内存空间再进行矩阵相乘。为了更好地加速,卷积核在动态权值选择时必须保持连续且相对静态。
 基于上面的分析,论文设计了结构路由器 A ( θ ) \mathcal{A}(\theta) A(θ),能够偏向于输出稠密的选择结果。对于 N N N输出、 M M M输入的卷积核 W ∈ R N × M W\in\mathbb{R}^{N\times M} WRN×M,结构路由器输出精简比例 ρ ∈ ( 0 , 1 ] \rho\in(0,1] ρ(0,1],通过切片操作 [ : ] [:] [:]选择卷积核的前 ρ × N \rho\times N ρ×N部分构成切片动态卷积:

[ : ] [:] [:]切片操作加 ∗ * 稠密矩阵乘法要比索引操作或稀疏矩阵相乘要高效得多,保证了实际运行时的速度。

  • SuperNet

 将多个动态卷积组合起来即可搭建超网,超网通过设置不同的特征维度组合创建多个子网。将结构路由器禁用时,超网等同于常见可精简网络,可用类似的方法进行预训练。

  • In-place Ensemble Bootstrapping

  经典的Universally Slimmable Networks通过两个方法来有效地提升整体的性能:

  • sandwich rule:每次训练的网络组合包含最大的子网、最小的子网以及其它子网,其中最大的子网和最小的子网分别决定了可精简网络性能的上界和下界。
  • in-plcae distillation:将最大子网的向量输出作为其它子网的训练目标,而最大子网的训练目标则是数据集标签,这样对可精简网络更好地收敛有很好的帮助。

 虽然in-place distillation很有效,但最大子网权值的剧烈抖动会导致训练难以收敛。根据BigNas的实验,使用in-place distillation训练较为复杂的网络会极其不稳定。如果没有残差连接或特殊的权值初始化,在训练初期甚至会出现梯度爆炸的情况。为了解决可精简网络收敛难的问题并且提升整体性能,论文提出了In-plcae Ensemble Boostrapping(IEB)方法。
 首先,参考BYOL等自监督和半监督方法,使用过往的表达能力进行自监督的in-plcae distillation训练的做法,将模型的指数滑动平均(EMA, exponential moving average)作为目标网络生成目标向量。定义 θ \theta θ θ ′ \theta^{'} θ为在线网络和目标网络:

α \alpha α为动量因子,控制历史参数的比例, t t t为训练轮次。在训练时,模型的EMA会比在线网络更加稳定和准确,为精简子网提供高质量的训练目标。
 接着,参考MealV2使用一组teacher网络来生成更多样的输出向量供student网络学习的做法,在进行in-place distillation时使用不同的子网构成一组teacher网络,主要提供目标向量给最小子网学习。

 整体训练过程如图4所示。结合sandwich rule和上述优化的in-place distillation,每论训练有以下3种网络:

  • 最大的子网 L L L使用数据集标签作为训练目标。
  • n n n个随机维度的子网使用目标网络的最大子网的向量输出作为训练目标。
  • 最小的子网使用上述子网在目标网络中对应的子网的向量输出的组合作为训练目标,即训练目标为:

 总结起来,超网训练的IEB损失为:

Dynamic Slimming Gate

 这里先介绍公式2中输出 ρ \rho ρ因子的结构路由器 A ( θ , X ) \mathcal{A}(\theta, \mathcal{X}) A(θ,X)以及动态门控的double-headed设计,最后再介绍Stage II训练使用的sandwich gate sparsification(SGS)方法。

  • Double-headed Design

 将特征图转换为精简比例 ρ \rho ρ有两种方法:1)标量模式:直接通过sigmoid输出0到1的标量作为精简比例。2)one-hot模式:通过argmax/softmax得到one-hot向量,选择离散的候选向量 L p L_p Lp中对应的精简比例。
 论文对这两种方法进行对比后,选择了性能更好的one-hot模式。为了将特征图 X \mathcal{X} X转换为one-hot向量,将 A ( θ , X ) \mathcal{A(\theta, \mathcal{X})} A(θ,X)转换为两个函数的组合:

E \mathcal{E} E将特征图下采样为向量, F \mathcal{F} F将向量转化为one-hot向量用于后续的维度切片。参考DenseNet等网络, E \mathcal{E} E为全局池化层, F \mathcal{F} F为全连接层 W 1 ∈ R d × C n W_1\in\mathbb{R}^{d\times C_n} W1Rd×Cn+ReLU+ W 2 ∈ R g × d W_2\in\mathbb{R}^{g\times d} W2Rg×d+argmax函数( d d d为中间特征维度, g g g L p L_p Lp的长度):

 以图3的第 n n n个门控为例,将大小为 ρ n − 1 C n × H n × W n \rho_{n-1}C_n\times H_n\times W_n ρn1Cn×Hn×Wn的特征图 X \mathcal{X} X转换成向量 X E ∈ R ρ n − 1 C n \mathcal{X}_{\mathcal{E}}\in \mathbb{R}^{\rho_{n-1}C_n} XERρn1Cn,随后用argmax将向量进一步转换成one-hot向量,最后通过计算one-hot向量与 L p L_p Lp的点积得到预测的精简比例:

 论文采用的精简比例生成方法跟通道注意力方法十分类似,通过添加第三个全连接层 W 3 ρ n − 1 × d W_3^{\rho_{n-1}\times d} W3ρn1×d,可直接为网络引入注意力机制。基于上面的结构,论文提出double-headed dynamic gate,包含用于通道路由的hard channel slimming head以及用于通道注意力的soft channel attention head,其中soft channel attention head定义为:

δ ( x ) = 1 + t a n h ( x ) \delta(x)=1+tanh(x) δ(x)=1+tanh(x),channel attention head参与stage I的训练。

  • Sandwich Gate Sparsification

 在stage II训练中,论文使用分类交叉熵损失 L c l s L_{cls} Lcls和复杂度惩罚函数 L c p l x L_{cplx} Lcplx来端到端地训练门控,引导门控为每个输入图片选择最高效的子网。为了能够用 L c l s L_{cls} Lcls来训练不可微的slimming head,论文尝试了经典的gumbel-softmax方法,但在实验中发现门控很容易收敛到静态的选项,即使加了Gumbel噪声也优化不了。
 为了解决收敛问题并且增加门控的多样性,论文提出Sandwich Gate Sparsification(SGS)训练方法,使用最大子网和最小子网识别输入图片中的hard和easy,为其生成slimming head输出精简因子的GT。基于训练好的超网,将输入大致地分为三个级别:

  • Easy samples X e a s y \mathcal{X}_{easy} Xeasy:能够被最小子网识别的输入。
  • Hard samples X h a r d \mathcal{X}_{hard} Xhard:不能被最大子网识别的输入。
  • Dependent samples X d e p \mathcal{X}_{dep} Xdep:不属于上述两种的输入。

 为了最小化计算消耗,easy samples应该都使用最小子网进行识别,即门控的GT为 T ( X e a s y ) = [ 1 , 0 , ⋯   , 0 ] \mathcal{T}(\mathcal{X}_{easy})=[1,0,\cdots,0] T(Xeasy)=[1,0,,0]。而对于dependent samples和hard samples则应该鼓励其尽量使用最大的子网进行识别,即门控的GT为 T ( X h a r d ) = T ( X d e p ) = [ 0 , 0 , ⋯   , 1 ] \mathcal{T}(\mathcal{X}_{hard})=\mathcal{T}(\mathcal{X}_{dep})=[0,0,\cdots,1] T(Xhard)=T(Xdep)=[0,0,,1]。基于这些生成的门控GT,SGS损失定义为:

T s i m ( X ) ∈ 0 , 1 \mathbb{T}_{sim}(\mathcal{X})\in{0,1} Tsim(X)0,1代表 X \mathcal{X} X是否应该被最小子网预测, L C E ( X , T ) = − ∑ T ∗ l o g ( X ) \mathcal{L}_{CE}(\mathcal{X},\mathcal{T})=-\sum\mathcal{T}*log(\mathcal{X}) LCE(X,T)=Tlog(X)为门控输出与生成GT之间交叉熵损失。

Experiment


 与不同类型的网络对比ImageNet性能。

 CIFAR-10性能对比。

 VOC检测性能对比。

 对IEB训练方法各模块进行对比实验。

 对比SGS损失与精简比例分布的可视化。

 对比不同的SGS训练策略,Try Best为本文的策略,Give up为放弃hard samples,将其归类为最小精简网络的目标。

 对比不同门控设计细节。

Conclusion


 论文提出能够适配硬件加速的动态网络DS-Net,通过提出的double-headed动态门控来实现动态路由。基于论文提出的高性能网络设计和IEB、SGS训练策略,仅用1/2-1/4的计算量就能达到静态SOTA网络性能,实际加速也有1.62倍。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1579737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gradle 依赖管理-ApiHug准备-工具篇-004

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

比特币革命:刚刚开始

作者:Marius Farashi Tasooji 编译:秦晋 要充分理解比特币及其含义,首先必须理解什么是价值,什么是货币。以及是什么赋予资产价值? 这个问题看似愚蠢,但实际上非常有趣。我们的生活是由我们消费或出售的物品…

每日OJ题_两个数组dp④_力扣44. 通配符匹配

目录 力扣44. 通配符匹配 解析代码 力扣44. 通配符匹配 44. 通配符匹配 难度 困难 给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 ? 和 * 匹配规则的通配符匹配: ? 可以匹配任何单个字符。* 可以匹配任意字符序列(包…

计算机网络 网络命令的使用

一、实验内容 1.PING网络命令的实验 ping 127.0.0.1(内部回环测试)ping 本主机的IP地址ping 默认网关地址ping远端目的地的IP地址ping localhostping域名 2.其他网络命令实验 命令用途ipconfig/all 显示当前系统网络配置,包括IP地址、子网掩码、默认网关等trace…

四级作文模板——议论文——现象解释

议论文类型 现象解释 第一句 with the rapid development of society / economy / education / technology / culture / medical / service(任选) , it is of great necessity for youngster / students to improve our speaking ability.随着社会/经济/教育/科技/文化/医疗…

生产车间图纸无纸化,生产车间图纸无纸化解决方案

生产车间图纸无纸化是指通过采用数字化设备和技术,将传统的纸质图纸转化为电子文档,并在生产过程中实现图纸的电子化、网络化和自动化管理。这一转变旨在提高工作效率、降低成本、提高安全性,并推动生产车间的现代化和智能化。 实现生产车间图…

选择排序解读

在计算机科学中,排序算法是一种将数据元素按照某种顺序排列的算法。今天,我们要探讨的是选择排序(Selection Sort),这是一种简单直观的排序方法,通过不断选择剩余元素中的最小(或最大&#xff0…

【算法统治世界】动态规划 个人笔记总结

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《数据结构与算法:初学者入门指南》📘&am…

Ubuntu20.04连接不了无线网

1.首先查看网卡型号 lspci Network controller显示的就是网卡型号 也可以使用如下命令 lspci -nnk | grep 0280 -A3 2.找到对应的驱动并下载安装 我的电脑的网卡型号为Realtek Semiconductor Co., Ltd. Device b852,则采用如下命令安装: sudo ap…

langchain-chatchat加载Azure Open AI

1.找到knowledge_base_chat.py文件中的get_ChatOpenAI函数 2.按crtl进入get_ChatOpenAI函数位置 3.注释原先的get_ChatOpenAI函数,修改成以下内容: def get_ChatOpenAI(model_name: str,temperature: float,streaming: bool True,callbacks: List[Ca…

等保2(1),最新出炉

9.密码管理 c)采用硬件密码模块实现密码运算和密钥管理 10.变更管理 11.备份与恢复管理 12.安全事件处置 c)应建立联合防护和应急机制,负责处置跨单位安全事件 13.应急预案管理 e)应建立重大安全事件的跨单位联合应急预案,并进…

二:什么是RocketMQ

RocketMQ是阿里开源的消息中间件产品,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,性能强劲(零拷贝技术),支持海量堆积,在阿里内部进行大规模使用,适合在互联网与高并发系统中应用。 官方文档&#xff1a…

2024年,AIGC如何渗透我的生活?

本篇博文列举本人最常用的 6 款app中 AIGC 发挥的功能及作用。 Cursor 作为一名科研工作者,平时最常用的软件就是代码编写工具。Cursor内置的Chat功能,可以辅助完成代码编辑,随时随地实现ChatGPT私有化。 Grammarly 可用于Word和Overleaf等…

创建型模式--4.抽象工厂模式【弗兰奇一家】

1. 奔向大海 在海贼世界中,位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族,当然了他们的逆向工程做的也很好,会拆船必然会造船。船是海贼们出海所必备的海上交通工具,它由很多的零件组成,从宏观上看…

41---音频电路设计

视频链接 音频电路设计01_哔哩哔哩_bilibili 音频电路设计 1、音频基本介绍 1.1、设备 1.1.1、音频接口 型号:ABA-JAK-038-K44 电脑主机上的音频输出插口,一个是粉色的,用来连接麦克风或话筒,一个是绿色的,用来连…

item_review获取商品评论API接口采集用户评论数据接入示例

要获取商品评论API接口采集用户评论数据,首先需要了解API的具体请求方式、参数以及返回数据格式。以下是一个示例(获取API接入KEY): 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secret…

leetcode之704 二分查找

文章目录 每日碎碎念一、题目要求及测试点704 二分查找测试点提示 二、题解自己上手正经题解二分法之左闭右闭二分法之左闭右开 三、总结 每日碎碎念 苦痛生活今日起 从今天开始LeetCode打卡,一边重新刷题,一边春招等笔面试,人生苦痛… 一、…

可视化大屏的应用(9):设备运行监控的应用案例

通过可视化大屏,监控人员可以更加直观地了解设备的运行情况,及时发现问题并进行处理,提高设备的稳定性和可靠性,大千UI工场本期带来相关利用的案例,欢迎友友们品鉴。 可视化大屏在设备运行监控领域有以下作用&#xf…

数据结构:构建完全二叉查找树

文章目录 1、步骤 1: 对给定数组排序2、步骤 2: 递归构建完全二叉查找树3、注意4、在有序数组中寻找根结点位置5、代码实现6、其他方法?基本思路插入操作删除操作特别考虑 对于一个给定序列的二叉查找树,有很多种,但是完全二叉查找树只有一种…

springboot 整合 mybatis(配置版)

代码及配置整合 创建实体类,与数据库对应 创建 mapper、service 和 controller @AutowiredUserService userService;@ResponseBody@GetMapping("/user")public com.vazquez.bootstudy.model.User getById(@RequestParam("id") Long id) {return userServ…