CN112990018A - 一种动态变化网络环境下深度学习模型的加速执行方法 - Google Patents
一种动态变化网络环境下深度学习模型的加速执行方法 Download PDFInfo
- Publication number
- CN112990018A CN112990018A CN202110288968.9A CN202110288968A CN112990018A CN 112990018 A CN112990018 A CN 112990018A CN 202110288968 A CN202110288968 A CN 202110288968A CN 112990018 A CN112990018 A CN 112990018A
- Authority
- CN
- China
- Prior art keywords
- edge
- cut
- delay
- node
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000013136 deep learning model Methods 0.000 title claims abstract description 15
- 230000008859 change Effects 0.000 title claims description 6
- 230000005540 biological transmission Effects 0.000 claims abstract description 32
- 238000013528 artificial neural network Methods 0.000 claims abstract description 31
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 7
- 230000000694 effects Effects 0.000 claims abstract description 6
- 238000005520 cutting process Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 claims description 4
- 238000005304 joining Methods 0.000 claims description 3
- 239000002243 precursor Substances 0.000 claims description 2
- 230000001934 delay Effects 0.000 claims 1
- 239000010410 layer Substances 0.000 description 54
- 230000011218 segmentation Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 240000007651 Rubus glaucus Species 0.000 description 2
- 235000011034 Rubus glaucus Nutrition 0.000 description 2
- 235000009122 Rubus idaeus Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 102100035959 Cationic amino acid transporter 2 Human genes 0.000 description 1
- 241000282414 Homo sapiens Species 0.000 description 1
- 108091006231 SLC7A2 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/96—Management of image or video recognition tasks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
Abstract
本发明公开一种动态变化网络环境下深度学习模型的加速执行方法,利用网络流算法对DAG类型的神经网络进行切割,允许在将DNN同时部署在边缘端和云端,限制了数据传输的同时也加速了推理。利用无向图割顶的性质,提出了一种两步方法减少了最小割模型的决策时间。利用新的时延测量方法,与其他方法相比,该方法能够达到减少推理时延和提高吞吐量的效果。方法可以自适应的根据网速对卷积神经网络进行切割,当网速较快的时候,尽可能的将计算任务交给云端处理,而当网速较慢的时候,尽可能的将计算任务在边缘进行计算,将中间结果传输到云端进行处理。
Description
技术领域
本发明提供一种动态变化网络环境下深度学习模型的加速执行方法,主要应用于物联网、边缘计算领域,涉及神经网络算法,以及网络流,Tarjan算法。
背景技术
深度学习近年来取得了很多进展,在很多领域得到了广泛的应用。特别是在计算机视觉领域,将图像识别和视频分析的速度和准确度提高到了一个新的高度。许多的物联网设备配合强大的云计算平台拓展出了许多基于深度学习的视觉应用。例如,自动驾驶技术,车载摄像头产生的视频流数据通过上载到服务器,服务器对视频中的图像进行语义分割和目标检测,然后将数据回传到自动驾驶的决策中心。谷歌眼睛上的智能玻璃捕捉图像并传输到云端进行分析,云端将分析结果回传到智能玻璃并显示出来,实现人类和现实场景的实时交互。
深度学习技术极大地推动了上述物联网应用的发展。其通常采用的方法是以云为中心,将物联网设备产生的图像通过长广域网传输到具有强大计算能力的云端,云端进行推断之后再将结果返回到设备。但是传统以云为中心的方法极大的依赖网络条件,在网络条件差的情况下会造成较大的时延和能量消耗。例如,自动驾驶摄像头捕捉的视频,每秒产生的数据可达750MB,若完全不在物联网设备上进行处理,上载如此巨量的数据到云端所造成的时延是不可接受的。若完全依靠物联网设备处理这些数据,也是十分困难的,由于物联网设备本身受到的计算能力,内存和能量限制,而深度学习模型往往十分的占据内存,其不能完全取代云计算。例如,VGG16模型,平均每张图片所需的内存大小为93MB,在树莓派3B上进行一次完全推理的时间需要2秒钟以上。
针对这个问题,近年来人们提出了一些解决方法,一种是采用边缘和云端联合进行推断的方式实现推理加速。如图1所示,可以看到,AlexNe的特点是卷积层的输出远远小于原始输出,卷积层输出最多能达到284KB,而卷积层的能耗远远小于全连接层。根据CNN的这个特点,研究者提出了一系列的解决方案。这类解决方案是将模型抽象成一条链或者有向无环(DAG),并根据所给的限制条件根据网络带宽的情况自适应的切分神经网络,把神经网络不同层放置在不同设备上运行。比如Neurosurgeon,DADS。另一种是减少神经模型尺寸和计算次数的方法,比如设计轻量化网络或者对模型进行压缩。模型压缩可以通过修剪现有CNN的权重来实现,即通过将一些权重设置为零来使过滤器稀疏,或者通过设计权重较小的紧凑层来减少参数量。例如,MobileNet、GoogLeNet和SqueezeNet。还有一类方法是设计多出口网络模型,这种类型的神经网络从低到高有多个分类分支,当分类目标的置信度到达阈值以上时,就能在该层将分类结果确定,而不需要往更深层进行传输,减少了传输的数据。代表性的工作有BranchyNet、DDNN。
上述的边云协同推理方法虽然可以自适应的进行模型切分,但存在如下不足。1)DNN的最新进展表明DNN不再局限于链式拓扑,DAG拓扑越来越受欢迎,以前针对链式拓扑结构的方法无法对DAG拓扑结构的神经网络进行自适应切分。例如,在2014年和2015年获得ImageNet挑战赛冠军的GoogleNet和ResNet[2]的拓扑结构都是DAG模型。以Neurosurgeon为首的链式拓扑切割方法,在这些情况下是不能对这些模型进行有效的切分的。2)对DAG拓扑结构的神经网络进行切分的工作,如DADS,时间复杂度很大。考虑到切分的决策一般是在资源受限的终端设备上进行,可用性收到影响。3)已有模型对每层的时间估计不准确。之前的所有工作,每层的运行时间是独立计算的,但这个不符合实际情况。实际上,现有的很多机器学习框架对于激活函数进行了优化,这导致多个层整体运行时间和单独每层的运行时间之和是存在很大差异的。这些优化导致已有的这些切分方法在真正的边缘环境中不能达到最优的效果。
本发明所用到的名词解释如下:
边缘计算:是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。
神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。
DAG:有向无环图,指没有环路的有向图。
割点:在一个无向图中,如果删除某个顶点以及与该顶点相关联的边以后,图的连通分量增多,就称这个点为割点。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种动态变化网络环境下深度学习模型的加速执行方法,由于某些中间CNN层的数据大小明显小于原始输入数据的事实,设计一种DNN切割方法,该方法利用网络流算法对DAG类型的神经网络进行切割,允许在将DNN同时部署在边缘端和云端,限制了数据传输的同时也加速了推理。利用无向图割顶的性质,提出了一种两步方法减少了最小割模型的决策时间。利用新的时延测量方法,与其他方法相比,该方法能够达到减少推理时延和提高吞吐量的效果。该方法用于自动驾驶,视频监控等领域,边缘端没有足够的算力支持神经网络的快速推理,而将原始数据全部传输到云端进行处理会带来带宽拥塞,产生传输时延,而且会带来隐私泄露的问题,我们提出的方法可以自适应的根据网速对卷积神经网络进行切割,当网速较快的时候,尽可能的将计算任务交给云端处理,而当网速较慢的时候,尽可能的将计算任务在边缘进行计算,将中间结果传输到云端进行处理。我们的自适应神经网络切割方法(QDMP),不仅可以对链式神经网络进行切割,而且还能够对DAG类型的神经网络进行切割,使得计算时延和传输时延达到一个平衡,在动态变化的网络中得到最优解。
技术方案:一种动态变化网络环境下深度学习模型的加速执行方法,包括如下步骤:1)得到卷积神经网络每一层在边缘端和云端的实际运行时间以及每一层输出大小;实时监控网络带宽,根据神经网络每一层输出大小和网络带宽得到传输时延。2)将神经网络的层抽象为节点,具有数据传输的两个节点之间连接一条有向边,得到DAG图。3)对DAG模型进行建模,将每个节点拥有的三个时延属性拆分为三条有向边,并建立超级源点和超级汇点;利用网络流算法寻找该模型的最小割,寻找到最小割在原图上所经过的割边,从该割边集处将整个模型进行切割。4)利用Tarjan算法寻找割点集。5)结合3)和4)设计总体算法实现减少时间复杂度的效果。
步骤1)的具体实现过程包括:
a)对于任意节点vi∈V,利用edge_delay(v1,vi)表示在边缘端输入层v1到vi的连续时延,cloud_delay(vi,vn)表示在云端从vi到输出层vn的连续时延。其中cloud_delay(vi,vn)=cloud_delay(v1,vn)-cloud_delay(v1,vi)。在我们进行最小割时,我们需要知道每一层的单独时延,我们使用如下方法得到每一层的时延:首先得到v1到所求层vi的连续时延,查找vi所有前驱节点连续时延的最大值,用当前层连续时延减去这个最大值,即可得到该层的单独时延和表示第i层在边缘端的时延,表示第i层在云端的时延。
步骤3)的具体建模过程:
在DNN的拓扑图G=<V,E>中,每个节点都拥有三个延时和我们的目标是在带宽为B的情况下寻找到一组割边集,将V划分为两个互不相交的子集Ve和Vc。直接在G中寻找一组割边集是比较困难的,通过构建G′,使得G′的每一条边都只捕获一个时延。这样,我们就能将在G中的寻找割边集的问题转化在G′中寻找最小割的问题。
下面我们将说明如何由G构建G′。
添加节点:首先构建三个新的节点,分别记为e,c,o。其中e是网络流的源点,最终和e归为一类的节点代表部署在边缘端的节点。c是网络流的汇点,最终和c归为一类的节点代表部署在云端的节点。o是一个虚拟节点,代表外部输入到G中的数据,其本身不属于V,由于数据总是在边缘端产生的,故o永远和e划分在一个集合。
云端时延:基于G′,我们在e和所有的v∈v之间添加一条单向边,我们称之为”红边”,红边的权值为每个节点在云端的时延。在e和o中添加一条权值为inf的边,确保了最小割不会割到这条边上,从而保证e和o属于同一个集合。
边缘端时延:与b)类似,我们在v∈V和c之间添加一条单向边,我们称之为”蓝边”,蓝边的权值为每个节点在边缘端的时延。o不会和c划分到一个集合,所以c和o之间的边权值为0。
传输时延:其余的边我们都用来捕获传输时延。对于G中的每一对有数据传递关系的节点<u,v>,其边权就是传输时延,我们称之为”黑边”。但若u有多个后继节点,则每一条边权都会捕获一次传输时延,但在实际中u只需要向所有后继节点传输一次数据。为了保证传输时延只被计算一次,对于原图中出度大于1的节点u,都将其拆为两个节点u和u′,其中u向u′连第u层的传输时延,u′代替u向其所有后继节点连容量为inf的边。o与G的输入节点连接,这条边的权值赋值为外部输入带来的传输时延。
构建出图G′后,我们在G′上使用最小割算法,便可以将G′中的节点部署到两个集合中,对应在G中得到Ve,Vc和Ecut。Ve表示G中部署在边缘端的节点,Vc表示G部署在云端的节点,Ecut表示G中的最优割边集。
步骤4)的过程如下:
使用dfs_clock记录的是每个节点第一次被访问的时间戳,pre[v]表示v第一次被访问到的时间,若pre[v]=0表示v还未被访问,设置子节点数目child为0。lowv表示v及其后代能通过反向边连回的最早的祖先的pre值。
假设当前顶点为u,从u开始遍历,遍历u的邻接节点得到其子树数量,若child为1,则u为根节点,在u是根节点的情况下,若u只有一个孩子,那么u肯定不是割点,若u存在一个以上的孩子,那么u节点即为割顶。当u不为根节点时,通过遍历u的所有邻接点v,若v节点还未被访问过,我们递归访问v节点,求得lowv,若lowv≥pre[u]时,那么u就为割顶。若u为割顶,那么我们设置iscut[u]为true。
将所有iscut[u]为true的节点加入Vcut,即可得到G′的割顶集Vcut。
步骤5)的过程如下:
使用4中所描述过程求出Vcut,初始化最小时延delaymin为全部放在边缘执行和全部放在云端执行的较小者,顺序枚举Vcut中的相邻割顶vi和vj,将vi和vj的之间的子图Gsub构造为G′sub。
值得注意的是,vi已经被分配在边缘端了,vj已经被分配在云端了,所以e向vi连的边和vj向c连的边的权值为inf,以避免这两个点被错误的划分到另一边。
利用最小割算法得到最优割边集其需要的代价为cost。{v1,v2...vi}都被分配边缘端,使用代表这一段的时延,记为te,{vj,vj+1...vn}都被分配云端,使用代表这一段的时延,记为tc,若te,tc,cost之和小于delaymin,则更新当前的delaymin为te+tc+cost,然后更新Ve,Vc,Ecut,Te,Tc,Tt为 te,tc,tt。
本发明方法:第一,提出了一种新的建模方法对DAG进行切割,修正了原来的方法的不足之处。第二,提出了两步切分方法,能够实时进行DAG结构神经网络的切分。第三,发现了连续多层运行时间和单层时间之和不同的现象。本发明方法能够更准确的对模型进行切分。第四,在实际的设备上做了大量的实验,结果表明我们算法的切分准确度和速度都好于之前的算法。
有益效果:与现有技术相比,本发明提供的动态变化网络环境下深度学习模型的加速执行方法,解决了DAG类型神经网络的切割问题。此外,与别的建模方法相比,最多可以提高66倍的切割速度,达到实时切割的效果。在自动驾驶领域,视频监控领域采用此方法可以对推理进行加速,加快数据分析过程。
附图说明
图1为AlexNet不同层输出数据大小和时延柱状图;
图2为GoogLeNet的部分结构示意图;
图3为图2抽象出来的DAG拓扑结构示意图;
图4为DAG构造网络流模型图;
图5为有向无环图上的割边集和割点示意图;
图6为QDMP方法与仅边缘和仅云端的方法对比柱状图;
图7为QDMP方法与DADS和Neurosurgeon的方法对比柱状图;
图8为三种DAG类型神经网络(AlexNet-Parallel、ResNet18、GoogleNet)的割边集示意图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种动态变化网络环境下深度学习模型的加速执行方法,包括1)得到卷积神经网络每一层在边缘端和云端的实际运行时间以及每一层输出大小;实时监控网络带宽,根据神经网络每一层输出大小和网络带宽得到传输时延。2)将神经网络的层抽象为节点,具有数据传输的两个节点之间连接一条有向边,得到DAG图。3)对DAG模型进行建模,将每个节点拥有的三个时延属性拆分为三条有向边,并建立超级源点和超级汇点;利用网络流算法寻找该模型的最小割,寻找到最小割在原图上所经过的割边,从该割边集处将整个模型进行切割。4)利用Tarjan算法寻找割点集。5)结合3)和4)设计总体算法实现减少时间复杂度的效果。具体包括如下内容:
(1)神经网络抽象为DAG模型并对边权赋值
以层为粒度对DNN进行建模,每一个DNN模型都可以被建模为一张DAG图,DNN的每一层都是DAG上的一个顶点,有数据传递关系的两层是DAG上的一条边,层是不可分割的。每一层必须在边缘端或者云端处理。
令G=<V,E>代表DNN的DAG结构,其中V={v1,v2,...vn}代表DNN层的顶点集合,v1代是输入层,vn是输出层。E是这些顶点之间的数据传递关系组成的边集,有向边<vi,vj>∈E代表vi在vj之前处理,vi的数据处理完后传输到vj。如图2所示,图2是GoogleNet的部分结构,图3是以层为粒度对图2建立的DAG结构。
DAG中含有三种权值,由于每个顶点都可以放置在云端或者边缘端进行处理,故每个顶点在其所处的位置都有一个权值,我们使用代表一个节点在边缘端的处理时间,使用代表一个节点在云端的处理时间。定义集合Dt={d1,d2,...dn},,其中di代表节点vi输出张量的大小。若带宽为B,则vi与其后继节点之间的时延为我们将DAG中每条边<vi,vj>∈E的边权赋值为定义集合为层在边缘端的时延,为层在云端的时延,为传输时延。
(2)构造网络流模型
在DNN的拓扑图G=<V,E>中,每个节点都拥有三个延时和我们的目标是在带宽为B的情况下寻找到一组割边集,将V划分为两个互不相交的子集Ve和Vc。直接在G中寻找一组割边集是比较困难的,通过构建G′,使得G′的每一条边都只捕获一个时延。这样,我们就能将在G中的寻找割边集的问题转化在G′中寻找最小割的问题。
下面将说明如何由G构建G′。
a)添加节点:首先构建三个新的节点,分别记为e,c,o。其中e是网络流的源点,最终和e归为一类的节点代表部署在边缘端的节点。c是网络流的汇点,最终和c归为一类的节点代表部署在云端的节点。o是一个虚拟节点,代表外部输入到G中的数据,其本身不属于V,由于数据总是在边缘端产生的,故o永远和e划分在一个集合。
b)云端时延:基于G′,我们在e和所有的v∈V之间添加一条单向边,我们称之为”红边”,红边的权值为每个节点在云端的时延。在e和o中添加一条权值为inf的边,确保了最小割不会割到这条边上,从而保证e和o属于同一个集合。
c)边缘端时延:与b)类似,我们在v∈V和c之间添加一条单向边,我们称之为”蓝边”,蓝边的权值为每个节点在边缘端的时延。o不会和c划分到一个集合,所以c和o之间的边权值为0。
d)传输时延:其余的边我们都用来捕获传输时延。对于G中的每一对有数据传递关系的节点<u,v>,其边权就是传输时延,我们称之为”黑边”。但若u有多个后继节点,则每一条边权都会捕获一次传输时延,但在实际中u只需要向所有后继节点传输一次数据。为了保证传输时延只被计算一次,对于原图中出度大于I的节点u,都将其拆为两个节点u和u′,其中u向u′连第u层的传输时延,u′代替u向其所有后继节点连容量为inf的边。o与G的输入节点连接,这条边的权值赋值为外部输入带来的传输时延。
构建出图G′后,我们在G′上使用最小割算法[1],便可以将G′中的节点部署到两个集合中,对应在G中得到Ve,Vc和Ecut。Ve表示G中部署在边缘端的节点,Vc表示G部署在云端的节点,Ecut表示G中的最优割边集。
如图4所示,将说明如何利用以上算法将图4(a)建立为图4(b),然后利用网络流算法求出割边集。四个顶点中,v1的出度大于1,首先将v1拆分为v1和v′1,<v1,v′1>,<v2,v4>,<v3,v4>的权值分别为<v′1,v2>和<v′1,v3>的权值为inf.建立三个新节点e,c,o,e与v1~v4之间的有向边权值为该层在云端的延时,与o之间的权值为inf。v1~v4与c之间的有向边权值为该层在边缘端的延时,o与e之间的权值为0。o与v1之间的权值为τ,代表的是外部输入数据到v1的时延。最小割为cut1时,对应G中Ve={v1},Vc={v2,v3,v4},Ecut={<v1,v2>,<v1,v3>},此时外部输入的传输代价τ不会被计算到最小割中。当最小割为cut2时,此时v1~v4全部都会被部署到云端,此时传输代价τ就会被算进最小割。DADS的模型没有考虑计算传输代价τ,所以它在这两种情况下,都会将v1~v4部署到云端。
(3)两步切割方法
提出了两步方法减少时间复杂度。第一步是寻找到图G的割点集Vcut,第二步顺序枚举Vcut中的相邻节点,获得相邻节点之间子图,利用最小割算法对子图进行切割,在所有子图的割边集中选择能够使得Te+Tc+Tt最小化的割边集对G进行切分。
由于DNN的特殊性,其拓扑结构一般是一个长且窄的DAG图,对于链式DNN,其拓扑结构除了首节点和尾节点每一个节点都是一个割点,如图2中DAG所示,v9为割点。对于DAG拓扑结构的DNN,为了融合不同层的特征,DNN每经过几层就会将前几层的特征连接起来,进行特征融合,故G上存在许多割点。比如,166层的GoogLeNet对应的DAG结构上存在38个割点。在割顶处就可以将一个DAG模型进行分割。
对于链式拓扑,其最优解必定存在于其拓扑结构的某一个割顶处,这是显而易见的。对于DAG拓扑,虽然在割顶处可以将网络分割开来,但是得到的解并不一定是最优的,在其拓扑结构上有可能存在一组节点,在这组节点处可以得到一组割边,比在割顶处进行分割的时间更少。如图5所示,在v8和v13处我们都能将G分割为两个子图,但是最优的切割方法有可能并不在v8和v13上,而是在<v9,v11>和<v10,v12>组成的割边集上我们将G的割点集称为Vcut,为了描述方便,将v1,vn加入Vcut。对于DNN的DAG结构,这组割边集一定位于Vcut中的某两个相邻节点之间。
Theorem:对于DNN的拓扑结构G={V,E},使得总时延最少的最优割边集一定位于Vcut中的某两个相邻节点之间。
证明.记图G的最优割边集为Ecut,记输入层为u,最终输出节点为v。
①若u,v之间没有割顶,那么这组割边就在u和v之间,符合假设。
②若u,v之间存在割顶,对于u和v中的任意割顶s,若Ecut既位于u和s之间又位于s和v之间,那么按照定义,Ecut会将图G切分为3部分,与将图G分为两部分的前提矛盾。故割边集必位于u和s之间或者s和v之间,不论选择u和s还是s和v,又回到了第②步,直到两个割顶相邻为止。故对于DNN的拓扑结构G,割边集一定位于Vcut中的某两个相邻节点之间。
基于此结论,只需要找到DAG上所有的割点得到Vcut,然后枚举Vcut相邻节点,在其中找到最优割边集Ecut即可。
(4)通过Tarjan算法获取割点集合
割顶的定义是针对无向图的,所以我们首先得到G对应的无向图G′,得到G′的方法很简单,将G中的单向边变成双向边即可。
在G′的DFS树中,割顶有如下定理:
①若u是根节点,如果u有两个及其以上的孩子,那么u是割点;
②若u是非根节点,则其为割顶当且仅当u存在一个子节点v,使得v及其所有后代都没有反向边连回u的祖先;
根据以上定理,可以使用Targin算法求出G′的割点集Vcut。
dfs_clock记录的是每个节点第一次被访问的时间戳,pre[v]表示v第一次被访问到的时间,若pre[v]=0表示v还未被访问。lowv表示v及其后代能通过反向边连回的最早的祖先的pre值。算法7~15行描述了u为非根节点的情况,若u存在一个子节点v,使得lowv≥pre[u]时,u就为割顶。算法18~19行描述了u为根节点的情况,在u是根节点的情况下,若u只有一个孩子,那么u肯定不是割点。最后我们将所有iscut[v]=true的节点加入Vcut,即可得到G′的割顶集Vcut。
(5)两步切割方法整体算法
在Vcut中选择相邻节点vi和vj,vi,vj之间可以得到G的一个子图Gsub,记Gsub中所有顶点的集合为Vsub,目标是在所有的Gsub中找到最优割边集Ecut将G切分开来。使用在上一节的建模方案将Gsub建模为G′sub,利用最小割算法找到G′sub中的最小割,将Vsub划分为不相交的两个子集和G′sub的最佳割边集记为此时Vsub部署在边缘端的节点集合为部署在云端的节点集合为若此时的Te+Tc+Tt最小,则更新Ve为更新Vc为更新Ecut为遍历图中的所有Vcut中所有的相邻节点,我们最终可以得到使得Te+Tc+Tt最小的Ve,Vc和Ecut。
整体算法描述如Algorithm2所示:使用Algorithm1求出Vcut,初始化最小时延delaymin为全部放在边缘执行和全部放在云端执行的较小者,顺序枚举Vcut中的相邻割顶vi和vj,将vi和vj的之间的子图Gsub构造为G′sub。值得注意的是,vi已经被分配在边缘端了,vj已经被分配在云端了,所以e向vi连的边和vj向c连的边的权值为inf,以避免这两个点被错误的划分到另一边。利用最小割算法得到最优割边集其需要的代价为cost。{v1,v2...vi}都被分配边缘端,使用代表这一段的时延,记为te,{vj,vj+1...vn}都被分配云端,使用代表这一段的时延,记为tc,若te,tc,cost之和小于delaymin,则更新当前的delaymin为te+tc+cost,然后更新Ve,Vc,Ecut,Te,Tc,Tt为 te,tc,tt。
两步算法修补了DADS建模方法的缺陷,并且时间复杂度比DADS低很多,DADS直接需要测量每一层的时延,实际操作中比较复杂。DADS的时间复杂度为O((n+m)n2),我们的时间复杂度与图中的割顶数量相关,算法的第一步寻找割顶的时间复杂度为O(n+m)。算法的第二步,假设割顶有k个,则可将图G分为k+1个子图,每个子图平均有个节点和条边。故每个子图使用最小割算法计算割边集的平均时间复杂度为一共需要遍历k+1个子图,还需乘上k+1,算法的平均时间复杂度为k为G中割顶的个数,当k+1和n接近时,本发明方法的时间复杂度接近线性。
表1.DADS与QDMP方法在不同神经网络上的切割耗时
见表1,实验采取了在三种不同的DAG类型神经网络中做了实验,三种DAG网络分别为AlexNet-Parallel、ResNet18和GoogleNet。采用树莓派3B模拟边缘端,使用8核心Intelcore i7-9700k@3.60GHzCPU和一块NVIDIA RTX 2080i TX GPU模拟边缘端,使用CAT2、3G、4G以及WIFI四种网络环境对本发明的方法进行测试。
首先测试出每种神经网络每层在边缘端的时延,以及每层在云端的时延,并实时监控当前带宽数据。使用keras框架自动获取神经网络的架构,根据架构之间层与层的关系抽象为一个DAG,使用4)中所描述的方法将DAG中的割点集合找到,并使用5)中所描述的算法在子图中构建网络流模型,寻找最佳割边集。
如图8所示,五角星/五边形/菱形/三角形处分别代表了在4种不同网络带宽下本发明方法所找到的割边集合。网速越慢,QDMP越有可能在DAG的较深处对神经网络进行切割,使得传到云端的数据尽可能的少;网速越快,QDMP越有可能在DAG的较浅处对神经网络进行切割,使得边缘端的计算压力尽可能的小。
从实验结果来看,该方法能够根据带宽自适应的对神经网络进行切割,针对DAG类型神经网络找到最优划分割边集,我们可以发现在不同的网速下QDMP选择的切割点都是不同的,并且符合我们的预期,实验结果表明QDMP方法显著减少了时延并增加了吞吐量。
Claims (6)
1.一种动态变化网络环境下深度学习模型的加速执行方法,其特征在于,包括如下步骤:
步骤1)得到卷积神经网络每一层在边缘端和云端的实际运行时间以及每一层输出大小;实时监控网络带宽,根据神经网络每一层输出大小和网络带宽得到传输时延;
2)将神经网络的层抽象为节点,具有数据传输的两个节点之间连接一条有向边,得到DAG图;
3)对DAG模型进行建模,将每个节点拥有的三个时延属性拆分为三条有向边,并建立超级源点和超级汇点;利用网络流算法寻找该模型的最小割,寻找到最小割在原图上所经过的割边,从该割边集处将整个模型进行切割;4)利用Tarjan算法寻找割点集;
5)结合3)和4)设计总体算法实现减少时间复杂度的效果。
2.根据权利要求1所述的动态变化网络环境下深度学习模型的加速执行方法,其特征在于,步骤1)的具体实现过程包括:
a)对于任意节点vi∈V,利用edge_delay(v1,vi)表示在边缘端输入层v1到vi的连续时延,cloud_delay(vi,vn)表示在云端从vi到输出层vn的连续时延;其中cloud_delay(vi,vn)=cloud_delay(v1,vn)-cloud_delay(v1,vi);在进行最小割时,需要知道每一层的单独时延,使用如下方法得到每一层的时延:首先得到v1到所求层vi的连续时延,查找vi所有前驱节点连续时延的最大值,用当前层连续时延减去这个最大值,即可得到该层的单独时延和 表示第i层在边缘端的时延,表示第i层在云端的时延;
4.根据权利要求3所述的动态变化网络环境下深度学习模型的加速执行方法,其特征在于,由G构建G′的过程为:
添加节点:首先构建三个新的节点,分别记为e,c,o;其中e是网络流的源点,最终和e归为一类的节点代表部署在边缘端的节点;c是网络流的汇点,最终和c归为一类的节点代表部署在云端的节点;o是一个虚拟节点,代表外部输入到G中的数据,其本身不属于V,由于数据总是在边缘端产生的,故o永远和e划分在一个集合;
云端时延:基于G′,在e和所有的v∈V之间添加一条单向边,称之为”红边”,红边的权值为每个节点在云端的时延;在e和o中添加一条权值为inf的边,确保了最小割不会割到这条边上,从而保证e和o属于同一个集合;
边缘端时延:与b)类似,在v∈V和c之间添加一条单向边,称之为”蓝边”,蓝边的权值为每个节点在边缘端的时延;o不会和c划分到一个集合,所以c和o之间的边权值为0。
传输时延:其余的边都用来捕获传输时延;对于G中的每一对有数据传递关系的节点<u,v>,其边权就是传输时延,称之为”黑边”。但若u有多个后继节点,则每一条边权都会捕获一次传输时延,但在实际中u只需要向所有后继节点传输一次数据;为了保证传输时延只被计算一次,对于原图中出度大于1的节点u,都将其拆为两个节点u和u′,其中u向u′连第u层的传输时延,u′代替u向其所有后继节点连容量为inf的边;o与G的输入节点连接,这条边的权值赋值为外部输入带来的传输时延;
构建出图G′后,在G′上使用最小割算法,便可以将G′中的节点部署到两个集合中,对应在G中得到Ve,Vc和Ecut;Ve表示G中部署在边缘端的节点,Vc表示G部署在云端的节点,Ecut表示G中的最优割边集。
5.根据权利要求1所述的动态变化网络环境下深度学习模型的加速执行方法,其特征在于,步骤4)的过程如下:
使用dfs_clock记录的是每个节点第一次被访问的时间戳,pre[v]表示v第一次被访问到的时间,若pre[v]=0表示v还未被访问,设置子节点数目child为0;lowv表示v及其后代能通过反向边连回的最早的祖先的pre值;
设当前顶点为u,从u开始遍历,遍历u的邻接节点得到其子树数量,若child为1,则u为根节点,在u是根节点的情况下,若u只有一个孩子,那么u肯定不是割点,若u存在一个以上的孩子,那么u节点即为割顶;当u不为根节点时,通过遍历u的所有邻接点v,若v节点还未被访问过,递归访问v节点,求得lowv,若lowv≥pre[u]时,那么u就为割顶;若u为割顶,那么我们设置iscut[u]为true;
将所有iscut[u]为true的节点加入Vcut,即可得到G′的割顶集Vcut。
6.根据权利要求5所述的动态变化网络环境下深度学习模型的加速执行方法,其特征在于,步骤5)的过程如下:
求出G′的割顶集Vcut后,初始化最小时延delaymin为全部放在边缘执行和全部放在云端执行的较小者,顺序枚举Vcut中的相邻割顶vi和vj,将vi和vj的之间的子图Gsub构造为G′sub;
vi已经被分配在边缘端了,vj已经被分配在云端了,所以e向vi连的边和vj向c连的边的权值为inf,以避免这两个点被错误的划分到另一边;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288968.9A CN112990018A (zh) | 2021-03-18 | 2021-03-18 | 一种动态变化网络环境下深度学习模型的加速执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288968.9A CN112990018A (zh) | 2021-03-18 | 2021-03-18 | 一种动态变化网络环境下深度学习模型的加速执行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112990018A true CN112990018A (zh) | 2021-06-18 |
Family
ID=76332869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110288968.9A Pending CN112990018A (zh) | 2021-03-18 | 2021-03-18 | 一种动态变化网络环境下深度学习模型的加速执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112990018A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113592077A (zh) * | 2021-08-05 | 2021-11-02 | 哈尔滨工业大学 | 一种面向边缘智能的云边端dnn协同推理加速方法 |
CN114662690A (zh) * | 2022-05-20 | 2022-06-24 | 南京大学 | 面向深度学习Transformer类模型的移动设备协同推断系统 |
WO2023005389A1 (en) * | 2021-07-30 | 2023-02-02 | International Business Machines Corporation | Edge function-guided artifical intelligence request routing |
CN116306943A (zh) * | 2023-03-16 | 2023-06-23 | 中国科学院软件研究所 | 一种面向AIoT的多任务本地协同推理方法及系统 |
WO2024159986A1 (zh) * | 2023-02-01 | 2024-08-08 | 中兴通讯股份有限公司 | 一种无线局域网络动态阈值参数生成方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111741054A (zh) * | 2020-04-24 | 2020-10-02 | 浙江工业大学 | 一种移动用户深度神经网络计算卸载时延最小化方法 |
-
2021
- 2021-03-18 CN CN202110288968.9A patent/CN112990018A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111741054A (zh) * | 2020-04-24 | 2020-10-02 | 浙江工业大学 | 一种移动用户深度神经网络计算卸载时延最小化方法 |
Non-Patent Citations (1)
Title |
---|
SHIGENG ZHANG ET AL.: ""Towards Real-time Cooperative Deep Inference over the Cloud and Edge End Devices"", 《PROCEEDINGS OF THE ACM ON INTERACTIVE,MOBILE,WEARABLE AND UBIQUITOUS TECHNOLOGIES》, vol. 4, no. 2, pages 1 - 69 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023005389A1 (en) * | 2021-07-30 | 2023-02-02 | International Business Machines Corporation | Edge function-guided artifical intelligence request routing |
CN113592077A (zh) * | 2021-08-05 | 2021-11-02 | 哈尔滨工业大学 | 一种面向边缘智能的云边端dnn协同推理加速方法 |
CN113592077B (zh) * | 2021-08-05 | 2024-04-05 | 哈尔滨工业大学 | 一种面向边缘智能的云边端dnn协同推理加速方法 |
CN114662690A (zh) * | 2022-05-20 | 2022-06-24 | 南京大学 | 面向深度学习Transformer类模型的移动设备协同推断系统 |
CN114662690B (zh) * | 2022-05-20 | 2022-09-13 | 南京大学 | 面向深度学习Transformer类模型的移动设备协同推断系统 |
WO2024159986A1 (zh) * | 2023-02-01 | 2024-08-08 | 中兴通讯股份有限公司 | 一种无线局域网络动态阈值参数生成方法及装置 |
CN116306943A (zh) * | 2023-03-16 | 2023-06-23 | 中国科学院软件研究所 | 一种面向AIoT的多任务本地协同推理方法及系统 |
CN116306943B (zh) * | 2023-03-16 | 2023-10-17 | 中国科学院软件研究所 | 一种面向AIoT的多任务本地协同推理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112990018A (zh) | 一种动态变化网络环境下深度学习模型的加速执行方法 | |
CN111242282B (zh) | 基于端边云协同的深度学习模型训练加速方法 | |
CN112990211B (zh) | 一种神经网络的训练方法、图像处理方法以及装置 | |
CN112732450B (zh) | 端-边-云协同框架下的机器人知识图谱生成系统及方法 | |
Li et al. | DeepNFV: A lightweight framework for intelligent edge network functions virtualization | |
CN113011282A (zh) | 图数据处理方法、装置、电子设备及计算机存储介质 | |
WO2021012215A1 (zh) | 神经网络切分方法、预测方法及相关装置 | |
CN112712546A (zh) | 一种基于孪生神经网络的目标跟踪方法 | |
CN110807757A (zh) | 基于人工智能的图像质量评估方法、装置及计算机设备 | |
CN111652329B (zh) | 一种图像分类方法、装置、存储介质和电子设备 | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
WO2022156061A1 (zh) | 一种图像模型训练方法、装置及电子设备、存储介质 | |
CN116187391A (zh) | 神经网络模型的处理方法及装置 | |
CN111985597A (zh) | 模型压缩方法及装置 | |
Wang et al. | QSFM: Model pruning based on quantified similarity between feature maps for AI on edge | |
CN109657794A (zh) | 一种基于指令队列的分布式深度神经网络性能建模方法 | |
CN115062784A (zh) | 针对神经网络算子融合的端云协同推理方法及装置 | |
Wang et al. | Model pruning based on quantified similarity of feature maps | |
Zhang et al. | End-to-end latency optimization of multi-view 3D reconstruction for disaster response | |
EP4311202A1 (en) | End-edge-cloud coordination system and method based on digital retina, and device | |
Ju et al. | eDeepSave: Saving DNN inference using early exit during handovers in mobile edge environment | |
Zhang et al. | Af-dndf: Asynchronous federated learning of deep neural decision forests | |
KR20200038072A (ko) | 엔트로피 기반 신경망(Neural Networks) 부분학습 방법 및 시스템 | |
Liang et al. | The structure inference of flocking systems based on the trajectories | |
Peng et al. | RGB-D Salient Object Detection Based on Cross-Modal and Cross-Level Feature Fusion. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210618 |