CN112148451B - 一种低时延的协同自适应cnn推断系统及方法 - Google Patents
一种低时延的协同自适应cnn推断系统及方法 Download PDFInfo
- Publication number
- CN112148451B CN112148451B CN202011030053.XA CN202011030053A CN112148451B CN 112148451 B CN112148451 B CN 112148451B CN 202011030053 A CN202011030053 A CN 202011030053A CN 112148451 B CN112148451 B CN 112148451B
- Authority
- CN
- China
- Prior art keywords
- layer
- range
- output
- layers
- slave node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000001360 synchronised effect Effects 0.000 claims abstract description 8
- 238000004364 calculation method Methods 0.000 claims description 51
- 238000013527 convolutional neural network Methods 0.000 claims description 38
- 238000005520 cutting process Methods 0.000 claims description 28
- 239000002243 precursor Substances 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 13
- 230000003044 adaptive effect Effects 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 10
- 238000011084 recovery Methods 0.000 abstract description 4
- 238000012544 monitoring process Methods 0.000 abstract 1
- 239000010410 layer Substances 0.000 description 254
- 230000000875 corresponding effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种低时延的协同自适应CNN推断系统及方法,应用于边缘计算网络。所述系统包括一个主节点和多个从节点,主节点用于实时监控各从节点的运行状态,并周期性地更新从节点的推断任务,从节点用于推断任务的具体执行。本发明在系统中实现了CNN跨层数据范围演绎机制,使得主节点和从节点可以演绎出在CNN诸多层中任意两块数据之间的依赖关系,借此实现高效的自定义动态调度;同时设计了均衡同步调度器作为系统内置调度器,以动态感知的方式调整从节点负载并实现内存的高效回收。
Description
技术领域
本发明涉及边缘计算和深度学习领域,具体涉及一种低时延的协同自适应CNN推断系统及方法。
背景技术
过去十年见证了深度学习的兴起。作为其典型代表,卷积神经网络(Convolutional Neural Network,CNN)被广泛应用于计算机视觉和视频分析。使用专用的CNN,应用程序可以比以前更精确地从图像/视频中检测和分类对象。尽管有这些优点,但值得注意的是,CNN推断对计算资源的需求很大。以VGG-16为例,对一个大小为224*224的图像进行分类需要15.5G次的乘加运算。因此,传统的解决方案倾向于将图像或视频传输到计算能力强大的云中。然而,用户数据是在网络的边缘产生的。在广域网上进行长距离传输会导致延迟和抖动,对传统应用的性能产生不利影响。近年来,物联网的激增带来了网络边缘计算能力的增长,催生了边缘计算。用户数据可以在本地直接送入CNN,以避免远程传输。为了缓解边缘设备有限的能力和CNN巨大的资源需求之间的矛盾,人们探索了许多方法,如模型切割和数据切割。
模型切割通过寻找满足时延要求或能量要求的划分点,将CNN模型分解为多个设备之间的子模型,但这种方法是按顺序进行子模型推断的,因此没有充分利用边缘设备的并行性。数据切割在边缘设备之间分割数据,并利用每个边缘设备的计算资源并行地进行推断。此外,数据切割是在网络边缘本地进行的,边缘设备之间的通信将更加高效,从而延迟会更小,但现有数据切割技术不够灵活。有的系统将整个CNN的所有层作为一个不可分割的任务,这就导致单个任务耗时较长,整个系统受限于负载最高的设备,而且当CNN较为复杂时,多个任务之间存在较为严重的重叠。另外一些系统将CNN的每一个层作为一个不可分割的任务,从而使得每一个层的完成都需要所有设备的同步等待,带来了极高的同步开销。
根据当前署名发明人对当前数据切割方面已有研究的分析,发现他们仍然存在着以下这些问题:(1)对CNN结构的支持有限。CNN的结构越来越复杂,而现有的研究工作只关注简单的链状CNN,例如YOLOv2、VGG-16,但很多最新的CNN并非完全是链式结构。(2)计算任务存在冗余且同步开销较大。有的系统把计算从CNN开始到结束的部分输出视为不可分割的任务。这可能导致重复计算和冗余任务。有的系统将计算单层输出的一部分视为不可分割的任务,这导致从节点之间的同步开销很高。(3)内存管理缺失。边缘设备通常具有有限的内存,而CNN推断则需要大量内存。系统正常运行需要合适的内存管理,否则性能将受到严重影响。在分布式环境中,由于数据被其他设备重用,本地数据不能直接删除,这就需要及时的垃圾检测和内存回收。(4)固定的调度策略。考虑到异构的CNN和边缘环境,一个固定的调度策略很难在所有情况下都表现良好。换言之,最优调度策略在不同的环境中可能会有所不同。
因此,亟需一种针对边缘网络下CNN任务的更优的推断系统和/或推断方法。
发明内容
发明目的:针对现有技术的不足,本发明提出了一种针对边缘网络下CNN任务的分布式协同自适应CNN推断系统,至少解决调度策略固定以及同步开销大的问题,以加快CNN在网络边缘的推断速度。
本发明的另一目的是提供一种相应的CNN推断方法。
技术方案:根据本发明的第一方面,提供了一种低时延的协同自适应CNN推断系统,应用于边缘计算网络,所述系统包括一个主节点和多个从节点,所述主节点用于实时监控各从节点的运行状态,并周期性地更新从节点的推断任务,所述从节点用于推断任务的具体执行,其中,所述主节点包括:
运行信息存储模块,用于以有向无环图DAG结构存储CNN的输出,DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态;
状态更新模块,用于根据从节点任务完成情况对运行信息存储模块进行更新;
依赖关系计算模块,用于计算任意两个特征图像之间的依赖关系,即对于某个输出层的给定输出范围,给出特定输入层的所需输入范围,和/或对于某个输入层的给定输入范围,给出特定输出层的预期输出范围;
作业调度模块,用于根据DAG形状将CNN切割成多个块,每个块包括多个层,在每个块中,利用依赖关系计算模块计算层之间的依赖关系,根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点;
所述从节点包括:
数据存储模块,用于以DAG结构存储CNN的输出,DAG的每个顶点对应于CNN中某一层的输出数据;
任务执行模块,用于根据接收的作业,从数据存储模块中获取所需数据并执行作业中的所有任务,并将任务的输出保存在数据存储模块中;
调度请求模块,用于在当前作业完成时向作业调度模块请求新的作业。
作为优选的实施方式,所述主节点的作业调度模块还用于检查层的状态,将不会用到的层标记为垃圾层,并将垃圾层返回给从节点,所述从节点调度请求模块在任务完成时要求作业调度模块提供实时的垃圾层信息,并根据所标记的垃圾层删除相关数据以回收内存。
作为优选的实施方式,所述从节点还包括数据提供模块和数据请求模块,所述数据请求模块用于向其他从节点请求数据并将其保存在数据存储模块中;所述数据提供模块用于为其他从节点提供需要的数据;所述从节点的任务执行模块还用于在接收到作业时,利用依赖关系计算模块计算作业中任意两层之间的依赖关系,判断自身是否拥有该作业所需的所有数据,如果没有则通过所述数据请求模块从其他节点请求数据。
作为优选的实施方式,所述依赖关系计算模块包括:
第一计算单元,用于计算相邻特征图像之间的依赖关系,所述相邻特征图像指的是一个层的输入特征图像和输出特征图像,令层L的输入范围、核大小和步长分别为[x,y]、K和S,那么层L相应的输出范围为:
同样地,对于层L的输出范围[x,y],所需要的输入范围为:
第二计算单元,用于在任意两个特征图像之间,对于给定预期输出范围计算最小所需的输入范围,其中给定输出层O的输出范围记为[xout,yout],输入层I的最小所需输入范围记为[xin,yin],第二计算单元从层O开始,递归遍历所有在I和O之间的层,然后根据第一计算单元计算的结论来计算这些层的最小所需输出范围,最后给出层I的最小所需输入范围,并保存所有中间层的最小所需输出范围集合具体实现如下:
初始情况下,所有中间层的输出范围都被设置为空以表示尚未计算,在递归开始之前,首先检查当前层O是否已经计算过,如果已计算过,则会比较当前的范围[xout,yout]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[xout,yout]会被设置为两者的并集,然后继续递归以更新O前面所有层的输出范围;如果层I恰好就是层O,那么递归目标已经达到,直接使用第一计算单元的in_range公式计算即可,否则使用in_range公式计算出层O的最小输入范围,并以此作为层O所有前驱的预期输出范围,然后继续对层O的所有前驱进行递归;最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果;
第三计算单元,用于在任意两个特征图像之间,对于给定输入范围计算预期的输出范围,其中给定输入层I的输入范围记为[xin,yin],输出层O的预期输出范围记为[xout,yout],第三计算单元从层I开始,递归遍历所有在I和O之间的层,然后根据第一计算单元计算的结论来计算这些层的预期输出范围,最后给出层O的预期输出范围,并保存所有中间层的预期输出范围集合具体实现如下:
初始情况下,所有中间层的输入范围都被设置为空以表示尚未计算,在递归开始之前,首先使用第一计算单元的out_range公式计算出当前层I对于[xin,yin]的输出范围[x”,y”],然后检查当前层I是否已经计算过,如果已计算过,则会比较当前的范围[x”,y”]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[x”,y”]会被设置为两者的交集,然后继续递归以更新I后面所有层的输出范围;如果层O恰好就是层I,那么递归目标已经达到,直接输出[x”,y”]即可,否则将[x”,y”]作为层I所有后继层的预期输入范围,然后继续对层I的所有后继层进行递归;最后所有层I后继返回的输出范围的交集就是最终给出的结果。
作为优选的实施方式,所述作业调度模块包括:
第一切割单元,用于将CNN切割成多个块,当一个用户想要将CNN切割成n个块时,第一切割单元使用第三计算单元计算出对于特定输入范围,所有层的预期输出范围,基于预期输出范围选择P0,P1,...,Pn-1作为同步点,其中P0和Pn-1分别为CNN的第一个和最后一个层,中间的同步点以每块包含基本相同的层数为原则进行选取;
第二切割单元,用于当一个同步点Pc完成时,根据每个从节点w的计算能力sw,切割下一个同步点Pc+1的预期输出范围,以使得每个从节点的输出长度与其计算能力成正比;
作业构建单元,用于将从节点w在下一个同步点Pc+1的任务输入到第二计算单元中,第二计算单元给出Pc和Pc+1之间所有层的最小所需输出范围,形成从节点w的下一个作业;
分配单元,用于将形成的作业分配给相应的从节点。
根据本发明的第二方面,提供了一种低时延的协同自适应CNN推断方法,应用于边缘计算网络,所述方法包括以下步骤:
从网络中选取一个边缘设备作为主节点,用于推断任务的全局分配,其他边缘设备作为从节点,用于推断任务的具体执行,由单个主节点和多个从节点组成协作系统;
根据卷积神经网络CNN的结构,在主节点和从节点中分别建立有向无环图DAG用于存储CNN的输出,其中主节点中DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态,从节点中DAG的每个顶点对应于CNN中某一层的输出数据;
主节点根据DAG的形状将CNN切割成多个块,每个块包含多个层,在每个块中计算层之间的依赖关系,根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点;
从节点接收到分配的作业后,从自身存储的DAG中获取所需数据并执行作业中的所有任务,并将任务的输出保存在本地DAG中;
每当完成一个任务时,从节点的工作进程向主节点发出通知,主节点基于该通知在自身DAG中找到相关顶点并更新其状态;
当作业全部完成时,从节点向主节点请求新的作业。
作为优选的实施方式,所述方法还包括:主节点在更新状态后检查层的状态,将不会用到的层标记为垃圾层,并将垃圾层返回给从节点,从节点根据所标记的垃圾层删除相关数据以回收内存。
作为优选的实施方式,所述方法还包括:从节点在接收到作业时,通过计算作业中任意两层之间的依赖关系,判断自身是否拥有该作业所需的所有数据,如果没有则从其他从节点请求数据。
作为优选的实施方式,所述在每个块中计算层之间的依赖关系包括:
1)计算相邻特征图像之间的依赖关系,所述相邻特征图像指的是一个层的输入特征图像和输出特征图像,令层L的输入范围、核大小和步长分别为[x,y]、K和S,那么层L相应的输出范围为:
同样地,对于层L的输出范围[x,y],所需要的输入范围为:
2)在任意两个特征图像之间,对于给定预期输出范围计算最小所需的输入范围,称为AIR,其中给定输出层O的输出范围记为[xout,yout],输入层I的最小所需输入范围记为[xin,yin],从层O开始,AIR递归遍历所有在I和O之间的层,然后根据1)中的公式来计算这些层的最小所需输出范围,最后给出层I的最小所需输入范围,并保存所有中间层的最小所需输出范围集合具体实现如下:
初始情况下,所有中间层的输出范围都被设置为空以表示尚未计算,在递归开始之前,AIR首先检查当前层O是否已经计算过,如果已计算过,则会比较当前的范围[xout,yout]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[xout,yout]会被设置为两者的并集,然后继续递归以更新O前面所有层的输出范围;如果层I恰好就是层O,那么递归目标已经达到,直接使用1)中in_range公式计算即可,否则使用in_range公式计算出层O的最小输入范围,并以此作为层O所有前驱的预期输出范围,然后继续对层O的所有前驱进行递归;最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果;
3)在任意两个特征图像之间,对于给定输入范围计算预期的输出范围,称为AOR,其中给定输入层I的输入范围记为[xin,yin],输出层O的预期输出范围记为[xout,yout],AOR从层I开始,递归遍历所有在I和O之间的层,然后根据1)中的公式来计算这些层的预期输出范围,最后给出层O的预期输出范围,并保存所有中间层的预期输出范围集合具体实现如下:
初始情况下,所有中间层的输入范围都被设置为空以表示尚未计算,在递归开始之前,首先使用1)中out_range公式计算出当前层I对于[xin,yin]的输出范围[x”,y”],然后检查当前层I是否已经计算过,如果已计算过,则会比较当前的范围[x”,y”]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[x”,y”]会被设置为两者的交集,然后继续递归以更新I后面所有层的输出范围;如果层O恰好就是层I,那么递归目标已经达到,直接输出[x”,y”]即可,否则将[x”,y”]作为层I所有后继层的预期输入范围,然后继续对层I的所有后继层进行递归;最后所有层I后继层返回的输出范围的交集就是最终给出的结果。
作为优选的实施方式,所述根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点包括:
a)使用AOR计算出对于特定输入范围,所有层的预期输出范围,基于预期输出范围将CNN切割成n个块,选择P0,P1,...,Pn-1作为同步点,其中P0和Pn-1分别为CNN的第一个和最后一个层,中间的同步点以每块包含基本相同的层数为原则进行选取;
b)对于第一个作业,将P0的输出范围均匀地分配给每个从节点;
c)当一个同步点Pc完成时,根据每个从节点w的计算能力sw,切割下一个同步点Pc+1的预期输出范围,以使得每个从节点的输出长度与其计算能力成正比;
d)将从节点w在下一个同步点Pc+1的任务输入AIR,根据AIR给出的Pc和Pc+1之间所有层的最小所需输出范围,形成从节点w的下一个作业;
e)将形成的作业分配给相应的从节点。
有益效果:本发明考虑到了CNN的异构性、调度策略的灵活性和内存回收的实时性,使得用户可以借助本发明通过自定义的方式处理多种CNN结构,并且根据设备和环境的实际情况设计最合适的调度策略。因为本发明的细粒度调度机制,用户可以对CNN的每一层和相关数据进行灵活的调整。借助于这套机制,本发明提出一种高效的均衡同步调度方式,实验证明,相比于现有同类系统,该调度方式可以减少14.72倍的内存占用和5.79倍的推断时延。
附图说明
图1是本发明实施例提供的CNN推断系统整体架构图;
图2是本发明实施例提供的各层数据之间依赖关系的分析图;
图3是本发明实施例提供的对CNN的各类型层运行时间与输入数据量的分析图;
图4是本发明实施例提供的PSS调度器对CNN进行切割的示意图;
图5是本发明实施例与其他系统在内存占用量上的性能对比图;
图6是本发明实施例与其他系统在时延上的性能对比图。
具体实施方式
下面结合附图对本发明的技术方案作更进一步的说明。
根据本发明的一个实施例,一种针对边缘网络下CNN任务的分布式CNN推断系统,是由单个主节点和多个从节点组成的协作系统,其中主节点实时监控各从节点的运行状态,并周期性地更新从节点任务,起到全局任务协调的作用,系统中只有一个主节点;从节点负责推断任务的具体执行,通常有多个从节点。主节点和从节点都维护了CNN的结构性信息,并且使用跨层数据范围演绎机制来计算任意两块数据之间的依赖关系。
具体地,参照图1,右边为主节点的架构,包括:运行信息存储模块、状态更新模块、依赖关系计算模块、作业调度模块,其中,运行信息存储模块用于以有向无环图(DirectedAcyclic Graph,DAG)结构存储CNN的输出,下文中也称为运行信息存储器,运行信息存储器的结构与CNN相同,维护着CNN每个层的状态,其DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态。每个任务的状态都记录在运行信息存储器中。图1中顶点中的阴影切片表示已完成的任务,空白切片表示未完成的任务。层0、1、2、3、4都有3个属于不同从节点的任务,并且已经完成。运行信息存储器的信息通过状态更新模块来更新,状态更新模块启动一个运行监视器线程,监视从节点任务完成后上报的通知,根据上报的信息在运行信息存储器中找到相关顶点并更新其状态。
运行信息存储器中的信息用于支持调度决策。调度决策由作业调度模块来完成,在下文中也称为调度器。调度器是主节点的关键组件。当要给从节点分配新作业时,调度器首先选择该作业需要执行的几个层,然后对于每个层,调度器从其未完成的输出范围中选择一个切片作为任务。所选层的这些任务构成从节点的一个作业。例如,图1中从节点1的最新作业包含5个任务,并且相关层是层0、1、2、3、4。对于每个层,从节点1只计算整个输出范围的1/3。在推断开始时,调度器为每个从节点生成第一个作业。每当一个从节点完成一个任务时,这个工作进程都会通知主节点中的运行监视器和调度器。运行监视器将在运行信息存储器中找到相关顶点并更新其状态。调度器将检查层的状态,标记不会用到的层为垃圾,并将垃圾层返回给从节点。它们占用的内存稍后将由该从节点回收。当从节点完成当前作业时,此从节点会向调度器请求新的作业。
其中调度器首先选择该作业需要执行的几个层,然后对每个层选择某个切片作为任务,是基于均衡同步调度的思想来实现的。在本发明中,称为均衡同步调度器(Proportional Synchronized Scheduler,PSS),作为系统的内置调度器,以动态感知的方式调整从节点负载并实现内存的高效回收。关于PSS的实现下面会详细描述。某个层的预期输出范围通过依赖关系计算模块来确定,依赖关系指的是在CNN各层中任意两层(即两个特征图像)之间的依赖关系,即,对于某个输出层的给定输出范围,给出特定输入层的所需输入范围,和/或对于某个输入层的给定输入范围,给出特定输出层的预期输出范围。本发明在系统中实现了CNN跨层数据范围演绎(Layer Range Deduction,LRD)机制,使得主节点和从节点可以演绎出在CNN诸多层中任意两块数据之间的依赖关系。关于LRD的具体实现也将在下文给出说明。
继续参照图1,左侧为从节点的架构,包括:数据存储模块、任务执行模块、调度请求模块、依赖关系计算模块、数据提供模块和数据请求模块,其中,数据存储模块也是DAG结构存储CNN的输出,下文中也称为数据存储器,用于维护状态数据。与主节点中的运行信息存储器类似,数据存储器中的每个顶点对应于CNN中一个层的输出数据。不同的是,运行信息存储器只记录数据的输出范围,而数据存储器则保存具体的数据。任务执行模块用于执行作业中的所有任务,具体在计算线程中执行任务,并将任务的输出保存在数据存储器中。调度请求模块用于向主节点的作业调度模块请求新的作业,具体通过更新器线程与主节点通信。从节点分别使用数据提供模块和数据请求模块提供和获取远程数据,具体启动数据服务器线程和数据获取器线程来实现相应动作。
当一个从节点接收到一个作业时,它首先使用LRD来检查它是否拥有该作业所需的所有数据。如果没有,数据获取器线程将开始请求数据并将其保存在数据存储器中。相应地,数据服务器线程用于为其他从节点提供需要的数据。
当数据准备就绪时,计算线程将从数据存储器中获取数据并执行作业中的所有任务。这些任务的输出将保存在数据存储器中以备将来使用。由于它存储了大量的数据,数据存储器往往会占用大量的内存。为了避免这种情况,每次任务完成时,更新器线程都会通知运行监视器,并要求调度器提供实时的垃圾信息。根据调度器标记的垃圾层,更新器线程会删除相关数据以回收内存。当前作业完成后,更新器线程将请求调度器以获得新的作业。
主节点的依赖关系计算模块和从节点的依赖关系计算模块是相同的,都根据LRD机制来计算任意两块数据之间的依赖关系。主节点会考虑此依赖关系来决定将哪些层分配给哪个从节点执行,从节点则根据此依赖关系来确认自身是否包含所需的数据。下面对本发明的LRD机制做出详细说明。
1)相邻特征图像之间的依赖关系
相邻特征图像指的是一个层的输入特征图像和输出特征图像。对于某一个特定的层,它的输入和输出特征图像就是相邻的,这样的依赖关系较为简单。但是在DAG结构的CNN中,有两种位置的层需要注意,即分叉点和汇聚点。分叉点处的一个层会有多个后继层,其输出的特征图像会直接输入到后继层中,如图2(a)中的批规范化层;汇聚点处的一个层会有多个前驱层,其输入的特征图像直接来自于这些前驱层在“通道”维度上的拼接,如图2(a)中的通道拼接层。因此,这些层输入数据和输出数据的范围映射关系是双射,但是卷积层(Conv)和池化层(Pool)略微复杂一些。如图2(b)所示,它们使用了一个核在输入特征图像上以特定的步长滑动,并对于这个核所覆盖的范围计算出一个输出特征图像中的一个像素。
令输入范围、核大小和步长分别为[x,y]、K和S,那么层L相应的输出范围就是:
同样地,对于层L的输出范围[x,y],所需要的输入范围就是:
其中x、y表示图像长或宽维度上范围的起始像素和终止像素,o.w.为otherwise的缩写,即“否则”的意思。在实施例中,相邻特征图像之间的依赖关系的计算由第一计算单元来完成。
2)任意两个特征图像之间的依赖关系
对于CNN中任意两个特征图像,本发明第二计算单元使用AIR(Arbitrary InputRange)算法来计算输入或输出所需要的范围,如下所示。
对于给定的层O的输出范围[xout,yout],AIR会给出层I的最小所需输入范围[xin,yin]。从层O开始,它会递归地遍历所有在I和O之间的层,然后根据1)中的结论来计算这些层的最小所需输出范围,最后给出层I的最小所需输入范围。用于保存这些层的最小所需输出范围。
以L表示在I和O之间的任意一层,初始情况下,每个中间层L的输出范围被设置为/>以表示该层还没有计算。为了避免不必要的递归,AIR首先检查层O是否已经计算过,如果当前的程序是被一个已经计算过O输出范围的父程序调用的,那么这个条件就会为true,此时AIR会比较当前范围和保存在/>中的范围,如果[xout,yout]已经包含在/>中了,那么对于所有在O前面的层,它们由/>演绎出的范围必然也会包含由[xout,yout]演绎出来的范围。/>表示对于输出层O的最小输出范围。反之如果[xout,yout]不完全在/>中,那么O前面的所有层的输出范围都需要重新计算,因而[xout,yout]被更新为[xout,yout]和/>的并集。
之后,AIR会检查层I是否就是层O。如果是,结果就可以直接使用之前定义的in_range公式计算。否则,AIR会检查层O是否存在前驱层,即ancients(O)。如果层O没有前驱层,那么当前这个层就已经是整个CNN的起始点了,无法继续向前递归了,这就意味着I和O之间并不存在一条路径,也就是说,给定的两个特征图像之间不存在依赖关系。否则,如果层O有前驱,那么I所需的输入范围就会被递归计算。O所需的输入范围[x',y']会使用第一计算单元的in_range公式计算,而且此输入范围就是层O的前驱的输出范围。AIR会为每一个前驱层A调用一个子程序,每一个子程序都会返回I的最小输入范围[xA,yA]和相应的其中/>用于更新/>如前所述,/>会直接被忽略。因为所有前驱的范围要求都需要满足,所以最终结果为所有子程序结果的并集。
类似地,本发明第三计算单元使用AOR(Arbitrary Output Range)算法来对于某个输入层的给定输入范围,计算特定输出层的预期输出范围,如下所示。
/>
对于给定的层I的输入范围[xin,yin],AIR会给出层O的预期输出范围[xout,yout]。从层I开始,它会递归地遍历所有在I和O之间的层,然后根据1)中的结论来计算这些层的预期输出范围,最后给出层O的预期输出范围。用于保存这些层的预期输出范围。
初始情况下,每个中间层L的输出范围被设置为/>以表示该层还没有计算。为了避免不必要的递归,AOR首先使用第一计算单元的out_range公式计算出当前层I对于[xin,yin]的输出范围[x”,y”],然后检查层I是否已经计算过,如果当前的程序是被一个已经计算过I输出范围的父程序调用的,那么这个条件就会为true,此时AOR会比较当前范围和保存在/>中的范围,如果[x”,y”]已经包含在/>中了,那么对于所有在I后面的层,它们由/>演绎出的范围必然也会包含由[x”,y”]演绎出来的范围。反之如果[x”,y”]不完全在/>中,那么I后面的所有层的输出范围都需要重新计算,因而[x”,y”]被更新为[x”,y”]和/>的交集。
之后,AOR会检查层I是否就是层O。如果是,结果就直接为[x”,y”]。否则,AOR会检查层I是否存在后继层,即descendants(I)。如果层I没有后继层,那么当前这个层就已经是整个CNN的终止点了,无法继续向后递归了,这就意味着I和O之间并不存在一条路径,也就是说,给定的两个特征图像之间不存在依赖关系。否则,如果层I有后继,那么O预期的输出范围就会被递归计算。I的预期输出范围[x”,y”]就是层I的后继的输入范围。AOR会为每一个后继层D调用一个子程序,每一个子程序都会返回I的最小输入范围[xD,yD]和相应的其中/>用于更新/>如前所述,/>会直接被忽略。因为在汇聚点的层计算某一个范围需要所有前驱层都拥有这个范围的数据,所以最终结果为所有子程序结果的交集。/>
下面对本发明的PSS机制具体实现做出详细描述。
在协作的环境中,一个层的准确执行时间预测可以使得任务分配更为合理,以确保各设备以负载均衡的方式尽可能地并行计算,减少不必要的等待时间。已有的一些工作试图为CNN的各类层建立一个回归模型以直接预测一个层的执行时间,但是如果在一个在线的环境中,这个问题将会变得简单,因为一个层的计算量与数据量大致成正比。为了验证这一点,本发明对GoogLeNet中的4种类型的层进行了测试。通过改变输入数据的长度,以观察各个层的计算耗时,结果如图3所示。显然,测试结果印证了此观点。可以观察到数据在沿着CNN各层流动的过程中是线性递减的,所以对于连续的多个层来说,输入数据量仍然与执行耗时是成正比的。
在一个高性能方案中,一个任务既不能包含所有层,也不能仅仅包含一个层。前者有更少的同步开销但是有大量冗余计算,后者冗余计算最少但是有极高的同步开销。因此,本发明设计了PSS调度器来实现计算和同步之间的折衷。PSS的基本思想就是,根据用户指定的参数和DAG的割点,把DAG形状的CNN切割成多个块,每个块包括多个层,在每个块中,PSS使用数据切割的方式将这个块相关的任务再分配给从节点。在具体实施时,PSS通过第一切割单元将CNN切割成多个块,第二切割单元对下一同步点的预期输出范围进行切割,作业构建单元来形成作业,分配单元将作业分配至从节点。
图4展示了一个CNN被切割成4个块的状况。PSS选择了第一个顶点、最后一个顶点、顶点3和顶点7作为割点来将DAG切割成4个块。选择顶点3和7的原因是,PSS要确保每个块尽可能包含相同数量的层。因为在当前块完成之前,从节点不会开始计算下一个块,所以顶点1,3,7,15也被称为同步点(Synchronized Point,SP)。只有当层3完成时,PSS才会为从节点生成新的任务,而且每个从节点都会计算块2中层7的一块特定范围的数据。如果一个用户想要将CNN切割成n个块,PSS就会选择P0,P1,...,Pn-1作为同步点,其中P0和Pn-1分别为CNN的第一个和最后一个层。对于第一个作业,PSS会将P0的输出范围均匀地分配给每个从节点。之后每当一个同步点Pc完成时,PSS就会按照如下算法进行调度。
上述算法中,PSS记录了每一个从节点w刚完成作业的输入范围rw和耗时tw用于估计它们的计算能力,此外PSS预先使用AOR计算出了每个层L的预期输出长度ζL,最后算法返回每一个从节点w的新作业Jw,其中为从节点w需要在层L处计算的输出范围。PSS首先估计出每个从节点w的计算能力sw,然后切割下一个同步点Pc+1的预期输出范围以使得每个从节点的输出长度与其计算能力成正比。但是根据上述分析,为了确保每个从节点的作业完成时间尽可能相同,需要输入长度与计算能力成正比,而不是输出长度。因此,PSS会迭代地优化输出范围分配方案。新作业包含了从Pc(不含)到Pc+1(含)之间的所有层,所以当前作业的输入就是同步点Pc的输出范围。对于每一个从节点w,PSS使用AIR来计算当前输出范围所需要的输出范围/>(这也就是新作业的输入范围),然后根据新作业的输入范围长度/>与计算能力的比值来估计耗时τw。那么(max(τ)-min(τ))就是各从节点中最小耗时和最大耗时之间的差距。然后PSS微调输出范围的分配方案/>来缩短耗时最大者的输出范围,增加耗时最小者的输出范围,直到(max(τ)-min(τ))不再减小。最后PSS使用AIR来生成相应的作业。将/>输入到AIR中,AIR便会给出Pc和Pc+1之间所有层的最小所需输出范围,这便是从节点w的下一个作业。
除了计算量的动态调整,PSS对垃圾回收也进行了设计。因为对于一个特定的作业,一个从节点只需要请求其他从节点的前一个同步点中的数据,所以在一个作业的执行过程中,除了前一个同步点的输出数据,其他层的输出数据都可以直接删除。此外,PSS会识别出那些后继已经完成的层和输出数据已经被其他从节点获得的层,并通过系统中的垃圾回收机制将其删除。PSS会及时检测出这些垃圾数据并回收相关内存,从而使得每一个从节点的内存占用都保持在一个很低的水平。
本发明所提出的系统的目标是在资源受限的边缘设备上,通过灵活细粒度的调度来加速CNN的多设备协同推断,并支持实时的内存回收。本系统支持各类型的CNN和自定义的调度策略。本系统已经默认支持了一些典型的CNN结构,如AlexNet、VGG、GoogLeNet和ResNet等。调度策略被抽象为主节点中的调度器,用户可以根据实际的CNN和环境设计自己的调度器。
对本发明所提的CNN推断系统和现有技术中同类系统进行性能对比实验,实验结果如图5和图6所示。图5是内存占用量上的性能对比图,图中每个系统都有一条带状区域来表示其内存占用情况,中间的曲线为所有设备中内存占用量居中的设备的内存占用量,带子的上边界和下边界分别为内存占用最多和占用最少的设备的内存占用量,与另外两个已有系统DeepThings和MoDNN相比,本发明的内存占用始终处于很低的状态,可达DeepThings内存占用量的1/14.72。图6是时延对比图,可以看出,随着从节点数量的增加,本发明的时延仍然在下降,可达MoDNN的1/5.79。
根据本发明的另一实施例,提供一种应用于边缘计算网络的低时延的协同自适应CNN推断方法,包括以下步骤:
从网络中选取一个边缘设备作为主节点,用于推断任务的全局分配,其他边缘设备作为从节点,用于推断任务的具体执行,由单个主节点和多个从节点组成协作系统;
根据卷积神经网络CNN的结构,在主节点和从节点中分别建立有向无环图DAG用于存储CNN的输出,其中主节点中DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态,从节点中DAG的每个顶点对应于CNN中某一层的输出数据;
主节点根据DAG的形状将CNN切割成多个块,每个块包含多个层,在每个块中计算层之间的依赖关系,根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点;
从节点接收到分配的作业后,从自身存储的DAG中获取所需数据并执行作业中的所有任务,并将任务的输出保存在本地DAG中;
每当完成一个任务时,从节点的工作进程向主节点发出通知,主节点基于该通知在自身DAG中找到相关顶点并更新其状态;
当作业全部完成时,从节点向主节点请求新的作业。
作为优选的实施方式,所述方法还包括:主节点在更新状态后检查层的状态,将不会用到的层标记为垃圾层,并将垃圾层返回给从节点,从节点根据所标记的垃圾层删除相关数据以回收内存。
作为优选的实施方式,从节点在接收到作业时,通过计算作业中任意两层之间的依赖关系,判断自身是否拥有该作业所需的所有数据,如果没有则从其他从节点请求数据。
方法实施例中,主节点和从节点计算层之间的依赖关系时,使用的计算策略同上述系统实施例中描述的依赖关系计算模块使用的LRD策略,具体实现过程同前所述,此处不再赘述。主节点分配作业时的调度策略同上述系统实施例中作业调度模块使用的PSS机制,具体实现过程同前所述,此处也不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种低时延的协同自适应CNN推断系统,应用于边缘计算网络,其特征在于,所述系统包括一个主节点和多个从节点,所述主节点用于实时监控各从节点的运行状态,并周期性地更新从节点的推断任务,所述从节点用于推断任务的具体执行,其中,所述主节点包括:
运行信息存储模块,用于以有向无环图DAG结构存储CNN的输出,DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态;
状态更新模块,用于根据从节点任务完成情况对运行信息存储模块进行更新;
依赖关系计算模块,用于计算任意两个特征图像之间的依赖关系,即对于某个输出层的给定输出范围,给出特定输入层的所需输入范围,和/或对于某个输入层的给定输入范围,给出特定输出层的预期输出范围;
作业调度模块,用于根据DAG形状将CNN切割成多个块,每个块包括多个层,在每个块中,利用依赖关系计算模块计算层之间的依赖关系,根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点;
所述从节点包括:
数据存储模块,用于以DAG结构存储CNN的输出,DAG的每个顶点对应于CNN中某一层的输出数据;
任务执行模块,用于根据接收的作业,从数据存储模块中获取所需数据并执行作业中的所有任务,并将任务的输出保存在数据存储模块中;
调度请求模块,用于在当前作业完成时向作业调度模块请求新的作业。
2.根据权利要求1所述的一种低时延的协同自适应CNN推断系统,其特征在于,所述主节点的作业调度模块还用于检查层的状态,将不会用到的层标记为垃圾层,并将垃圾层返回给从节点,所述从节点调度请求模块在任务完成时要求作业调度模块提供实时的垃圾层信息,并根据所标记的垃圾层删除相关数据以回收内存。
3.根据权利要求1所述的一种低时延的协同自适应CNN推断系统,其特征在于,所述从节点还包括数据提供模块和数据请求模块,所述数据请求模块用于向其他从节点请求数据并将其保存在数据存储模块中;所述数据提供模块用于为其他从节点提供需要的数据;所述从节点的任务执行模块还用于在接收到作业时,利用依赖关系计算模块计算作业中任意两层之间的依赖关系,判断自身是否拥有该作业所需的所有数据,如果没有则通过所述数据请求模块从其他节点请求数据。
4.根据权利要求1所述的一种低时延的协同自适应CNN推断系统,其特征在于,所述依赖关系计算模块包括:
第一计算单元,用于计算相邻特征图像之间的依赖关系,所述相邻特征图像指的是一个层的输入特征图像和输出特征图像,令层L的输入范围、核大小和步长分别为[x,y]、K和S,那么层L相应的输出范围为:
同样地,对于层L的输出范围[x,y],所需要的输入范围为:
第二计算单元,用于在任意两个特征图像之间,对于给定预期输出范围计算最小所需的输入范围,其中给定输出层O的输出范围记为[xout,yout],输入层I的最小所需输入范围记为[xin,yin],第二计算单元从层O开始,递归遍历所有在I和O之间的层,然后根据第一计算单元计算的结论来计算这些层的最小所需输出范围,最后给出层I的最小所需输入范围,并保存所有中间层的最小所需输出范围集合具体实现如下:
初始情况下,所有中间层的输出范围都被设置为空以表示尚未计算,在递归开始之前,首先检查当前层O是否已经计算过,如果已计算过,则会比较当前的范围[xout,yout]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[xout,yout]会被设置为两者的并集,然后继续递归以更新O前面所有层的输出范围;如果层I恰好就是层O,那么递归目标已经达到,直接使用第一计算单元的in_range公式计算即可,否则使用in_range公式计算出层O的最小输入范围,并以此作为层O所有前驱的预期输出范围,然后继续对层O的所有前驱进行递归;最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果;
第三计算单元,用于在任意两个特征图像之间,对于给定输入范围计算预期的输出范围,其中给定输入层I的输入范围记为[xin,yin],输出层O的预期输出范围记为[xout,yout],第三计算单元从层I开始,递归遍历所有在I和O之间的层,然后根据第一计算单元计算的结论来计算这些层的预期输出范围,最后给出层O的预期输出范围,并保存所有中间层的预期输出范围集合具体实现如下:
初始情况下,所有中间层的输入范围都被设置为空以表示尚未计算,在递归开始之前,首先使用第一计算单元的out_range公式计算出当前层I对于[xin,yin]的输出范围[x”,y”],然后检查当前层I是否已经计算过,如果已计算过,则会比较当前的范围[x”,y”]和若前者完全被后者所覆盖,那么就不必继续递归了,否则,[x”,y”]会被设置为两者的交集,然后继续递归以更新I后面所有层的输出范围;如果层O恰好就是层I,那么递归目标已经达到,直接输出[x”,y”]即可,否则将[x”,y”]作为层I所有后继层的预期输入范围,然后继续对层I的所有后继层进行递归;最后所有层I后继返回的输出范围的交集就是最终给出的结果。
5.根据权利要求4所述的一种低时延的协同自适应CNN推断系统,其特征在于,所述作业调度模块包括:
第一切割单元,用于将CNN切割成多个块,当一个用户想要将CNN切割成n个块时,第一切割单元使用第三计算单元计算出对于特定输入范围,所有层的预期输出范围,基于预期输出范围选择P0,P1,...,Pn-1作为同步点,其中P0和Pn-1分别为CNN的第一个和最后一个层,中间的同步点以每块包含基本相同的层数为原则进行选取;
第二切割单元,用于当一个同步点Pc完成时,根据每个从节点w的计算能力sw,切割下一个同步点Pc+1的预期输出范围,以使得每个从节点的输出长度与其计算能力成正比;
作业构建单元,用于将从节点w在下一个同步点Pc+1的任务输入到第二计算单元中,根据第二计算单元给出的Pc和Pc+1之间所有层的最小所需输出范围,形成从节点w的下一个作业;
分配单元,用于将形成的作业分配给相应的从节点。
6.一种低时延的协同自适应CNN推断方法,应用于边缘计算网络,其特征在于,所述方法包括以下步骤:
从网络中选取一个边缘设备作为主节点,用于推断任务的全局分配,其他边缘设备作为从节点,用于推断任务的具体执行,由单个主节点和多个从节点组成协作系统;
根据卷积神经网络CNN的结构,在主节点和从节点中分别建立有向无环图DAG用于存储CNN的输出,其中主节点中DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务的状态,从节点中DAG的每个顶点对应于CNN中某一层的输出数据;
主节点根据DAG的形状将CNN切割成多个块,每个块包含多个层,在每个块中计算层之间的依赖关系,根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点;
从节点接收到分配的作业后,从自身存储的DAG中获取所需数据并执行作业中的所有任务,并将任务的输出保存在本地DAG中;
每当完成一个任务时,从节点的工作进程向主节点发出通知,主节点基于该通知在自身DAG中找到相关顶点并更新其状态;
当作业全部完成时,从节点向主节点请求新的作业。
7.根据权利要求6所述的一种低时延的协同自适应CNN推断方法,其特征在于,所述方法还包括:主节点在更新状态后检查层的状态,将不会用到的层标记为垃圾层,并将垃圾层返回给从节点,从节点根据所标记的垃圾层删除相关数据以回收内存。
8.根据权利要求6所述的一种低时延的协同自适应CNN推断方法,其特征在于,所述方法还包括:从节点在接收到作业时,通过计算作业中任意两层之间的依赖关系,判断自身是否拥有该作业所需的所有数据,如果没有则从其他从节点请求数据。
9.根据权利要求6所述的一种低时延的协同自适应CNN推断方法,其特征在于,所述在每个块中计算层之间的依赖关系包括:
1)计算相邻特征图像之间的依赖关系,所述相邻特征图像指的是一个层的输入特征图像和输出特征图像,令层L的输入范围、核大小和步长分别为[x,y]、K和S,那么层L相应的输出范围为:
同样地,对于层L的输出范围[x,y],所需要的输入范围为:
2)在任意两个特征图像之间,对于给定预期输出范围计算最小所需的输入范围,该计算过程称为AIR,其中给定输出层O的输出范围记为[xout,yout],输入层I的最小所需输入范围记为[xin,yin],从层O开始,AIR递归遍历所有在I和O之间的层,根据1)中的公式计算这些层的最小所需输出范围,最后给出层I的最小所需输入范围,并保存所有中间层的最小所需输出范围集合具体实现如下:
初始情况下,所有中间层的输出范围都被设置为空以表示尚未计算,在递归开始之前,AIR首先检查当前层O是否已经计算过,如果已计算过,则会比较当前的范围[xout,yout]和若前者完全被后者所覆盖,那么就不必继续递归,否则,[xout,yout]会被设置为两者的并集,然后继续递归以更新O前面所有层的输出范围;如果层I恰好就是层O,那么递归目标已经达到,直接使用1)中in_range公式计算即可,否则使用in_range公式计算出层O的最小输入范围,并以此作为层O所有前驱的预期输出范围,然后继续对层O的所有前驱进行递归;最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果;
3)在任意两个特征图像之间,对于给定输入范围计算预期的输出范围,该计算过程称为AOR,其中给定输入层I的输入范围记为[xin,yin],输出层O的预期输出范围记为[xout,yout],AOR从层I开始,递归遍历所有在I和O之间的层,根据1)中的公式来计算这些层的预期输出范围,最后给出层O的预期输出范围,并保存所有中间层的预期输出范围集合具体实现如下:
初始情况下,所有中间层的输入范围都被设置为空以表示尚未计算,在递归开始之前,首先使用1)中out_range公式计算出当前层I对于[xin,yin]的输出范围[x”,y”],然后检查当前层I是否已经计算过,如果已计算过,则会比较当前的范围[x”,y”]和若前者完全被后者所覆盖,那么就不必继续递归,否则,[x”,y”]会被设置为两者的交集,然后继续递归以更新I后面所有层的输出范围;如果层O恰好就是层I,那么递归目标已经达到,直接输出[x”,y”]即可,否则将[x”,y”]作为层I所有后继层的预期输入范围,然后继续对层I的所有后继层进行递归;最后所有层I后继返回的输出范围的交集就是最终给出的结果。
10.根据权利要求9所述的一种低时延的协同自适应CNN推断方法,其特征在于,所述根据从节点的计算能力将特定输出层的预期输出范围进行切割,切割后的对应层输出范围形成作业分配给从节点包括:
a)使用AOR计算出对于特定输入范围,所有层的预期输出范围,基于预期输出范围将CNN切割成n个块,选择P0,P1,...,Pn-1作为同步点,其中P0和Pn-1分别为CNN的第一个和最后一个层,中间的同步点以每块包含基本相同的层数为原则进行选取;
b)对于第一个作业,将P0的输出范围均匀地分配给每个从节点;
c)当一个同步点Pc完成时,根据每个从节点w的计算能力sw,切割下一个同步点Pc+1的预期输出范围,以使得每个从节点的输出长度与其计算能力成正比;
d)将从节点w在下一个同步点Pc+1的任务输入AIR,根据AIR给出的Pc和Pc+1之间所有层的最小所需输出范围,形成从节点w的下一个作业;
e)将形成的作业分配给相应的从节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011030053.XA CN112148451B (zh) | 2020-09-27 | 2020-09-27 | 一种低时延的协同自适应cnn推断系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011030053.XA CN112148451B (zh) | 2020-09-27 | 2020-09-27 | 一种低时延的协同自适应cnn推断系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148451A CN112148451A (zh) | 2020-12-29 |
CN112148451B true CN112148451B (zh) | 2023-12-29 |
Family
ID=73894140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011030053.XA Active CN112148451B (zh) | 2020-09-27 | 2020-09-27 | 一种低时延的协同自适应cnn推断系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148451B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862083B (zh) * | 2021-04-06 | 2024-04-09 | 南京大学 | 一种边缘环境下的深度神经网络推断方法及装置 |
CN117707797B (zh) * | 2024-02-06 | 2024-05-03 | 湘江实验室 | 基于分布式云平台的任务调度方法、装置及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291260A (zh) * | 2011-08-15 | 2011-12-21 | 南京财经大学 | 一种基于as间合作的粮库监控网络系统处理方法 |
CN108809723A (zh) * | 2018-06-14 | 2018-11-13 | 重庆邮电大学 | 一种边缘服务器联合任务卸载及卷积神经网络层调度方法 |
CN108924198A (zh) * | 2018-06-21 | 2018-11-30 | 中国联合网络通信集团有限公司 | 一种基于边缘计算的数据调度方法、装置及系统 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及系统 |
CN111274016A (zh) * | 2020-01-20 | 2020-06-12 | 中国人民解放军国防科技大学 | 基于模块融合的动态部分可重构系统应用划分与调度方法 |
CN111611087A (zh) * | 2020-06-30 | 2020-09-01 | 中国人民解放军国防科技大学 | 一种资源调度方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10261837B2 (en) * | 2017-06-30 | 2019-04-16 | Sas Institute Inc. | Two-part job scheduling with capacity constraints and preferences |
US10797863B2 (en) * | 2017-12-28 | 2020-10-06 | Intel Corporation | Multi-domain cascade convolutional neural network |
-
2020
- 2020-09-27 CN CN202011030053.XA patent/CN112148451B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291260A (zh) * | 2011-08-15 | 2011-12-21 | 南京财经大学 | 一种基于as间合作的粮库监控网络系统处理方法 |
CN108809723A (zh) * | 2018-06-14 | 2018-11-13 | 重庆邮电大学 | 一种边缘服务器联合任务卸载及卷积神经网络层调度方法 |
CN108924198A (zh) * | 2018-06-21 | 2018-11-30 | 中国联合网络通信集团有限公司 | 一种基于边缘计算的数据调度方法、装置及系统 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及系统 |
CN111274016A (zh) * | 2020-01-20 | 2020-06-12 | 中国人民解放军国防科技大学 | 基于模块融合的动态部分可重构系统应用划分与调度方法 |
CN111611087A (zh) * | 2020-06-30 | 2020-09-01 | 中国人民解放军国防科技大学 | 一种资源调度方法、装置和系统 |
Non-Patent Citations (3)
Title |
---|
"Edge-Host Partitioning of Deep Neural Networks with Feature Space Encoding for Resource-Constrained Internet-of-Things Platforms";Jong Hwan Ko等;《2018 15th IEEE International Conference on Advanced Video and Signal Based Surveillance (AVSS)》;全文 * |
"Multi-scale recognition with DAG-CNNs";Songfan Yang等;《2015 IEEE International Conference on Computer Vision (ICCV)》;全文 * |
"基于冗余任务消减的边缘应用性能优化";宋煜等;《计算机工程》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112148451A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018196631A1 (en) | Training machine learning models on a large-scale distributed system using a job server | |
CN108958916B (zh) | 一种移动边缘环境下工作流卸载优化方法 | |
CN106528280B (zh) | 一种任务分配方法和系统 | |
CN115248728B (zh) | 面向智能计算的分布式训练任务调度方法、系统和装置 | |
CN104636204B (zh) | 一种任务调度方法与装置 | |
CN112148451B (zh) | 一种低时延的协同自适应cnn推断系统及方法 | |
WO2019042200A1 (zh) | 执行机器学习的分布式系统及其方法 | |
CN107832129B (zh) | 一种面向分布式流计算系统的动态任务调度优化方法 | |
JP2010033561A (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
CN114610474B (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
Kamthe et al. | A stochastic approach to estimating earliest start times of nodes for scheduling DAGs on heterogeneous distributed computing systems | |
CN112015765B (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
CN105740085A (zh) | 容错处理方法及装置 | |
CN116684420A (zh) | 集群资源调度方法、装置、集群系统和可读存储介质 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN116860419B (zh) | 一种服务器无感知数据分析的并行调度方法及系统 | |
CN116302576B (zh) | 一种弹性伸缩的流应用算子并行化方法及系统 | |
EP4300305A1 (en) | Methods and systems for energy-efficient scheduling of periodic tasks on a group of processing devices | |
CN111597035A (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
CN116996941A (zh) | 基于配网云边端协同的算力卸载方法、装置及系统 | |
CN110780947A (zh) | 用于社交图数据的PageRank并行计算加速方法 | |
Shahriar et al. | A multiprocessor based heuristic for multi-dimensional multiple-choice knapsack problem | |
CN110427217B (zh) | 基于内容的发布订阅系统匹配算法轻量级并行方法和系统 | |
CN115883550A (zh) | 任务处理方法、装置、电子设备、存储介质及程序产品 | |
Yuan et al. | Efficient scheduling of DAG tasks on multi-core processor based parallel systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |