低时延的协同自适应CNN推断系统及方法.pdf

收藏 版权申诉 举报 下载
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
文档描述:

《低时延的协同自适应CNN推断系统及方法.pdf》由会员分享,可在线阅读,更多相关《低时延的协同自适应CNN推断系统及方法.pdf(22页完成版)》请在龙8官网app查询网上搜索。

1,(19)中华人民共和国国家知识产权局 (12)发明龙8官网app申请 (10)申请公布号 (43)申请公布日 (21)申请号 202011030053.X (22)申请日 2020.09.27 (71)申请人 南京大学 地址 210093 江苏省南京市鼓楼区汉口路 22号 (72)发明人 张帅张胜钱柱中陆桑璐 (74)龙8官网app代理机构 南京苏高龙8官网app商标事务所 (普通合伙) 32204 代理人 李淑静 (51)Int.Cl. G06F 9/48(2006.01) G06F 9/50(2006.01) G06N 3/04(2006.01) H04L 29/08(2006.01) (54)发明名称 一种低时延的协。

2,同自适应CNN推断系统及方 法 (57)摘要 本发明公开了一种低时延的协同自适应CNN 推断系统及方法, 应用于边缘计算网络。 所述系 统包括一个主节点和多个从节点, 主节点用于实 时监控各从节点的运行状态, 并周期性地更新从 节点的推断任务, 从节点用于推断任务的具体执 行。 本发明在系统中实现了CNN跨层数据范围演 绎机制, 使得主节点和从节点可以演绎出在CNN 诸多层中任意两块数据之间的依赖关系, 借此实 现高效的自定义动态调度; 同时设计了均衡同步 调度器作为系统内置调度器, 以动态感知的方式 调整从节点负载并实现内存的高效回收。 权利要求书4页 说明书15页 附图2页 CN 1121。

3,48451 A 2020.12.29 CN 112148451 A 1.一种低时延的协同自适应CNN推断系统, 应用于边缘计算网络, 其特征在于, 所述系 统包括一个主节点和多个从节点, 所述主节点用于实时监控各从节点的运行状态, 并周期 性地更新从节点的推断任务, 所述从节点用于推断任务的具体执行, 其中, 所述主节点包 括: 运行信息存储模块, 用于以有向无环图DAG结构存储CNN的输出, DAG的每个顶点对应于 CNN中某一层的输出范围并包含多个任务的状态; 状态更新模块, 用于根据从节点任务完成情况对运行信息存储模块进行更新; 依赖关系计算模块, 用于计算任意两个特征图像之间的依赖关系。

4,, 即对于某个输出层 的给定输出范围, 给出特定输入层的所需输入范围, 和/或对于某个输入层的给定输入范 围, 给出特定输出层的预期输出范围; 作业调度模块, 用于根据DAG形状将CNN切割成多个块, 每个块包括多个层, 在每个块 中, 利用依赖关系计算模块计算层之间的依赖关系, 根据从节点的计算能力将特定输出层 的预期输出范围进行切割, 切割后的对应层输出范围形成作业分配给从节点; 所述从节点包括: 数据存储模块, 用于以DAG结构存储CNN的输出, DAG的每个顶点对应于CNN中某一层的 输出数据; 任务执行模块, 用于根据接收的作业, 从数据存储模块中获取所需数据并执行作业中 的所有任务。

5,, 并将任务的输出保存在数据存储模块中; 调度请求模块, 用于在当前作业完成时向作业调度模块请求新的作业。 2.根据权利要求1所述的一种低时延的协同自适应CNN推断系统, 其特征在于, 所述主 节点的作业调度模块还用于检查层的状态, 将不会用到的层标记为垃圾层, 并将垃圾层返 回给从节点, 所述从节点调度请求模块在任务完成时要求作业调度模块提供实时的垃圾层 信息, 并根据所标记的垃圾层删除相关数据以回收内存。 3.根据权利要求1所述的一种低时延的协同自适应CNN推断系统, 其特征在于, 所述从 节点还包括数据提供模块和数据请求模块, 所述数据请求模块用于向其他从节点请求数据 并将其保存在数据存。

6,储模块中; 所述数据提供模块用于为其他从节点提供需要的数据; 所 述从节点的任务执行模块还用于在接收到作业时, 利用依赖关系计算模块计算作业中任意 两层之间的依赖关系, 判断自身是否拥有该作业所需的所有数据, 如果没有则通过所述数 据请求模块从其他节点请求数据。 4.根据权利要求1所述的一种低时延的协同自适应CNN推断系统, 其特征在于, 所述依 赖关系计算模块包括: 第一计算单元, 用于计算相邻特征图像之间的依赖关系, 所述相邻特征图像指的是一 个层的输入特征图像和输出特征图像, 令层L的输入范围, 核大小和步长分别为x,y, K和 S, 那么层L相应的输出范围为: 同样地, 对于层L的输出。

