APP下载

面向模型预分层的边缘终端多AI任务调度策略

2022-05-27梁荣欣陈庆奎

小型微型计算机系统 2022年6期
关键词:计算资源终端设备边缘

梁荣欣,陈庆奎

(上海理工大学 光电信息与计算机工程学院,上海200093)

1 引 言

人工智能[1](AI)的飞速发展,使得深度神经网络DNN(Deep Neural Networks)在视频图像实时识别[2]等多个领域迅速发展,其强大的计算能力使之成为解决科学研究相关问题的有效工具,针对不同需求的DNN模型如雨后春笋般涌现.然而DNN模型的运行环境需要硬件具备很强的计算性能和访存性能,因此一般部署在云端运行.

随着物联网[3]技术的发展及终端设备的快速普及,终端设备产生的数据量与日俱增,以边缘计算[4]模型为核心的面向物联网边缘终端设备的边缘式数据处理方式应运而生,边缘计算开始与AI[5]技术相融合.受限于终端设备的计算资源和存储资源,DNN模型一般部署在边缘服务器.实际应用场景中对数据隐私性和实时性处理提出了更高的要求,研究人员开始探索如何将DNN模型应用于资源受限的终端设备.

目前研究人员对单个边缘终端上部署应用单个DNN模型进行了大量研究,然而在实际应用场景中往往需要单个边缘终端上执行多个AI任务.终端设备的性能提升,使得多个DNN模型同时部署在单个终端设备上成为了可能.然而终端设备的现有可用资源难以满足多个深度学习模型的密集计算和存储需求,如何在满足实时性要求下,将多个DNN模型同时部署到一个边缘终端上进行多AI任务的并行计算是当前亟待解决的问题.

据此,本文提出了基于模型预分层的边缘终端多AI任务调度策略.我们定义了时间周期Ptime,即边缘终端上进行图片采集预处理、多AI任务的并行计算及输出数据结果的传输的全过程所用时间Pt不能超过Ptime;其中将多AI任务并行计算得到的输出数据结果称为AI数据流,它们具有周期性的特征,为一组有序的、浮点数据类型的数值矩阵,很好地保护了用户隐私.我们首先对需要部署到边缘终端上的每个DNN模型进行预分层处理,并构建一个预分层组合解集;然后建立边缘终端资源监控模型,实时检测终端上可用的计算资源、存储资源及网络资源;最后在计算任务的Ptime要求和实时可用资源的约束下,以最大化利用终端设备的可用计算资源为目标,动态地选出一个预分层组合解部署到边缘终端上,利用操作系统的多线程调度思想实现任务粒度的并行:在Ptime内同时调用多AI任务的每个计算线程实现多AI任务并行计算,并将得到的输出数据结果传输到边缘服务器端.实验表明,本文提出的多AI任务调度策略能够满足多AI任务的实时性处理需求,减小边缘端的带宽压力.

2 相关工作

作为AI技术边缘化的实际载体,终端设备上的AI技术主要通过DNN模型的推理计算来实现,然而资源受限的终端设备满足不了DNN模型的内存占用量和计算复杂度,因此研究人员对DNN模型在终端设备上的应用进行了大量探索,目前几乎都是基于单个DNN模型应用在单个终端设备上,有两个研究方向.

其中一个主要研究方向是减少模型本身的参数量降低模型所需的计算资源和存储资源,包括设计轻量化神经网络模型和采用模型压缩技术对模型进行裁剪、量化、稀疏化等.在设计轻量化模型方面,文献[6]构建了一个可以满足资源受限条件的高效基础架构Shuffle,提出了逐点群卷积(pointwise group convolution)和通道混洗(channel shuffle)的处理方法,在减少计算量的同时提高了模型的准确率.文献[7]设计了ResNet网络,其残差结构解决了网络退化的问题,使得在训练更深层次的网络来减少计算量和参数量的同时保证良好的信息.文献[8]实现了适用于移动端的MobileNet-V2模型,采用反向残差结构,解决了MobileNet-v1的数据坍缩问题;同时用线性瓶颈层替换通道数较少层后的ReLU非线性激活,避免了ReLU对特征的破坏,在减小模型的运行时间的同时提高了准确率.在模型压缩方面,文献[9]基于低秩分解技术,实现了神经网络的压缩;文献[10]通过叠加低维二进制卷积滤波器压缩深度卷积神经网络;文献[11]有效地结合SVD、剪枝、聚类和再训练方法提高神经网络压缩.但是由于设备结构差异或者可用资源限制,目前仍有一些终端设备无法部署应用DNN模型.

