NestDNN:用于连续移动视觉的资源感知性多租户设备深度学习框架

本文出自论文 NestDNN: Resource-Aware Multi-Tenant On-Device Deep Learning for Continuous Mobile Vision,主要提出了NestDNN,一个将运行资源动态性考虑在内的框架,动态地选择最优的资源精度权衡,最大化所有并发应用程序的性能。

移动视觉系统通常会同时运行多个应用程序,由于启动新的应用程序、关闭现有的应用程序和应用程序优先级改变等事件,它们在运行时的可用资源是动态的。本文我们提出了NestDNN,一个将运行时资源的动态性考虑在内的框架,对于移动视觉系统可支持资源感知性多租户的设备深度学习。NestDNN支持每个深度学习模型来提供灵活的资源和精度间的权衡,在运行期间,它动态地为每个深度学习模型选择了最优的资源和精度间的权衡,从而更好地适应系统可用运行资源的需求。这样做,NestDNN有效地利用了移动视觉系统的有限资源,最大化所有并发运行的应用程序的性能。



一、简介

  1. 当深度学习芯片出现时,这里有一个显著的兴趣点,利用设备上的计算资源来执行移动系统上的深度学习模型,并且没有云支持。与云相比而言,移动系统被有限的资源所约束,而深度学习模型被认为是资源需求型的。为了支持设备上的深度学习,常见的做法是对深度学习模型进行压缩来减少它的资源需求,同时有一个可容忍的精度损失作为权衡。但是它有一个缺点,就是在应用开发阶段基于一个静态的资源预算,压缩模型的资源精度权衡已经被预先确定好,在应用部署后也被固定下来。然而,移动视觉系统在运行时的可用资源总是动态变化的。当运行时的可用资源不能满足压缩模型的资源需求时,当前同时运行的应用程序会发生资源争夺,这迫使流媒体视频以更低的帧频率处理。另外,当运行时的额外资源可用时,压缩模型并不能利用额外的可用资源来恢复所牺牲的精度。
  2. 我们提出了NestDNN,一个将运行资源的动态性考虑在内的框架,可以支持用于移动视觉系统的资源感知多租户设备间的深度学习。NestDNN使用灵活的资源精度权衡替代了固定的资源精度权衡,并为在运行时的每个深度学习模型动态地选择最优资源精度权衡,将模型的资源需求和系统的可用运行时资源相匹配。通过这样做,NestDNN能够有效地利用移动系统的有限资源,来最大化所有并发运行的应用程序的性能。
  3. NestDNN设计的关键技术挑战:(1)支持一个深度学习模型去提供灵活的资源-精度权衡;(2)为每个并发运行的深度学习模型选择一种资源精度权衡。为了解决第一个挑战,NestDNN部署了一个新的模型剪枝和复原方案,将一个深度学习模型转换成一个单一的紧缩多容量模型。这个多容量模型由一系列派生模型组成,每一个都提供一个唯一的资源精度权衡,并且较小容量的派生模型和较大容量的派生模型共享它的模型参数,在不占用额外的空间时来获得更大的容量。通过这样做,多容量模型能够提供使用一个紧缩的内存占用来提供不同的资源精度权衡。为了解决第二个挑战,NestDNN将每个并发运行的应用程序的每个派生模型的推理精度和处理延迟编码成一个成本函数,然后部署一个资源感知的运行时调度方案,它为每个深度学习模型选择最优的资源精度权衡,并决定被分配到每个模型运行资源的最优数量,从而最大化总体推理精度和最小化所有并发运行程序的总体处理延迟。
  4. 为了评估多容量模型的性能,我们在6个移动视觉应用程序上进行评估,这些应用程序基于2个广泛使用的深度学习模型(VGGNet和ResNet)以及6种常用于计算视觉系统的数据集。为了对资源感知运行调度方案进行评估,我们合并了2个广泛使用的调度方案,并实现NestDNN和6个运行在3台智能手机上的移动视觉应用程序。
  5. 结果展示:(1)多容量模型能够提供嵌套在一个单一模型上的灵活的和最优的资源精度权衡,使用参数共享,它可以显著地减少模型内存占用和模型切换开销。(2)资源感知运行调度方案胜于在相同调度方案上的资源不可知副本,在推理精度上实现了4.2%的增加,视屏帧处理速率上2倍的增加,以及能耗上1.7倍的减少。

二、NestDNN回顾

  1. NestDNN体系架构:NestDNN被划分成一个离线阶段和一个在线阶段,其中离线阶段由三部分组成,分别是模型剪枝、模型复原和模型分析。

    (1)在模型剪枝过程中,NestDNN部署了一个最先进的 Triplet Response Residual(TRR) 方法来对一个给定的深度学习模型的过滤器进行排序,排序基于它们的重要程度,然后迭代地修改过滤器。在每次迭代过程中,较少重要的过滤器被剪掉,修剪过的模型被重新训练来补偿由过滤器修剪引起的精度损失。当修剪过的模型不能满足由用户设定的最小精度目标时停止迭代。其中最小的修剪模型被称为seed 模型,一个过滤器修剪路线图被建立起来,在路线图上的每个足迹都是一个带有过滤器修剪记录的修剪模型。

    (2)在模型复原过程中,NestDNN部署了一个新的模型 freeze-&-grow 方案以一种迭代方式来生成多容量模型。模型复原使用seed 模型来作为开始点,在每次迭代过程中,模型 freezing 被第一个应用于冻结所有模型过滤器上的参数。通过以逆序的方式沿着过滤器修剪路线图,过滤器growing被用于添加修剪后的过滤器。这样一个有着较大容量的派生模型被生成,它的精度通过再训练被重新获得。通过重复这个迭代过程,一个新的派生模型在先前的基础上生成。于是,最终的派生模型有着所有先前模型的容量,被命名为多容量模型。

    (3)在模型分析过程中,给定一个移动视觉系统的规格,一个用于每个多容量模型的分析被生成,包括推理精度、内存占用和它每个派生模型的处理延迟。

  2. 对于在线阶段,资源可知运行调度器连续地监视着改变运行资源的事件,一旦这样的事件被检测到,调度器会核查所有并发运行的应用程序的分析,为每个应用程序选择最优的派生模型,然后分配运行资源的最优数量到每个所选择的派生模型,从而最大化总体推理精度并最小化所有这些应用程序的总体推理延迟。NestDNN架构

