一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种DNN分区方法及采用该方法的边缘计算架构和存储介质与流程

2022-04-06 20:22:08 来源:中国专利 TAG:

一种dnn分区方法及采用该方法的边缘计算架构和存储介质
技术领域
1.本发明涉及计算机应用技术领域,具体而言,涉及一种dnn分区方法及采用该分区机制的边缘计算架构和存储介质及终端设备。


背景技术:

2.作为一种先进的人工智能技术,深度强化学习(deep reinforcement learning,drl)在许多具有挑战性的现实问题中取得了巨大的成功。它被广泛地部署在不同的设备上,如智能车、智能手机、可穿戴设备、智能相机以及边缘网络中的其他智能对象。drl集成深度神经网络(dnn)和强化学习算法,在边缘设备上实现智能决策与控制。然而,由于能量消耗、芯片尺寸、计算容量等固有的约束因素,边缘网络通常是由嵌入式设备组成的,而且边缘网络中的通信带宽往往也是有限的。为了解决这些问题,移动边缘计算(mec)近年来得到了广泛的研究。鉴于dnn训练和推理对计算能力的要求很高,基于mec解决方案进行资源高效、可扩展的drl至关重要。
3.由于gpu和cpu的性能差距,通过带gpu的边缘服务器进行加速是一个很有前途的方法。例如,在gpu上执行同样的dnn推理任务,与cpu相比,处理时间不到十分之一。因此,目前的主流框架往往以cpu-gpu协作的方式支持大规模分布式drl,如ga3c、dd-ppo、impala、seed-rl等。所有这些框架都将整个训练甚至整个推理放在gpu上进行加速,并保持与cpu上的环境交互。不幸的是,这些框架不是为边缘网络设计的,因为它们缺乏对有限的边缘资源的考虑。虽然将所有的任务迁移到边缘服务器是可行的,但它同样会带来巨大的通信代价,造成网络带宽和设备计算资源的浪费,使其难以扩展到大规模集群。
4.现有的drl训练框架如impala、seed-rl等,通常将dnn训练看作一个整体,采用全部放到端设备(impala)或者全部放到边缘服务器(seed-rl)的方式进行计算。然而由于算力的限制,全部放到端设备的模式明显难以快速地实现模型收敛,计算效率低下;同时,由于drl交互的环境需要运行在端设备上,全部放到边缘服务器的模式需要从端设备将所有观测数据上传,而受限于边缘网络的带宽,这会带来冗余的带宽浪费,并且边缘服务器会成为计算的瓶颈,难以大规模扩展。现有技术存在不足。


技术实现要素:

5.为了兼容高计算效率和高可扩展性之间,本发明分析了dnn的网络结构,发现中间层的输出远小于原始的输入,同时大规模的运算往往发生在深层网络,所以本发明提出了一种新型的drl训练框架,通过将浅层网络放置于端设备,深层网络切分卸载到边缘服务器的方法,实现了边缘网络的高效高可扩展性,且能动态适应资源变化。解决了以上的至少一个技术问题。
6.本发明实施例提供了一种dnn分区方法,包括以下步骤:
7.s1.根据dnn的每一层的计算类型和规模进行抽象,得到dnn的层次架构及总的层数;
8.s2.利用每秒浮点运算来表征设备和边缘服务器的浮点计算量和计算时间,结合dnn的层数来完成设备与边缘服务器基于dnn分区博弈的数学建模;
9.s3.以最小化所有设备的总响应时间为目标设计优化目标函数;
10.s4.基于dnn的分割层为所述设备设计效用函数;
11.s5.基于博弈论的建模方法,把每个设备看作独立的智能体,每个智能体的目标是通过选择分割层位置来最大化自身的效用函数。
12.本发明还提供一种采用如上述dnn分区方法的边缘计算架构,包括设备和接入所述设备的边缘服务器;所述设备设置为执行器;所述边缘服务器设置为学习器:dnn被分割后分别部署在所述执行器和所述学习器上,通过两者协同完成推理任务;
13.所述学习器用于运行深层的网络来实现加速;
14.所述执行器用于执行分割后的一部分所述dnn,得到的输出张量输出给所述学习器。
15.本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现如上述dnn分区方法中的步骤。
16.本发明还提供一种终端设备,其包括至少一个处理器、显示屏,以及存储器,还包括通信接口和总线;其中,所述处理器、所述显示屏、所述存储器和所述通信接口通过所述总线完成相互间的通信;所述显示屏设置为显示初始设置模式中预设的用户引导界面;所述通信接口传输信息;所述处理器调用所述存储器中的逻辑指令,以执行上述dnn分区方法。
17.本发明对一般化的dnn网络进行形式化定义,并给出对应的优化目标函数,用以设计动态的高效分区算法。同时,本发明基于dnn分区来减少边缘计算网络资源消耗。本发明对dnn的分区将dnn在一个适合的层次进行网络划分,将浅层网络放置于端设备,深层网络切分卸载到边缘服务器。这是一种分层的卸载决策机制,即将推理任务的一部分放在设备上,一部分放在边缘服务器上。该机制有效地利用比设备速度更快的边缘服务器来实现推理任务的加速。
附图说明
18.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
19.图1为本发明dnn分区方法的流程框图;
20.图2为边缘网络的架构示意图;
21.图3为本发明coknight框架的架构示意图;
22.图4为本发明dnn结构示意图,以及对dnn分区的切分的示意图;
23.图5为本发明对dnn分区的动态高效无嫉妒分区(defp)算法流程图;
24.图6为本发明终端设备的结构示意图;
25.图7为本发明与现有技术的收敛速率(计算效率)对比图;
26.图8为本发明与现有技术可扩展性对比图。
具体实施方式
27.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.典型的边缘计算架构,参见附图2左侧系统所示,包含了云中心(cloud center)、边缘服务器、接入点(edge server),以及边缘设备(device)组成。进一步如图2右侧系统所示,存在一个边缘服务器,有n个设备可以通过wifi、5g或者有线网连接到边缘服务器,边缘服务器有着有限的算力和带宽资源,分别用rc和rb来表示。coknight将强化学习的执行器(actor)部署在边缘设备上,而将学习器(learner)部署在边缘服务器,actor根据设备上的数据进行实时推理,并执行动作和环境交互,而learner则根据交互的历史轨迹数据,进行模型的训练。
30.由于边缘设备的算力和通信带宽有限,完全将神经网络的计算放置在边缘设备上是非常低效的,而全部上传到服务器进行计算则需要大量的通信带宽,同时还会受到通信延迟的影响。所以本发明在分析了神经网络的结构之后提出了一种对神经网络进行切分的分区方法来加速神经网络的推理过程。
31.参见附图1,根据本发明一实施例,提供了一种dnn分区方法,包括以下步骤:
32.s1.根据dnn的每一层的计算类型和规模进行抽象,得到dnn的层次架构及总的层数。
33.如附图4所示,其中a部分是一个图像分类神经网络的例子,它总共由11层组成,图中标注了每一层的计算类型和规模,包括9个3
×
3cnn和2个fc层。
34.事实上,所有的dnn都可以抽象成一个类似的架构,每一层都进行相应的张量计算,并将结果输出到网络的下一层。
35.由于dnn推理的本质是对输入张量的矩阵计算,所以每一层的计算都与输入张量的大小有关。我们可以利用浮点运算(flops)来测量每一层的计算复杂度。我们可以将k层dnn定义为一个序列l=(l1,l2,

,lk),lk表示神经网络的k-th层。让ck表示k-th层的flops大小,lk是一个与输入张量大小相关的函数。简而言之,对于某一dnn,在相同的输入规模下的计算量c可以计算如下:
36.37.s2.利用每秒浮点运算来表征设备和边缘服务器的浮点计算量和计算时间,结合dnn的层数来完成设备与边缘服务器基于dnn分区博弈的数学建模。
38.我们假设一个k层dnn,并利用一个变量yi(0≤yi≤k)来表明dnn是在设备di(即actor i)的yi-th层上划分的。设yi=0表示整个dnn模型将在边缘服务器上执行,设yi=k表示整个dnn模型将在设备上独立计算。同时,用cd(yi)和ce(yi)分别表示在设备和边缘服务器上计算的吞吐量,从而选择切分层yi,它们可以表述为:
[0039][0040][0041]
其中,k是神经网络的第k层,k是神经网络的总层数。ck是第k层神经网络的计算量(flops),cd(yi)表示从第一层到第yi层的计算总量,在设备上运行;ce(yi)表示从第yi 1层到k层的计算总量,在边缘服务器上运行。
[0042]
当yi=k时,表示cd(yi)是从第一层一直到最后一层(k层)的计算总量,都在设备上计算,也即是独立计算。
[0043]
我们采用每秒浮点运算数(flops)来表征设备和边缘服务器的计算性能。我们将边缘服务器的flops表示为fe。由于设备通常是多种多样的,我们使用fdi来表示设备di的flops。因此,设备di和边缘服务器上的分区任务的计算时间分别用tid(yi)和tie(yi)表示:
[0044][0045][0046]
其中fdi表示设备的每秒浮点计算量,fe则是边缘服务器的每秒浮点计算量,所以cd(yi)/fdi即是计算在设备上的计算时长tdi(yi),同样ce(yi)/fe表示服务器上的计算时长tei(yi)。所以整个神经网络的计算时间为tdi tei。
[0047]
这两个表达式是用来数字化神经网络的计算时长方式。
[0048]
除了计算时间外,我们还需要注意数据传输时间,这与每一层的输出张量大小有关。设bk(0≤k≤k)为每一层的输出张量大小,其中b0为输入张量大小,bk为输出张量大小。假设每个通信网络中单位张量的传输代价相同,记为tr,则传输时间为bk与tr之比。综上所述,在di上分区任务的总响应时间ti(yi)可以计算为:
[0049][0050]
同样,这个表达式中结合了张量传输的时间,所以ti(yi)表示将神经网络在第yi层分开,第一层到第yi层在设备上计算,并将计算结果传输到边缘服务器上,剩下的yi 1到k层在边缘服务器上继续计算,整个计算时长包含了在两部分计算时间加上中间的传输时
间,以及最后的输出结果再发送回设备上的时间。整个数学建模过程就大致完成了。
[0051]
s3.以最小化所有设备的总响应时间为目标设计优化目标函数。
[0052]
为了保证任务的服务质量,我们设定边缘服务器分配给设备的资源是独占的。一旦这些资源被分配到di,它们将不会与其他设备共享或冲突。我们的目标是最小化所有设备上任务的延迟,即最小化所有设备的总响应时间ti(yi)。可以将该问题建模为一个约束优化问题(cop),如下所示:
[0053][0054]
subjectto
[0055][0056][0057][0058]
其中,δ是张量大小和它所消耗的带宽之间的比例系数。
[0059]
s4.基于dnn的分割层为所述设备设计效用函数。
[0060]
通过观察上述数学模型可以发现,当任务在设备本地执行时,不消耗受约束的服务器计算量和带宽。因此,我们基于yi=k为设备di设计了一个效用函数ui,具体为:
[0061][0062]
s5.基于博弈论的建模方法,把每个设备看作独立的智能体,每个智能体的目标是通过选择分割层位置来最大化自身的效用函数。
[0063]
我们将每个设备di定义为一个玩家i,每个切分层yi为玩家的策略si,每个玩家都是自私的,并希望最大化其效用函数ui。因此该问题就变成了每个玩家通过选择自己的最优策略(切分层)来获得最大化的个人受益。
[0064]
我们为其设计了一个名为动态高效无嫉妒分区(defp)的算法如附图5所示。该算法中,该算法不同于现有的技术将dnn全服部署在设备或边缘服务器上,而是通过博弈论的建模方法,把每个设备看作独立的智能体,每个智能体的目标是通过选择分层位置yi来最大化自身的效用函数ui,这样不需要中心服务器来计算所有设备的分层yi,而是每个设备自动根据该算法来对dnn进行分层,划分出浅层网络部署在设备中,划分出深层网络部署在边缘服务器上。
[0065]
进一步的,在所述分割层以上的dnn部分在所述设备上执行;所述分割层以下的dnn部分在所述边缘服务器上执行。
[0066]
进一步的,在所述步骤s2中所述边缘服务器分配给所述设备的资源是独占的。
[0067]
进一步的,在所述步骤s5中,采用动态高效无嫉妒分区算法通过博弈论的建模方法,把每个所述设备看作独立的智能体,使每个所述智能体的目标是通过选择分层位置来最大化自身的效用函数。
[0068]
进一步的,在所述动态高效无嫉妒分区算法是分布式及增量式算法。
[0069]
如附图3所示,本发明还提供一种采用如上述任意一项dnn分区方法的边缘计算架构,包括设备和接入所述设备的边缘服务器;所述设备设置为执行器;所述边缘服务器设置为学习器:dnn被分割后分别部署在所述执行器和所述学习器上,通过两者协同完成推理任务;
[0070]
所述学习器用于运行深层的网络来实现加速;
[0071]
所述执行器用于执行分割后的一部分所述dnn,得到的输出张量输出给所述学习器。
[0072]
相比于传统算法,采用dnn分区这个算法后,边缘计算架构是分布式,其中每个设备独立运行的;同时这个架构也是增量式的,当有新设备加入时边缘服务器不需要重新计算分配资源,只要新设备自己计算即可。
[0073]
该边缘计算架构的dnn分区方法通过博弈论的建模方法,把每个设备看作独立的智能体,每个智能体的目标是通过选择分层位置yi来最大化自身的效用函数ui,这样不需要中心服务器来计算所有设备的分层yi,而是每个设备自动根据该算法来进行分层。
[0074]
进一步的,所述执行器包括:环境模块、模型模块和存储模块。
[0075]
进一步的,所述学习器包括:模型模块和队列模块。
[0076]
本发明使用分层的方法来进行强化学习训练,相较于传统的drl训练框架都是把完整的神经网络放在设备或者边缘服务器来独立计算,本发明则将神经网络分为两部分,一部分在边缘服务器一部分在设备上。实现了最小化所有设备上任务的延迟。同时,本发明使用了博弈论设计了这个分布式的动态算法,相比于传统优化算法,可以实现分布式计算,且可以动态增加或减少设备,而不需要再加入新设备后所有设备的资源都要重新计算分配。
[0077]
在发明的coknight框架中,每个加入训练网络的设备会根据这个算法,自动选择适合自己的切分层,以分区后的dnn进行推理任务,实现训练和计算的加速。
[0078]
基于上述dnn分区方法,本实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例的dnn分区方法中的步骤。
[0079]
基于上述的dnn分区方法,本技术还提供一种终端设备,如附图6所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communicationsinterface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的dnn分区方法。
[0080]
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0081]
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
[0082]
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至
少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。
[0083]
此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0084]
此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0085]
本发明经过了充分的实验证明可行。使用了广泛用于测试的atari game来进行测试,结果如附图7所示,drl的收敛速率(计算效率)高于另外两种方法。
[0086]
另外,在可扩展性上,从附图8可以看出,随着coknight框架中加入的执行器(actor)数量增加,本发明的扩展性好于seed-rl框架。
[0087]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献