另一个研究方向是将边缘终端的部分计算任务卸载到边缘服务器,两者协同完成DNN模型的计算任务.文献[12]设计并实现了一个可以在神经网络层的粒度上自动将划分DNN在移动设备和边缘云之间的系统,实现了终端设备和边缘云之间的智能协作;文献[13]提出了分离深度神经网络的方法,根据边缘终端的可用资源动态选择模型切分点,将切分后的两部分模型分别部署到边缘终端和服务器端;文献[14]综合不同分类任务的复杂度和用户期望,构建了预分类模型判断当前任务复杂度,以此来选择合适的DNN模型分别部署在边缘终端和服务器上,共同实现图片的分类功能;文献[15]在中央云的协助下,提出了一种节能的卸载选择策略以确定DNN模型运行在边缘终端、边缘云还是中央云,最大程度地降低了计算总成本.

对于多个DNN模型在单个终端上的应用,目前基本上都是多个DNN模型串行化运行在终端设备上,由于一些DNN模型所需的计算量和访存量过大导致其无法运行在终端平台上或者运行时间过长,满足不了实际应用场景中的实时性要求.因此本文基于“端-边”协同的计算方式,提出了一种基于模型预分层的边缘终端多AI任务调度分配策略.区别于当前研究中单个AI任务的DNN模型经过模型划分后只有一个分层模型可以部署到边缘终端,我们实现了模型预分层模块对多AI任务的每个DNN模型进行预分层处理,使得每个AI任务都有多个可选择的预分层模型;其次基于不同的Ptime要求和实时可用资源情况,动态地为每个AI任务选择一个满足条件的预分层模型,同时部署到边缘终端上实现多个AI任务的并行计算;最后每个预分层模型的输出数据结果大小都不相同,且每个模型的多个预分层模型的输出数据结果的内存占用呈不断减小的趋势,边缘服务器部署了多AI任务对应的每个DNN模型,它可以根据接收到的输出数据的数据包头部信息中对应的模型和预分层编号来区分其来自哪个AI任务的预分层模型,将该数据作为输入继续完成后续的AI计算任务;本文策略具有广泛的适用性,能够应用于不同架构的终端设备以及不同结构的DNN模型.

3 模 型

3.1 整体设计

本文的整体设计如图1所示,模型预分层模块负责实现多AI任务中的每个DNN模型的预分层处理,得到每个模型的多个预分层模型,并从每个模型中各选取一个预分层模型组成一个预分层组合解集;资源监控模块负责实时检测边缘终端上可用的计算资源、存储资源和网络资源;在计算任务的Ptime要求和实时可用资源的约束下,多AI任务调度模块负责从预分层组合解集中选出一个预分层组合解部署到边缘终端上,并将每次得到的预分层组合解及对应的约束条件记录到任务调度结果表中;任务调度存储模块用于减少任务调度的工作量,每当有计算任务时,首先调用该模块,查看任务调度结果表中是否存在与此次计算任务的约束条件相同的记录,若存在的话则无需再调用多AI任务调度模块,直接按照记录中对应的预分层组合解为每个DNN模型选择对应的预分层模型部署到边缘终端上,其算法描述如算法1所示;图片采集模块和数据发送模块分别用于多AI任务并行计算输入图片的采集和输出数据结果的传输.

图1 本文模型的整体实现框架