7,范围x,y, 所需要的输入范围为: 权利要求书 1/4 页 2 CN 112148451 A 2 第二计算单元, 用于在任意两个特征图像之间, 对于给定预期输出范围计算最小所需 的输入范围, 其中给定输出层O的输出范围记为xout,yout, 输入层I的最小所需输入范围记 为xin,yin, 第二计算单元从层O开始, 递归遍历所有在I和O之间的层, 然后根据第一计算 单元计算的结论来计算这些层的最小所需输出范围, 最后给出层I的最小所需输入范围, 并 保存所有中间层的最小所需输出范围集合具体实现如下: 初始情况下, 所有中间层的输出范围都被设置为空以表示尚未计算, 在递归开始之前, 首先检查当。

8,前层O是否已经计算过, 如果已计算过, 则会比较当前的范围xout,yout和 若前者完全被后者所覆盖, 那么就不必继续递归了, 否则, xout,yout会被设置为两者的并 集, 然后继续递归以更新O前面所有层的输出范围; 如果层I恰好就是层O, 那么递归目标已 经达到, 直接使用第一计算单元的in_range公式计算即可, 否则使用in_range公式计算出 层O的最小输入范围, 并以此作为层O所有前驱的预期输出范围, 然后继续对层O的所有前驱 进行递归; 最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果; 第三计算单元, 用于在任意两个特征图像之间, 对于给定输入范围计算预期的。

9,输出范 围, 其中给定输入层I的输入范围记为xin,yin, 输出层O的预期输出范围记为xout,yout, 第三计算单元从层I开始, 递归遍历所有在I和O之间的层, 然后根据第一计算单元计算的结 论来计算这些层的预期输出范围, 最后给出层O的预期输出范围, 并保存所有中间层的预期 输出范围集合具体实现如下: 初始情况下, 所有中间层的输入范围都被设置为空以表示尚未计算, 在递归开始之前, 首先使用第一计算单元的out_range公式计算出当前层I对于xin,yin的输出范围x” , y” , 然后检查当前层I是否已经计算过, 如果已计算过, 则会比较当前的范围x” ,y” 和 若前者完全被后。

10,者所覆盖, 那么就不必继续递归了, 否则, x” ,y” 会被设置为两者的交集, 然后继续递归以更新I后面所有层的输出范围; 如果层O恰好就是层I, 那么递归目标已经达 到, 直接输出x” ,y” 即可, 否则将x” ,y” 作为层I所有后继层的预期输入范围, 然后继续 对层I的所有后继层进行递归; 最后所有层I后继返回的输出范围的交集就是最终给出的结 果。 5.根据权利要求4所述的一种低时延的协同自适应CNN推断系统, 其特征在于, 所述作 业调度模块包括: 第一切割单元, 用于将CNN切割成多个块, 当一个用户想要将CNN切割成n个块时, 第一 切割单元使用第三计算单元计算出对于特定输入范。

11,围, 所有层的预期输出范围, 基于预期 输出范围选择P0,P1,.,Pn-1作为同步点, 其中P0和Pn-1分别为CNN的第一个和最后一个层, 中间的同步点以每块包含基本相同的层数为原则进行选取; 第二切割单元, 用于当一个同步点Pc完成时, 根据每个从节点w的计算能力sw, 切割下一 个同步点Pc+1的预期输出范围, 以使得每个从节点的输出长度与其计算能力成正比; 作业构建单元, 用于将从节点w在下一个同步点Pc+1的任务输入到第二计算单元中, 根据第二计算单元给出的Pc和Pc+1之间所有层的最小所需输出范围, 形成从节点w的下一个 作业; 权利要求书 2/4 页 3 CN 11214845。

12,1 A 3 分配单元, 用于将形成的作业分配给相应的从节点。 6.一种低时延的协同自适应CNN推断方法, 应用于边缘计算网络, 其特征在于, 所述方 法包括以下步骤: 从网络中选取一个边缘设备作为主节点, 用于推断任务的全局分配, 其他边缘设备作 为从节点, 用于推断任务的具体执行, 由单个主节点和多个从节点组成协作系统; 根据卷积神经网络CNN的结构, 在主节点和从节点中分别建立有向无环图DAG用于存储 CNN的输出, 其中主节点中DAG的每个顶点对应于CNN中某一层的输出范围并包含多个任务 的状态, 从节点中DAG的每个顶点对应于CNN中某一层的输出数据; 主节点根据DAG的形状将CNN切。

13,割成多个块, 每个块包含多个层, 在每个块中计算层之 间的依赖关系, 根据从节点的计算能力将特定输出层的预期输出范围进行切割, 切割后的 对应层输出范围形成作业分配给从节点; 从节点接收到分配的作业后, 从自身存储的DAG中获取所需数据并执行作业中的所有 任务, 并将任务的输出保存在本地DAG中; 每当完成一个任务时, 从节点的工作进程向主节点发出通知, 主节点基于该通知在自 身DAG中找到相关顶点并更新其状态; 当作业全部完成时, 从节点向主节点请求新的作业。 7.根据权利要求6所述的一种低时延的协同自适应CNN推断方法, 其特征在于, 所述方 法还包括: 主节点在更新状态后检查层的状态, 。

14,将不会用到的层标记为垃圾层, 并将垃圾层 返回给从节点, 从节点根据所标记的垃圾层删除相关数据以回收内存。 8.根据权利要求6所述的一种低时延的协同自适应CNN推断方法, 其特征在于, 所述方 法还包括: 从节点在接收到作业时, 通过计算作业中任意两层之间的依赖关系, 判断自身是 否拥有该作业所需的所有数据, 如果没有则从其他从节点请求数据。 9.根据权利要求6所述的一种低时延的协同自适应CNN推断方法, 其特征在于, 所述在 每个块中计算层之间的依赖关系包括: 1)计算相邻特征图像之间的依赖关系, 所述相邻特征图像指的是一个层的输入特征图 像和输出特征图像, 令层L的输入范围, 核大小和步长。

15,分别为x,y, K和S, 那么层L相应的输 出范围为: 同样地, 对于层L的输出范围x,y, 所需要的输入范围为: 2)在任意两个特征图像之间, 对于给定预期输出范围计算最小所需的输入范围, 该计 算过程称为AIR, 其中给定输出层O的输出范围记为xout,yout, 输入层I的最小所需输入范 围记为xin,yin, 从层O开始, AIR递归遍历所有在I和O之间的层, 根据1)中的公式计算这些 层的最小所需输出范围, 最后给出层I的最小所需输入范围, 并保存所有中间层的最小所需 输出范围集合具体实现如下: 权利要求书 3/4 页 4 CN 112148451 A 4 初始情况下, 所有中间层的。

16,输出范围都被设置为空以表示尚未计算, 在递归开始之前, AIR首先检查当前层O是否已经计算过, 如果已计算过, 则会比较当前的范围xout,yout和 若前者完全被后者所覆盖, 那么就不必继续递归, 否则, xout,yout会被设置为两者的并 集, 然后继续递归以更新O前面所有层的输出范围; 如果层I恰好就是层O, 那么递归目标已 经达到, 直接使用1)中in_range公式计算即可, 否则使用in_range公式计算出层O的最小输 入范围, 并以此作为层O所有前驱的预期输出范围, 然后继续对层O的所有前驱进行递归; 最 后所有层O前驱返回的最小输入范围的并集就是最终给出的结果; 3)在任意。

17,两个特征图像之间, 对于给定输入范围计算预期的输出范围, 该计算过程称 为AOR, 其中给定输入层I的输入范围记为xin,yin, 输出层O的预期输出范围记为xout, yout, AOR从层I开始, 递归遍历所有在I和O之间的层, 根据1)中的公式来计算这些层的预期 输出范围, 最后给出层O的预期输出范围, 并保存所有中间层的预期输出范围集合具体 实现如下: 初始情况下, 所有中间层的输入范围都被设置为空以表示尚未计算, 在递归开始之前, 首先使用1)中out_range公式计算出当前层I对于xin,yin的输出范围x” ,y” , 然后检查 当前层I是否已经计算过, 如果已计算过, 则会比。

18,较当前的范围x” ,y” 和若前者完全被 后者所覆盖, 那么就不必继续递归, 否则, x” ,y” 会被设置为两者的交集, 然后继续递归以 更新I后面所有层的输出范围; 如果层O恰好就是层I, 那么递归目标已经达到, 直接输出 x” ,y” 即可, 否则将x” ,y” 作为层I所有后继层的预期输入范围, 然后继续对层I的所有 后继层进行递归; 最后所有层I后继返回的输出范围的交集就是最终给出的结果。 10.根据权利要求9所述的一种低时延的协同自适应CNN推断方法, 其特征在于, 所述根 据从节点的计算能力将特定输出层的预期输出范围进行切割, 切割后的对应层输出范围形 成作业分配给从节点包括: 。

19,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之间所有 层的最小所需输出范围, 形。

20,成从节点w的下一个作业; e)将形成的作业分配给相应的从节点。 权利要求书 4/4 页 5 CN 112148451 A 5 一种低时延的协同自适应CNN推断系统及方法 技术领域 0001 本发明涉及边缘计算和深度学习领域, 具体涉及一种低时延的协同自适应CNN推 断系统及方法。 背景技术 0002 过 去 十 年 见 证 了 深 度 学 习 的 兴 起 。 作 为 其 典 型 代 表 , 卷 积 神 经 网 络 (Convolutional Neural Network, CNN)被广泛应用于计算机视觉和视频分析。 使用专用的 CNN, 应用程序可以比以前更精确地从图像/视频中检测和分类对象。

21,。 尽管有这些优点, 但值 得注意的是, CNN推断对计算资源的需求很大。 以VGG-16为例, 对一个大小为224*224的图像 进行分类需要15.5G次的乘加运算。 因此, 传统的解决方案倾向于将图像或视频传输到计算 能力强大的云中。 然而, 用户数据是在网络的边缘产生的。 在广域网上进行长距离传输会导 致延迟和抖动, 对传统应用的性能产生不利影响。 近年来, 物联网的激增带来了网络边缘计 算能力的增长, 催生了边缘计算。 用户数据可以在本地直接送入CNN, 以避免远程传输。 为了 缓解边缘设备有限的能力和CNN巨大的资源需求之间的矛盾, 人们探索了许多方法, 如模型 切割和数据切割。 0。

22,003 模型切割通过寻找满足时延要求或能量要求的划分点, 将CNN模型分解为多个设 备之间的子模型, 但这种方法是按顺序进行子模型推断的, 因此没有充分利用边缘设备的 并行性。 数据切割在边缘设备之间分割数据, 并利用每个边缘设备的计算资源并行地进行 推断。 此外, 数据切割是在网络边缘本地进行的, 边缘设备之间的通信将更加高效, 从而延 迟会更小, 但现有数据切割技术不够灵活。 有的系统将整个CNN的所有层作为一个不可分割 的任务, 这就导致单个任务耗时较长, 整个系统受限于负载最高的设备, 而且当CNN较为复 杂时, 多个任务之间存在较为严重的重叠。 另外一些系统将CNN的每一个层作为一个。

23,不可分 割的任务, 从而使得每一个层的完成都需要所有设备的同步等待, 带来了极高的同步开销。 0004 根据当前署名发明人对当前数据切割方面已有研究的分析, 发现他们仍然存在着 以下这些问题: (1)对CNN结构的支持有限。 CNN的结构越来越复杂, 而现有的研究工作只关 注简单的链状CNN, 例如YOLOv2, VGG-16, 但很多最新的CNN并非完全是链式结构。 (2)计算任 务存在冗余且同步开销较大。 有的系统把计算从CNN开始到结束的部分输出视为不可分割 的任务。 这可能导致重复计算和冗余任务。 有的系统将计算单层输出的一部分视为不可分 割的任务, 这导致从节点之间的同步开销很高。 。

24,(3)内存管理缺失。 边缘设备通常具有有限 的内存, 而CNN推断则需要大量内存。 系统正常运行需要合适的内存管理, 否则性能将受到 严重影响。 在分布式环境中, 由于数据被其他设备重用, 本地数据不能直接删除, 这就需要 及时的垃圾检测和内存回收。 (4)固定的调度策略。 考虑到异构的CNN和边缘环境, 一个固定 的调度策略很难在所有情况下都表现良好。 换言之, 最优调度策略在不同的环境中可能会 有所不同。 0005 因此, 亟需一种针对边缘网络下CNN任务的更优的推断系统和/或推断方法。 说明书 1/15 页 6 CN 112148451 A 6 发明内容 0006 发明目的: 针对现有技。

25,术的不足, 本发明提出了一种针对边缘网络下CNN任务的分 布式协同自适应CNN推断系统, 至少解决调度策略固定以及同步开销大的问题, 以加快CNN 在网络边缘的推断速度。 0007 本发明的另一目的是提供一种相应的CNN推断方法。 0008 技术方案: 根据本发明的第一方面, 提供了一种低时延的协同自适应CNN推断系 统, 应用于边缘计算网络, 所述系统包括一个主节点和多个从节点, 所述主节点用于实时监 控各从节点的运行状态, 并周期性地更新从节点的推断任务, 所述从节点用于推断任务的 具体执行, 其中, 所述主节点包括: 0009 运行信息存储模块, 用于以有向无环图DAG结构存储CNN的输。

26,出, DAG的每个顶点对 应于CNN中某一层的输出范围并包含多个任务的状态; 0010 状态更新模块, 用于根据从节点任务完成情况对运行信息存储模块进行更新; 0011 依赖关系计算模块, 用于计算任意两个特征图像之间的依赖关系, 即对于某个输 出层的给定输出范围, 给出特定输入层的所需输入范围, 和/或对于某个输入层的给定输入 范围, 给出特定输出层的预期输出范围; 0012 作业调度模块, 用于根据DAG形状将CNN切割成多个块, 每个块包括多个层, 在每个 块中, 利用依赖关系计算模块计算层之间的依赖关系, 根据从节点的计算能力将特定输出 层的预期输出范围进行切割, 切割后的对应层输出范。

27,围形成作业分配给从节点; 0013 所述从节点包括: 0014 数据存储模块, 用于以DAG结构存储CNN的输出, DAG的每个顶点对应于CNN中某一 层的输出数据; 0015 任务执行模块, 用于根据接收的作业, 从数据存储模块中获取所需数据并执行作 业中的所有任务, 并将任务的输出保存在数据存储模块中; 0016 调度请求模块, 用于在当前作业完成时向作业调度模块请求新的作业。 0017 作为优选的实施方式, 所述主节点的作业调度模块还用于检查层的状态, 将不会 用到的层标记为垃圾层, 并将垃圾层返回给从节点, 所述从节点调度请求模块在任务完成 时要求作业调度模块提供实时的垃圾层信息, 并。

28,根据所标记的垃圾层删除相关数据以回收 内存。 0018 作为优选的实施方式, 所述从节点还包括数据提供模块和数据请求模块, 所述数 据请求模块用于向其他从节点请求数据并将其保存在数据存储模块中; 所述数据提供模块 用于为其他从节点提供需要的数据; 所述从节点的任务执行模块还用于在接收到作业时, 利用依赖关系计算模块计算作业中任意两层之间的依赖关系, 判断自身是否拥有该作业所 需的所有数据, 如果没有则通过所述数据请求模块从其他节点请求数据。 0019 作为优选的实施方式, 所述依赖关系计算模块包括: 0020 第一计算单元, 用于计算相邻特征图像之间的依赖关系, 所述相邻特征图像指的 是一个层。

29,的输入特征图像和输出特征图像, 令层L的输入范围, 核大小和步长分别为x,y, K和S, 那么层L相应的输出范围为: 说明书 2/15 页 7 CN 112148451 A 7 0021 0022 同样地, 对于层L的输出范围x,y, 所需要的输入范围为: 0023 0024 第二计算单元, 用于在任意两个特征图像之间, 对于给定预期输出范围计算最小 所需的输入范围, 其中给定输出层O的输出范围记为xout,yout, 输入层I的最小所需输入范 围记为xin,yin, 第二计算单元从层O开始, 递归遍历所有在I和O之间的层, 然后根据第一 计算单元计算的结论来计算这些层的最小所需输出范围, 最。

30,后给出层I的最小所需输入范 围, 并保存所有中间层的最小所需输出范围集合具体实现如下: 0025 初始情况下, 所有中间层的输出范围都被设置为空以表示尚未计算, 在递归开始 之前, 首先检查当前层O是否已经计算过, 如果已计算过, 则会比较当前的范围xout,yout和 若前者完全被后者所覆盖, 那么就不必继续递归了, 否则, xout,yout会被设置为两者的 并集, 然后继续递归以更新O前面所有层的输出范围; 如果层I恰好就是层O, 那么递归目标 已经达到, 直接使用第一计算单元的in_range公式计算即可, 否则使用in_range公式计算 出层O的最小输入范围, 并以此作为层O所有前。

31,驱的预期输出范围, 然后继续对层O的所有前 驱进行递归; 最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果; 0026 第三计算单元, 用于在任意两个特征图像之间, 对于给定输入范围计算预期的输 出范围, 其中给定输入层I的输入范围记为xin,yin, 输出层O的预期输出范围记为xout, yout, 第三计算单元从层I开始, 递归遍历所有在I和O之间的层, 然后根据第一计算单元计 算的结论来计算这些层的预期输出范围, 最后给出层O的预期输出范围, 并保存所有中间层 的预期输出范围集合具体实现如下: 0027 初始情况下, 所有中间层的输入范围都被设置为空以表示尚未计算, 在递归开始。

32, 之前, 首先使用第一计算单元的out_range公式计算出当前层I对于xin,yin的输出范围 x” ,y” , 然后检查当前层I是否已经计算过, 如果已计算过, 则会比较当前的范围x” ,y” 和若前者完全被后者所覆盖, 那么就不必继续递归了, 否则, x” ,y” 会被设置为两者的 交集, 然后继续递归以更新I后面所有层的输出范围; 如果层O恰好就是层I, 那么递归目标 已经达到, 直接输出x” ,y” 即可, 否则将x” ,y” 作为层I所有后继层的预期输入范围, 然 后继续对层I的所有后继层进行递归; 最后所有层I后继返回的输出范围的交集就是最终给 出的结果。 0028 作为优选的实。

