赞
踩
在资源受限的移动设备上运行计算密集型深度神经网络(DNN)的方法一般是,先在中央云服务器上预先安装相应的DNN模型,然后再向中央云服务器进行DNN查询。但是这种方法不适合分散式云设施(比如, cloudlet和边缘/雾服务器),在这种设施中,客户端可以向位于网络边缘的任何附近服务器发送计算请求,因此,在开始执行DNN请求前,客户端需要先将其DNN模型上传到服务器,但如果一次性上传整个模型,会导致时间过长,DNN的推理受阻。
本文提出了IONN,一种基于分块的神经网络增量卸载技术,IONN将客户端的DNN模型划分为几个分区,并逐个将它们上传到边缘服务器,当每个DNN分区到达时,服务器增量地构建DNN模型,同时,在整个DNN模型上传完成前,客户端就可以开始执行DNN。为了确定最佳的DNN分区策略和上传顺序,IONN使用了一种新的基于图的启发式算法。
IONN分为客户端和服务器两个部分,每个部分都有安装和运行时两个阶段:
已经知道了IONN的总体框架,现在的问题是如何创建分区,接下来的部分主要介绍分区策略。
首先,我们需要明确,如果一次性上传所有的层,会需要很长的时间,而在上传模型的这段时间内,如果来了一个DNN推理请求,那么该请求就只能全部放在本地执行,无法从服务器处获利,导致推理的效率很低。那么我们的目的就是将一个大的DNN按层划分为很多个小分区,然后逐个上传,很显然,我们希望最先上传那些性能最好的分区(即,上传时间很短,在服务器上执行的时间也很短的分区),这可以转换为最短路径问题来求解,所以,我们为DNN模型构建了一个NN执行图,并通过迭代的搜索图的最短路径来创建DNN分区。首先,介绍图的构造方法。
将DNN的每一层都转换为三个节点(层A: 1, 2, 3,层 B: 4, 5, 6, 层 C: 7, 8, 9),左侧节点属于客户端(0,1,4,7,10),右侧节点属于服务器(2,3,5,6,8,9)。客户端节点之间的边表示在本地执行当前层的时间(如,1->4),同一层中服务器节点之间的边表示在服务器端执行时间加层的上传时间(如,2->3),客户端节点和服务器节点之间的边表示传输时间(如,1->2)。因此,DNN查询的执行路径就可以用图上的路径来表示,比如,路径0-1-4-5-6-7-10表示在客户端执行层A,将层B卸载到服务器执行,继续在客户端执行层C。
如果能知道查询的未来情况就可以找到最优的解决方案,比如,如果知道下一个查询来的比较晚,就可以先上载一个大分区,但如果来的很快,就可以先上传一个小分区,但是由于这是无法知道的,所以本文采用了启发式算法。
DNN分区算法的距离流程如下:
(1) 根据执行文件,预测函数和网络带宽,构建一个NN执行图;
(2) 利用最短路径算法,搜索最短路径;
(3) 将包含在最短路径中的服务器端节点对应的层,组成DNN分区,并加入分区计划集合中。
(4) 将层上传时间乘以K(小于1的正数),获得权重更新后的图,在新图中重新搜索新的最短路径,直到层上传时间的边权重几乎为零(通过减小上传时间,可以使得新的最短路径中包含比前一条路径更多的服务器节点)。
问题(a):当NN某层的输出被传递到多个层时,如果直接采用算法1,会导致部分层的执行被丢失。如上图(a),从一个输入到一个输出的最短路径将只包括中间三层中的一层,其余两层的执行就被丢失了。
解决办法(b):构造NN执行图时,将必须包含在路径中的层定义为支配层(如A,B),在构建NN执行图时,将相邻两个支配层之间的层(A和B之间的层)和后一个支配层(B)看做一个层,权重为组合层中所有层的执行时间之和,然后再执行算法1。
本文提出了IONN,一种面向边缘计算的DNN卸载技术,IONN对DNN层进行分区,并以增量方式上传分区,以允许客户端和边缘服务器之间协同执行,甚至在上载整个DNN模型之前。实验结果表明,与一次上传整个模型的方法相比,该方法提高了DNN模型上传期间的查询性能和能耗。
(1) 研究一种更现实的情况,即客户端在多个边缘服务器之间移动并自由的更改服务器。
(2) 研究一种更先进的DNN分区算法,以处理多个移动客户端同时向边缘服务器卸载DNN执行的情况。
(3) 扩展IONN,以支持更多类型的DNN(如RNN或CRNN)和其他DNN计算(例如DNN训练)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。