整体实现流程如下:1)准备工作:首先调用模型预分层线程,然后开启资源监控线程;2)多AI任务的约束条件:每当有计算任务时,发出计算指令并给出Ptime,然后从资源监控线程中获取当前可用的计算、存储和网络资源;3)多AI任务的预分层模型选取及部署:首先调用任务调度存储线程,若没有找到匹配的预分层组合解,再调用多AI任务调度线程选出最优预分层组合解,然后将它们部署到边缘终端上;4)多AI任务的并行计算:图片采集线程采集一张图片并复制N份(N为终端上执行的多AI任务个数),将它们存储到ringbuffer1缓冲区中;然后同时开启N个AI任务的计算线程,它们分别从ringbuffer1中取出一张图片、按照各自的输入尺寸要求进行预处理之后进行多AI任务的并行计算,将得到的输出结果存储到ringbuffer2缓冲区中;5)AI数据流的传输:调用数据发送线程,以一帧为单位,依次从ringbuffer2中取出数据加上头部信息封装成数据包通过TCP传输协议传输到边缘服务器端;6)结尾工作:多AI任务并行计算结束之后,卸载掉对应的预分层模型;下次有新的计算任务时,返回到步骤2) 开始执行.

算法1.任务调度存储算法

1.通过函数形参获取到此次计算任务的Ptime及可用的计算、存储、通信资源;

2.新建一个result2数组用来存储预分层组合解;

3.Open任务调度结果表;//在程序的最后要Close

4.if 任务调度结果表为空:

Return NULL and exit;

5.else

6. for遍历表中的每一条记录:

7. if当前的可用资源与表中的记录相匹配

8. if 此次的Ptime与表中的记录相匹配 then

9. 将找到的对应记录中的预分层组合解{N1k1,N2k2,N3k3,…,NNkN}存储到result2中;

10. Return result2;

11. else

12. Return NULL and exit;

经分析可知,算法1的时间复杂度可表示为公式(1),它与任务调度结果表中的记录条数Num_R及每条记录中的DNN模型个数N、3个可用资源条件、1个Ptime条件有关.

T(N)=Num_R×(N+4)=O(Num_R×N)

(1)

3.2 边缘终端资源监控模型

DNN模型部署运行在边缘终端需要大量的计算资源和存储资源,得到的输出数据结果传输到边缘服务器端则需要通信资源.因此我们将这3个指标进行定量分析:计算资源F(单位:每秒所执行的浮点运算次数(FLOPs))、存储资源M(单位:Byte)和通信带宽G(单位:每秒传送的兆字节(MB/s)).首先获取边缘终端的全部计算资源、存储资源及物理通信带宽,然后每隔固定的时间间隔检测边缘终端上实时已用的计算、存储、通信资源,通过以下公式计算实时可用资源情况.

对于可用计算资源Fusable,检测到边缘终端的全部计算资Ftotal和当前已用计算资源Fused后,用公式(2)计算可得,Ftotal通过公式(3)计算可得,Fused则为当前正在运行的每个计算任务所需计算资源F_taski的总和,如公式(4)所示.

Fusable=Ftotal-Fused

(2)

Ftotal=GPU芯片数量×GPUBoost主频×核心数量×单个时钟周期内能处理的浮点计算次数

(3)

(4)

对于可用存储资源Musable,检测到边缘终端的全部存储资源Mtotal和当前已用存储资源Mused后,用公式(5)计算可得,Mused通过公式(6)可得,其中实际已用内存、缓冲、缓存通过Linux命令获取.

Musable=Mtotal-Mused

(5)

Mused=实际已用内存-缓冲-缓存

(6)

对于可用通信带宽Gusable,检测到边缘终端的物理总带宽Gtotal和当前已用通信带宽Gused后,用公式(7)求得.当前时刻t2的Gused通过公式(8)求得,其中t1、t2时刻已发送的字节数通过Linux命令获取.

Gusable=Gtotal-Gused

(7)

(8)

3.3 DNN模型预分层

3.3.1 DNN模型拆分方法

我们采用横向按层划分的模型划分方法,在DNN的层粒度上选择一个拆分点将DNN模型拆分为net1和net2两部分,每部分承担对应层数的计算任务.拆分点的选取要满足以下几个条件:首先要研究一下模型的前后几层之间是否有依赖关系,尤其注意不相邻的层之间是否有依赖关系,从中选取模型的下一层仅与它的上一层有依赖关系的区间范围;然后从中选取输出特征图的内存占用不断减少的区间范围;最后结合模型每层的参数量和计算量来选择拆分点.