三、NestDNN设计

  1. 基于过滤器的模型剪枝:通过修剪滤波器,模型大小(模型参数)和计算成本(浮点数计算)都被减少了。过滤器剪枝的关键是确定较少重要的过滤器,通过修剪这些滤波器,一个CNN模型的大小和计算成本都可以被有效地减少。为此,我们提出了一个过滤器重要性排序方法(TRR)来衡量过滤器的重要性,并根据它们的相关重要性程度来对滤波器进行排序。TRR方法的关键点是:如果一个过滤器能够提取特征映射,并且这些特征映射对于区分图像归属到不同的类是有用的,则这个滤波器是重要的。换言之,如果从图像中提取到的特征映射属于同一类的要比属于不同类的更相似,则这个滤波器是重要的。我们设置一个三元组{ a n c , p o s , n e g anc,pos,neg },第一个代表基础图像,第二个代表积极图像,第三个代表消极图像,其中 a n c anc p o s pos 来自于同一类, n e g neg 来自于不同类, F ( . ) F(.) 表示生成的特征映射,因此过滤器i的TRR被定义为: T R R i = ( F i ( a n c ) F i ( n e g ) 2 2 F i ( a n c ) F i ( p o s ) 2 2 ) TRR_i=\sum(||F_i(anc)-F_i(neg)||_2^2-||F_i(anc)-F_i(pos)||_2^2)
    过滤器剪枝

  2. 从过滤器重要性分析结果中,我们有两个关键发现:(1)我们发现TRR方法能够有效地确定每个卷积层的冗余滤波器,通过修剪这些冗余的滤波器,原始的VGG-16模型可以被有效地压缩且没有任何精度损失。(2)我们发现我们的TRR方法能够有效地确定对过滤器修剪更为敏感的卷积层,这种跨卷积层的敏感差异性已经在迭代式过滤器修剪过程中被考虑在内。

  3. 过滤器修剪路线图:通过使用TRR方法对过滤器的重要程度进行排序,我们迭代式地在一个CNN模型上对滤波器进行修剪。在每次迭代期间,跨卷积层的较少重要的滤波器被修剪掉,然后修剪过的模型被重新训练来补偿由过滤器修剪造成的精度损失。当修剪过的模型不能满足由用户设定的最小精度目标时,迭代过程结束。最终一个过滤器修剪路线图被建立好,这里路线图上的每个足迹都是一个有着过滤器修剪记录的修剪模型。这个过滤器修剪路线图被用来引导后面的模型复原过程。

  4. 模型Freezing和过滤器Growing:多容量模型的生成开始于从过滤器修剪过程中派生的seed模型,通过跟随着过滤器修剪路线图和freeze-&-grow方法,多容量模型被迭代生成。给定一个seed模型,我们首先使用model freezing方法来冻住所有滤波器的参数。接下来,由于路线图上的每个足迹都有它的过滤器修剪记录,我们以逆序方式沿着这个过滤器修剪路线图,然后使用filter growing方法来添加修剪掉的过滤器。最后,我们重新训练这个派生模型来获得精度。seed模型和派生模型共享了它的所有模型参数,使它嵌套于派生模型中而不占用额外的内存空间。通过重复这个过程,一个新的派生模型在先前的基础上被生成。像这样做,最终的派生模型有着所有先前派生模型的容量,因此被命名为多容量模型。
    模型冻结和过滤器生成

  5. 多容量模型的优势:(1)一个多容量的紧缩模型,消除了可能安装大量具有不同容量的独立模型需要,通过在派生模型间共享参数,多容量模型可以节省大量的内存空间来显著减少内存占用;(2)最优资源精度权衡:多容量模型在一个给定的资源预算下,给出了最好的推理精度;(3)有效模型切换:由于参数共享,多容量模型可以通过少量开销来切换模型,它只需要在深度学习模型的非常小的部分中进出来解决开销问题。
    模型切换

  6. 资源感知调度器关键点:第一,当一个确定数量的运行资源可以被用作一些应用程序的精度增益时,相同数量的运行资源可能被用作一些其他应用程序的一个更大的精度增益。第二,对于不需要实时响应并可以容忍一个相对大的处理延迟的应用程序,我们可以从这些延迟容忍的应用程序中重分配一些运行资源,给那些需要更多运行资源来满足实时目标的应用程序。NestDNN通过将每个视觉应用程序的推理精度和处理延迟编码成一个代价函数,来作为资源感知调度器的基础。

  7. 代价函数:假定V代表并发运行在一个移动视觉系统的视觉应用程序的集合, A m i n ( v ) A_{min}(v) 表示最小推理精度, L m a x ( v ) L_{max}(v) 表示最大处理延迟目标, M v M_v 表示由应用v生成的多容量模型, m v m_v 表示一个派生模型, u v [ 0 , 1 ] u_v \in [0,1] 是分配给v的计算资源比例, L ( m v ) L(m_v) 是所有计算资源分配给v的处理延迟,所以对于一个应用程序v来说其派生模型 m v m_v 的代价函数可定义为: C ( m v , u v , v ) = ( A m i n ( v ) A ( m v ) ) + α . max ( 0 , L ( m v ) u v L m a x ( v ) ) C(m_v,u_v,v)=(A_{min}(v)-A(m_v))+\alpha . \max(0,\frac{L(m_v)}{u_v}-L_{max}(v))

    代价函数的第一个式子表示要选择推理精度尽可能高的派生模型 m v m_v ,第二个式子表示对选择推理延迟高于最大推理延迟目标的派生模型的惩罚。 α \alpha 被用户来设定,从而决定延迟精度权衡性能,一个较大的 α \alpha 着重于对延迟的惩罚,而一个较小的 α \alpha 则着重于支持更高的精度。

  8. 调度方案:(1)MinTotalCost(最小化总体代价):旨在最小化所有并发应用程序的总体代价,优化问题可定义为: min u v , m v M v v V C ( m v , u v , v ) \min \limits_{u_v,m_v \in M_v}\sum_{v\in V}C(m_v,u_v,v) ,资源感知调度器支持较低代价的应用程序,于是被优化来分配到更多的运行资源。(2)MinMaxCost(最小化那个最大化的代价):旨在最小化有着最高代价的应用程序代价,优化问题可被定义为: min u v , m v M v k , v : C ( m v , u v , v ) k \min \limits_{u_v,m_v\in M_v}k,\forall v:C(m_v,u_v,v)\leq k ,资源感知调度器被优化来公正地分配运行资源给所有的并发应用程序,从而来平衡它们的性能。