33,施方式, 所述作业调度模块包括: 0029 第一切割单元, 用于将CNN切割成多个块, 当一个用户想要将CNN切割成n个块时, 第一切割单元使用第三计算单元计算出对于特定输入范围, 所有层的预期输出范围, 基于 预期输出范围选择P0,P1,.,Pn-1作为同步点, 其中P0和Pn-1分别为CNN的第一个和最后一个 层, 中间的同步点以每块包含基本相同的层数为原则进行选取; 0030 第二切割单元, 用于当一个同步点Pc完成时, 根据每个从节点w的计算能力sw, 切割 下一个同步点Pc+1的预期输出范围, 以使得每个从节点的输出长度与其计算能力成正比; 说明书 3/15 页 8 CN 11214。

34,8451 A 8 0031作业构建单元, 用于将从节点w在下一个同步点Pc+1的任务输入到第二计算单 元中, 第二计算单元给出Pc和Pc+1之间所有层的最小所需输出范围, 形成从节点w的下一个 作业; 0032 分配单元, 用于将形成的作业分配给相应的从节点。 0033 根据本发明的第二方面, 提供了一种低时延的协同自适应CNN推断方法, 应用于边 缘计算网络, 所述方法包括以下步骤: 0034 从网络中选取一个边缘设备作为主节点, 用于推断任务的全局分配, 其他边缘设 备作为从节点, 用于推断任务的具体执行, 由单个主节点和多个从节点组成协作系统; 0035 根据卷积神经网络CNN的结构, 。

35,在主节点和从节点中分别建立有向无环图DAG用于 存储CNN的输出, 其中主节点中DAG的每个顶点对应于CNN中某一层的输出范围并包含多个 任务的状态, 从节点中DAG的每个顶点对应于CNN中某一层的输出数据; 0036 主节点根据DAG的形状将CNN切割成多个块, 每个块包含多个层, 在每个块中计算 层之间的依赖关系, 根据从节点的计算能力将特定输出层的预期输出范围进行切割, 切割 后的对应层输出范围形成作业分配给从节点; 0037 从节点接收到分配的作业后, 从自身存储的DAG中获取所需数据并执行作业中的 所有任务, 并将任务的输出保存在本地DAG中; 0038 每当完成一个任务时, 从节点。

36,的工作进程向主节点发出通知, 主节点基于该通知 在自身DAG中找到相关顶点并更新其状态; 0039 当作业全部完成时, 从节点向主节点请求新的作业。 0040 作为优选的实施方式, 所述方法还包括: 主节点在更新状态后检查层的状态, 将不 会用到的层标记为垃圾层, 并将垃圾层返回给从节点, 从节点根据所标记的垃圾层删除相 关数据以回收内存。 0041 作为优选的实施方式, 所述方法还包括: 从节点在接收到作业时, 通过计算作业中 任意两层之间的依赖关系, 判断自身是否拥有该作业所需的所有数据, 如果没有则从其他 从节点请求数据。 0042 作为优选的实施方式, 所述在每个块中计算层之间的依赖关。

37,系包括: 0043 1)计算相邻特征图像之间的依赖关系, 所述相邻特征图像指的是一个层的输入特 征图像和输出特征图像, 令层L的输入范围, 核大小和步长分别为x,y, K和S, 那么层L相应 的输出范围为: 0044 0045 同样地, 对于层L的输出范围x,y, 所需要的输入范围为: 0046 0047 2)在任意两个特征图像之间, 对于给定预期输出范围计算最小所需的输入范围, 称为AIR, 其中给定输出层O的输出范围记为xout,yout, 输入层I的最小所需输入范围记为 xin,yin, 从层O开始, AIR递归遍历所有在I和O之间的层, 然后根据1)中的公式来计算这些 说明书 4/15。

38, 页 9 CN 112148451 A 9 层的最小所需输出范围, 最后给出层I的最小所需输入范围, 并保存所有中间层的最小所需 输出范围集合具体实现如下: 0048 初始情况下, 所有中间层的输出范围都被设置为空以表示尚未计算, 在递归开始 之前, AIR首先检查当前层O是否已经计算过, 如果已计算过, 则会比较当前的范围xout, yout和若前者完全被后者所覆盖, 那么就不必继续递归了, 否则, xout,yout会被设置为 两者的并集, 然后继续递归以更新O前面所有层的输出范围; 如果层I恰好就是层O, 那么递 归目标已经达到, 直接使用1)中in_range公式计算即可, 否则使用i。