我们基于CAFFE[16]框架,利用DNN模型的网络结构文件(prototxt)和模型权重文件(caffemodel)实现模型拆分.首先计算出net1和net2的输入输出维度并构建各自的prototxt,然后调用caffe内建API函数读取net1和net2的prototxt文件去反推出net1和net2各自的caffemodel文件,至此net1和net2拆分成了两个独立的模型.

3.3.2 DNN模型预分层实现

我们采用3.3.1中的模型拆分方法将需要部署到边缘终端上的每个DNN模型分别选择多个拆分点对模型进行多次拆分,拆分得到的net1模型即为要部署在边缘终端上的预分层模型,然后将每个预分层模型的名称、计算量、访存量、输出数据结果大小及其在Jetson Nano开发板上的运行时间记录到预分层配置文件中.

所需计算量[17]是指模型进行一次完整的前向传输所发生的浮点计算次数,单位是FLOPs;运行时间即为模型进行一次完整的前向传输所需时间;所需访存量是指模型完成一次前向传播过程中所发生的内存交换总量,在不考虑片上缓存的情况下,访存量为模型各层权重参数的内存占用与每层所输出的特征图的内存占用之和,单位是Byte(由于数据类型通常为float32,因此需要乘以4).本文以DNN模型中的卷积层和全连接层为例进行分析.

对于普通卷积层来说,第i层卷积层的计算量F_convi和访存量Mem_convi如公式(9)和公式(10)所示:

F_convi=Uwi×Uhi×Cki2×Cini×Couti

(9)

Mem_convi=(Cki2×Cini×Couti+Uwi×Uhi×Couti)×4

(10)

D=Uwfinal×Uhfinal×Coutfinal×4

(11)

其中Uwi和Uhi分别为第i层输出特征图的宽和高;Cki为该层卷积核的尺寸;Cini和Couti分别为该层的输入通道数和输出通道数,第i层的输入通道数Cini即为第(i-1)层卷积层的输出通道数Cout(i-1);输出数据结果大小即为模型最后一层输出特征图的内存占用,如公式(11)所示.

模型整体的计算量和访存量分别表示为:

(12)

(13)

对于轻量化卷积,以MobileNet中的深度可分离卷积为例,它首先采用深度卷积将每个卷积核应用到每一个输入通道分别进行卷积,然后采用1×1卷积将上面的输出再进行结合,其计算量和访存量如公式(14)和公式(15)所示:

Fdconv=DUw×DUh×M×Dk2+DUw×DUh×M×N

(14)

Memdconv=((Dk2×M+M×N×1×1)+DUw×DUh×N)×4

(15)

其中DUw、DUh分别为深度可分离卷积的输出特征图的宽和高,Dk为该层卷积核的边长,M和N分别为输入通道数和输出通道数.

对于全连接层,如公式(16)和公式(17)所示,其所需的参数量与计算量均与输入通道数Cin和输出通道数Cout有关.

Ffc=Cin×Cout

(16)

MeMfc=(Cin×Cout+Cout)×4

(17)

模型预分层算法的描述如算法2所示.

算法2.模型预分层算法

1.fori=1→N(N为部署到边缘终端的DNN模型个数):

2.Input:第i个DNN模型的 prototxt和caffemodel;

3.Output:第i个DNN模型的net1和net2各自的prototxt和caffemodel;

4.根据网络结构找到模型的下一层只与它的上一层有依赖关系的区间范围then

5. 再找到输出特征图内存占用不断减小的区间范围;

6. 结合每一层的计算量和访存量从中选k个拆分点;

7. forj=1→kdo://对于每一个拆分点

8. 以第j个拆分点为界线构建net1和net2的prototxt;

9. 建立DNN模型、net1和net2的Net结构;

10. 调用ReadProtoFromBinaryFile函数读入DNN模型的prototxt和caffemmodel;

11. 将模型权重转换为NetParameter类型;