四、评估

  1. 实验准备:实验类型为一般类别对象识别和特殊类别对象识别,DNN模型选择为VGG-16和ResNet-50。我们按照表中的6个数据集来训练和测试所有普通的DNN模型和利用NestDNN生成的所有后代模型。
    实验准备
  2. 多容量模型性能评估:(1)优化了资源精度权衡:在所有6个应用程序中,我们发现在每个模型大小上,派生模型始终要比基础模型获得更高的精度;另外,我们发现较小的派生模型与较大的派生模型相比,更优于基础模型;在派生模型与普通模型的计算代价比较中,我们的过滤器修剪方案能够有效地减少应用程序的计算成本,证实了该方案的普遍性。
    模型精度评估计算成本
    (2)内存占用上的减少:为了对参数共享在内存占用减少上的好处进行量化,我们比较了多容量模型与派生模型累积的模型大小,发现多容量模型的模型大小小于相关的累积模型大小。
    内存占用
    (3)模型切换开销的减少:生成的多容量模型可以显著减少在内存占用和能耗上的模型切换开销,这对于内存和电池受限的移动系统来说十分重要。
    模型切换开销
  3. 资源感知调度器的性能评估:其评估准则为推理精度增益和帧率加速。(1)在推理精度和帧率上的提升:通过调整 α \alpha 的值,NestDNN能够提供在推理精度和帧率上的不同权衡;另外我们可以找到一个关键点,使其top-1准确率和帧率均优于目前方法且最合适。(2)能耗减少:除了对推理精度和帧率有所提升外,NestDNN也消耗了较少的能量。
    推理精度和加速评估能耗比较

五、讨论

  1. 移动视觉系统的影响:NestDNN表示了第一个框架,可以为移动视觉系统支持资源感知的多租用设备深度学习。它通过灵活的资源精度权衡来代替固定的资源精度权衡,并在运行状态下动态地选择最佳权衡来实现资源约束下的最大性能。
  2. NestDNN的普遍性:NestDNN可以被扩展到支持计算机视觉任务的其他计算任务中去,它对于实现资源感知的多租用设备深度学习来说,是一个通用类的框架。
  3. 限制约束:尽管TRR方法优于过滤器剪枝中的L1-norm方法,它的计算成本也要更高,这显著增加了多容量模型生成过程中的成本,在未来工作中需要找到更适合的方法来减少该成本代价。

六、相关工作

  1. 深度神经网络模型压缩:最普遍使用的剪枝方法集中于修剪模型参数,尽管剪枝方法在减少模型大小时很有效,但它并不一定会减少计算成本,对于需要提供实时服务的移动系统来说较少有用。我们的工作集中于通过过滤器修剪来压缩深度神经网络,所提出的多容量模型可以提供动态的资源精度权衡。
  2. 连续的移动视野:Starfish是一个支持在移动设备上有效运行并发视觉应用程序的框架,它主要通过跨程序来共享共用计算和内存对象来实现的。我们的方法通过共享派生模型的参数,是所提出的多容量模型有一个紧缩的内存占用和较少的模型切换开销。另外,我们的工作集中于发展一个并不依赖于云连接的设备上深度学习框架,NestDNN独立地对待每一个并发运行的应用程序,侧重于跨每个应用程序的不同模型变体的模型共享。

七、结论

本文中,我们说明了NestDNN的设计、实现和评估,它是一个用于移动视觉系统的支持资源感知的多租用设备深度学习框架。NestDNN将一个移动视觉系统的运行资源动态性考虑在内,动态地选择最优的资源精度权衡,和为每个并发运行的深度学习模型来选择资源分配,从而最大化其性能。我们使用6个移动视觉应用程序来评估NestDNN,主要针对于移动视觉系统的视觉任务。最终实验结果展示出NestDNN在推理精度、视频帧处理速率和能耗上优于目前的资源未知方法。

发布了31 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/librahfacebook/article/details/99628447