39,n_range公式计算出层O 的最小输入范围, 并以此作为层O所有前驱的预期输出范围, 然后继续对层O的所有前驱进 行递归; 最后所有层O前驱返回的最小输入范围的并集就是最终给出的结果; 0049 3)在任意两个特征图像之间, 对于给定输入范围计算预期的输出范围, 称为AOR, 其中给定输入层I的输入范围记为xin,yin, 输出层O的预期输出范围记为xout,yout, AOR 从层I开始, 递归遍历所有在I和O之间的层, 然后根据1)中的公式来计算这些层的预期输出 范围, 最后给出层O的预期输出范围, 并保存所有中间层的预期输出范围集合具体实现如 下: 0050 初始情况下, 所有中间层的。

40,输入范围都被设置为空以表示尚未计算, 在递归开始 之前, 首先使用1)中out_range公式计算出当前层I对于xin,yin的输出范围x” ,y” , 然后 检查当前层I是否已经计算过, 如果已计算过, 则会比较当前的范围x” ,y” 和若前者完 全被后者所覆盖, 那么就不必继续递归了, 否则, x” ,y” 会被设置为两者的交集, 然后继续 递归以更新I后面所有层的输出范围; 如果层O恰好就是层I, 那么递归目标已经达到, 直接 输出x” ,y” 即可, 否则将x” ,y” 作为层I所有后继层的预期输入范围, 然后继续对层I的 所有后继层进行递归; 最后所有层I后继层返回的输出范围的交集就。

41,是最终给出的结果。 0051 作为优选的实施方式, 所述根据从节点的计算能力将特定输出层的预期输出范围 进行切割, 切割后的对应层输出范围形成作业分配给从节点包括: 0052 a)使用AOR计算出对于特定输入范围, 所有层的预期输出范围, 基于预期输出范围 将CNN切割成n个块, 选择P0,P1,.,Pn-1作为同步点, 其中P0和Pn-1分别为CNN的第一个和最 后一个层, 中间的同步点以每块包含基本相同的层数为原则进行选取; 0053 b)对于第一个作业, 将P0的输出范围均匀地分配给每个从节点; 0054 c)当一个同步点Pc完成时, 根据每个从节点w的计算能力sw, 切割下一个同步点P。

42,c+1 的预期输出范围, 以使得每个从节点的输出长度与其计算能力成正比; 0055d)将从节点w在下一个同步点Pc+1的任务输入AIR, 根据AIR给出的Pc和Pc+1之间 所有层的最小所需输出范围, 形成从节点w的下一个作业; 0056 e)将形成的作业分配给相应的从节点。 0057 有益效果: 本发明考虑到了CNN的异构性, 调度策略的灵活性和内存回收的实时 性, 使得用户可以借助本发明通过自定义的方式处理多种CNN结构, 并且根据设备和环境的 实际情况设计最合适的调度策略。 因为本发明的细粒度调度机制, 用户可以对CNN的每一层 和相关数据进行灵活的调整。 借助于这套机制, 本发明提出一。

43,种高效的均衡同步调度方式, 实验证明, 相比于现有同类系统, 该调度方式可以减少14.72倍的内存占用和5.79倍的推断 时延。 说明书 5/15 页 10 CN 112148451 A 10 附图说明 0058 图1是本发明实施例提供的CNN推断系统整体架构图; 0059 图2是本发明实施例提供的各层数据之间依赖关系的分析图; 0060 图3是本发明实施例提供的对CNN的各类型层运行时间与输入数据量的分析图; 0061 图4是本发明实施例提供的PSS调度器对CNN进行切割的示意图; 0062 图5是本发明实施例与其他系统在内存占用量上的性能对比图; 0063 图6是本发明实施例与其他系统在时。

44,延上的性能对比图。 具体实施方式 0064 下面结合附图对本发明的技术方案作更进一步的说明。 0065 根据本发明的一个实施例, 一种针对边缘网络下CNN任务的分布式CNN推断系统, 是由单个主节点和多个从节点组成的协作系统, 其中主节点实时监控各从节点的运行状 态, 并周期性地更新从节点任务, 起到全局任务协调的作用, 系统中只有一个主节点; 从节 点负责推断任务的具体执行, 通常有多个从节点。 主节点和从节点都维护了CNN的结构性信 息, 并且使用跨层数据范围演绎机制来计算任意两块数据之间的依赖关系。 0066 具体地, 参照图1, 右边为主节点的架构, 包括: 运行信息存储模块, 状态更。