12. 通过WriteProtoToBinaryFile函数得到net1、net2的caffemodel文件;

13. 计算出net1模型的计算量、访存量及输出数据大小连同它的名称及运行时间记录到预分层配置文件中;

14. 构建一个预分层组合解集存储到新建文件夹中.

(18)

以OpenPose[18]人体姿态识别模型为例进行模型预分层,我们运用OpenPose的BODY_25人体躯干模型获取人体骨骼关键点坐标,然后根据关键点之间的角度关系判断老人的行为姿态,网络结构如图2所示.从图中可以看出整个网络从第28层开始,不相邻的层之间一直存在依赖关系,因此我们在前27层中选了6个拆分点实现了该模型的预分层,预分层结果如表1所示.

表1 OpenPose模型分层结果

图2 OpenPose模型结构图

3.4 多AI任务调度模型

边缘终端上要执行N个AI任务,则需要部署N个DNN模型,这里我们规定边缘终端上最多同时执行4个AI任务,即N≤4;它们对应的预分层模型个数分别为{L1,L2,…,LN},从每个模型中各选取一个预分层模型,则预分层组合解集里共有(L1×L2×…×LN)个可选解.其中第i个DNN模型Ni对应的预分层模型为Seti={Ni1,Ni2,…,NiLi},第i个DNN的第j个预分层模型表示为Nij;Nij所需计算量为Fij,访存量为Mij,运行时间为Pt_Fij,得到的输出数据结果大小为Dij;边缘终端的可用计算、存储、通信资源表示为Resusable=(Fusable,Musable,Gusable),图片采集所需时间为Ptcap,将输出数据结果传输到边缘服务器端所需时间为Pt_Sij.

我们的目的是运用线性规划算法实现一种多AI任务调度策略,在实时可用资源和Ptime要求的约束下,遍历预分层组合解集,从中选出一个预分层组合解Solution={N1k1,N2k2,…,NNkN}部署到边缘终端上,实现终端设备的可用计算资源的最大化利用,且能在Ptime内完成图片的采集预处理、多AI任务的并行计算和输出数据结果传输.其中多AI任务并行计算所需时间Pt_Calck即为选出的预分层组合解中所需计算时间的最大值,目标函数如公式(19)所示:

Fmax=max(FH1,FH2,…,FHh)

(19)

{N1k1,N2k2,N3k3,…,NNkN}←Fmax

(20)

s.t.1≤h<(L1×L2×…×LN)

(21)

Setn={Nn1,Nn2,…,NnLN},1≤n≤N

(22)

∀N1j1∈Set1,∀N2j2∈Set2,…,∀NNjN∈SetN

(23)

PtCalcj=max(PtF1j1,PtF2j2,…,PtFNjN)

(24)

(25)

C1:Fj=F1j1+F2j2+…+FNjN≤Fusable

(26)

C2:Mj=M1j1+M2j2+…+MNjN≤Musable

(27)

C3:Gj=G1j1+G2j2+…+GNjN≤Gusable

(28)

C4:Ptj≤Ptime

(29)

C5:PtCalH=max(PtCal1,PtCal2,…,PtCal(L1×L2×…×LN))

(30)

约束条件C1、C2、C3确保选出的预分层组合解所需资源不超过边缘终端的可用资源;约束条件C4确保选出的预分层组合解完成图片采集预处理、多AI模型并行计算及输出数据结果传输的全过程所用时间不超过Ptime,满足了实时性的要求;约束条件C5确保选出的预分层组合解所需计算时间最长;在满足以上5个约束条件的基础上,目标函数选出所需计算资源最多的预分层组合解;最后将多AI调度策略得到的预分层组合解及对应的Ptime及可用资源情况记录到任务调度结果表中.算法描述如算法3所示.

算法3.多AI任务调度算法

1.通过函数形参获取到此次计算任务的Ptime及可用的计算、存储、通信资源;

2.Open预分层配置文件;//程序运行结束后要Close

3.新建temp1,temp2数组存储程序时得到的过程解;

4.新建result1数组存储最后得到的预分层组合解;

5.新建两个变量max_compute,max;

6.forj=0开始遍历预分层组合解集 do:

if 满足C1、C2、C3、C4约束条件的要求then

7. 将每个满足条件的可行解及它的Ptj{N1j1,N2j2,…,NNjN,Ptj} 存储到temp1数组;

8.if temp1为空:

9. Return NULL and exit;

10.else

11. 将max_compute赋值为Pt0_F;

12. fori=0开始遍历temp1中的每一个过程解 do:

13. ifPti_F>max_computethen

14.max_compute=Pti_F;

15. 将max_compute对应的{N1i1,N2i2,…,NNiN,Pti}存储到temp2数组中;

16. 将max赋值为F0;

17. fork=0开始遍历temp2中的每一个过程解do:

18. ifFk>maxthen

19.max=Fk;

20.找到max对应的{N1k1,N2k2,…,NNkN}存储到result1数组中;

21.将{Fusable,Musable,Gusable,Ptime,N1k1,N2k2,…,NNkN}记录到任务调度结果表中;

22.Return result1.

经分析可得,算法3由3个单层for循环组成,其时间复杂度如公式(31)所示,它取决于第1个for循环对应的预分层组合解集中的可选解个数(L1×L2×…×LN),找到满足C1~C4约束条件的可行解,存储到temp1数组中;接下来两个循环分别遍历temp1、temp2数组中的可行解(个数分别为T1、T2)和每个可行解中的1个Ptime条件、N个预分层模型,其中temp2数组中存储的是第2个for循环得到的可行解.

Time~O(4×L1×…×LN+(T1+T2)×N)

(31)

4 实 验

4.1 实验环境说明

硬件平台:本文使用NVIDIA的Jetson Nano开发板作为终端设备,配置信息如表2所示;软件平台:Jetson Nano的系统环境为Ubuntu18.04.4 LTS,部署的深度学习框架为CAFFE,同时安装了CMAKE-3.14.0、OPENCV-3.4.5、CUDA-10.2和CUDNN-v8.

表2 Jetson Nano配置信息

4.2 评估指标

我们提出了以下几个指标来评估本文调度策略的性能.

数据传输量减小率是指基于相同的Ptime要求和可用资源情况,未使用本文策略与使用本文策略相比传输的数据量之差和未使用本文策略的数据传输量的比值,能够反映本文策略减少的数据传输量.

(32)

计算时间占比率是指Ptime内多AI任务的计算时间Pt_Cal占全过程所用时间Pt的比例,能够反映边缘终端上执行的AI任务的任务量的多少.

(33)

调度分配成功率是指基于不同的可用资源情况,分别调用本文策略进行多次试验,调度成功的次数与总调度次数的比值,能够反映本文策略的调度性能.

(34)

资源利用率是指在使用本文策略后所用的计算、存储资源与边缘终端当前可用的计算、存储资源的比值,比值越大,说明资源利用率越高.

(35)

(36)

4.3 实验分析

本文实验以3个深度学习模型同时运行在边缘终端平台上为例进行实验,选取的3个模型为:经典模型AlexNet[19]、轻量化模型MobileNet-v2及人体姿态识别模型OpenPose,它们的输入图片尺寸分别为:227×227、224×224、336×256,它们对应的预分层模型各有5个、7个、6个,它们的预分层结果分别如表4、表3、表1所示.

表3 MobileNet-v2预分层结果

表4 AlexNet预分层结果

从每种模型中各选取一个预分层模型组成预分层组合解集,则共有210(6×7×5)种可选解,默认预分层组合解为各个模型的第1个预分层模型.本文实验探讨以上3个模型同时部署应用到边缘终端的实验现象,对于当前可用资源不满足默认预分层组合解所需资源的情况可按照可用资源从3个模型中选择其中一个或者两个模型部署应用到边缘终端,在本文实验中不再予以讨论.

首先采用对比实验,以采用或者未采用本文提出的多AI调度策略作为区分条件,基于多个不同的Ptime要求和可用资源情况进行测试.针对同样的Ptime要求和可用资源情况时,未采用本文策略将默认的预分层组合解部署到Jetson Nano上,另一种方式则将采用本文策略得到的预分层组合解部署到Jetson Nano上;然后分别进行图片采集预处理、多AI任务的并行计算及输出数据结果的传输的全过程,比较这两种方式的计算时间占比率及数据传输量的大小.