45,新模块, 依赖关系计算模块, 作业调度模块, 其中, 运行信息存储模块用于以有向无环图(Directed Acyclic Graph,DAG)结构存储CNN的输出, 下文中也称为运行信息存储器, 运行信息存储器 的结构与CNN相同, 维护着CNN每个层的状态, 其DAG的每个顶点对应于CNN中某一层的输出 范围并包含多个任务的状态。 每个任务的状态都记录在运行信息存储器中。 图1中顶点中的 阴影切片表示已完成的任务, 空白切片表示未完成的任务。 层0, 1, 2, 3, 4都有3个属于不同 从节点的任务, 并且已经完成。 运行信息存储器的信息通过状态更新模块来更新, 状态更新 模块启动一个运行。

46,监视器线程, 监视从节点任务完成后上报的通知, 根据上报的信息在运 行信息存储器中找到相关顶点并更新其状态。 0067 运行信息存储器中的信息用于支持调度决策。 调度决策由作业调度模块来完成, 在下文中也称为调度器。 调度器是主节点的关键组件。 当要给从节点分配新作业时, 调度器 首先选择该作业需要执行的几个层, 然后对于每个层, 调度器从其未完成的输出范围中选 择一个切片作为任务。 所选层的这些任务构成从节点的一个作业。 例如, 图1中从节点1的最 新作业包含5个任务, 并且相关层是层0, 1, 2, 3, 4。 对于每个层, 从节点1只计算整个输出范 围的1/3。 在推断开始时, 调度器为。

47,每个从节点生成第一个作业。 每当一个从节点完成一个 任务时, 这个工作进程都会通知主节点中的运行监视器和调度器。 运行监视器将在运行信 息存储器中找到相关顶点并更新其状态。 调度器将检查层的状态, 标记不会用到的层为垃 圾, 并将垃圾层返回给从节点。 它们占用的内存稍后将由该从节点回收。 当从节点完成当前 作业时, 此从节点会向调度器请求新的作业。 0068 其中调度器首先选择该作业需要执行的几个层, 然后对每个层选择某个切片作为 任务 , 是基于均衡同步调度的思想来实现的。 在本发明中 , 称为均衡同步调度器 (Proportional Synchronized Scheduler,PSS)。

48,, 作为系统的内置调度器, 以动态感知的方 式调整从节点负载并实现内存的高效回收。 关于PSS的实现下面会详细描述。 某个层的预期 输出范围通过依赖关系计算模块来确定, 依赖关系指的是在CNN各层中任意两层(即两个特 说明书 6/15 页 11 CN 112148451 A 11 征图像)之间的依赖关系, 即, 对于某个输出层的给定输出范围, 给出特定输入层的所需输 入范围, 和/或对于某个输入层的给定输入范围, 给出特定输出层的预期输出范围。 本发明 在系统中实现了CNN跨层数据范围演绎(Layer Range Deduction,LRD)机制, 使得主节点和 从节点可以演绎出在CNN诸多层。

49,中任意两块数据之间的依赖关系。 关于LRD的具体实现也将 在下文给出说明。 0069 继续参照图1, 左侧为从节点的架构, 包括: 数据存储模块, 任务执行模块, 调度请 求模块, 依赖关系计算模块, 数据提供模块和数据请求模块, 其中, 数据存储模块也是DAG结 构存储CNN的输出, 下文中也称为数据存储器, 用于维护状态数据。 与主节点中的运行信息 存储器类似, 数据存储器中的每个顶点对应于CNN中一个层的输出数据。 不同的是, 运行信 息存储器只记录数据的输出范围, 而数据存储器则保存具体的数据。 任务执行模块用于执 行作业中的所有任务, 具体在计算线程中执行任务, 并将任务的输出保存在。

50,数据存储器中。 调度请求模块用于向主节点的作业调度模块请求新的作业, 具体通过更新器线程与主节点 通信。 从节点分别使用数据提供模块和数据请求模块提供和获取远程数据, 具体启动数据 服务器线程和数据获取器线程来实现相应动作。 0070 当一个从节点接收到一个作业时, 它首先使用LRD来检查它是否拥有该作业所需 的所有数据。 如果没有, 数据获取器线程将开始请求数据并将其保存在数据存储器中。 相应 地, 数据服务器线程用于为其他从节点提供需要的数据。 0071 当数据准备就绪时, 计算线程将从数据存储器中获取数据并执行作业中的所有任 务。 这些任务的输出将保存在数据存储器中以备将来使用。 由于它。

展开阅读全文
温馨提示:
本站所有文档如无特殊说明,都需要本地电脑安装OFFICE2007或PDF阅读器。
关于本文
本文标题:低时延的协同自适应CNN推断系统及方法.pdf
链接地址:http://www.taohuahs.com/pdf/10121238.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 taohuahs.com网站版权所有
经营许可证编号:粤ICP备2021068784号-1 
 


收起
展开
Baidu