图3是Ptime为800ms、可用通信资源Gusable为60MB/s时的计算时间占比率对比图,其中1GFLOPs=1×109FLOPs,1MB=10242Bytes.未采用本文策略时,在不同的可用资源情况下,计算时间Pt_Cal均为123.792ms,全过程所用时间为517.775ms,计算时间占比率Rate_F_unused为23.9%;采用本文策略时,随着可用计算、存储资源的增加,计算时间占比率Rate_F_used不断增大,Rate_F_used从最小为24.91%增大到98.46%,可见本文策略能够有效提高计算时间的占比率,说明采用本文策略时终端设备上计算的DNN模型层数更多.

图3 计算时间占比率对比图

在数据传输量的对比实验中,未使用本文策略时,边缘终端的数据传输量Dataunused=23.63904MB,数据传输量大;使用本文策略时,随着边缘终端可用资源的增加,需要传输的数据量Dataused不断减小,最小的Dataused为0.65625MB,Ratedata=97.22%,能够有效地减少数据传输开销,实验结果如图4所示.

图4 数据传输量对比图

我们也对本文提出的多AI任务调度分配策略的调度分配成功率进行了测试.经过资源监控模块实时检测发现边缘终端上的可用网络资源Gusable在50MB/s~60MB/s之间;在Nano上进行上述3个AI任务的并行计算能够满足的时间周期Ptime有:500ms、600ms、700ms、800ms,分别在这4个时间周期Ptime上测试本文策略的调度分配成功率.通过图5可以发现,在Ptime相对较小的时候,由于可用资源有限,存在分配失败的情况;随着Ptime的增大,调度成功率也相应地增加,当Ptime增大到700ms时,调度成功率可达到100%.实验证明基于不同的可用资源及实时性要求Ptime,本文提出的多AI任务调度策略显示出良好的性能.

图5 本文策略的调度成功率

最后我们测试了使用本文策略后边缘终端上的计算资源和存储资源的利用率.如图6所示,当可用计算资源变化、存储资源不变时,在不同的可用计算资源情况下,计算资源利用率UtilityF均在90%以上,最低为90.61%,最高可达到99.85%,平均利用率可达到96.97%;如图7所示,当存储资源变化、可用计算资源不变时,在不同的可用存储资源情况下,存储资源利用率UtilityM均在90%以上,最低为92.05%,最高可达到99.71%,平均利用率可达到97.04%.证明边缘终端的计算资源和存储资源得到了充分利用.

图6 计算资源利用率

图7 存储资源利用率

5 总 结

本文实现了一种基于模型预分层的边缘终端多AI任务调度策略,可以根据计算任务的Ptime要求和资源监控模块检测到的实时可用资源,动态地调整每个AI任务部署运行在边缘终端上的预分层模型,使得它们能够在终端设备上实现可用计算资源的最大化利用,且能在Ptime内完成图片采集预处理、多AI任务并行计算及输出数据结果的传输.此外还实现了任务调度存储机制,减小了多AI任务调度的工作量.实验表明,本文策略的调度成功率可达到96.43%,计算资源利用率可达到97.04%;与未使用本文策略相比,计算时间占比率增加了74.56%,数据传输量减少了97.22%.后续工作上,还需要进一步提高本文策略的健壮性以应对网络阻塞等突发情况,同时要探索一种更好的通信机制,在保证数据可靠传输的基础上加快传输速率.

猜你喜欢

计算资源终端设备边缘
浅谈信息产业新技术
一种作业调度和计算资源动态分配方法
基于云桌面的分布式堡垒研究
行车记录仪通信连接方法、行车记录仪及终端设备
一张图看懂边缘计算
电力配网自动化中配电自动化终端设备的应用
电网终端设备信息安全研究
电网监视终端与自动化设备的运行维护技术
高校信息资源虚拟化技术的应用与实践
在边缘寻找自我