卷积神经网络的任务调度方法、系统、设备及存储介质

文档序号:31864581发布日期:2022-10-19 08:12阅读:282来源:国知局
卷积神经网络的任务调度方法、系统、设备及存储介质

1.本技术涉及机器学习技术领域,特别涉及一种卷积神经网络的任务调度方法、系统、设备及存储介质。


背景技术:

2.深度学习现在已经广泛应用于各领域,如计算机视觉、医疗保健、自动驾驶等,随着数据规模的爆炸式增长,深度学习对算力的需求也在急剧增加。传统的通用处理器,例如cpu与gpu等,在处理深度学习任务时算力有限且功耗较大,尤其是访存开销非常严重。近年来,专用的深度学习加速器受到广泛关注,这些加速器通常采用脉动阵列架构,这一架构可以有效实现大规模数据重用,从而避免了频繁访存导致的开销。相关技术中,计算处理任务时延的精准度较低,卷积神经网络的对网络任务的响应时间过长,影响图像处理操作的效率。
3.因此,如何降低卷积神经网络的对网络任务的响应时间,提高图像处理效率是本领域技术人员目前需要解决的技术问题。


技术实现要素:

4.本技术的目的是提供一种卷积神经网络的任务调度方法、一种卷积神经网络的任务调度系统、一种电子设备及一种存储介质,能够降低卷积神经网络的对网络任务的响应时间,提高图像处理效率。
5.为解决上述技术问题,本技术提供一种卷积神经网络的任务调度方法,该任务调度方法包括:
6.接收待处理图像,并确定所述待处理图像对应的网络任务;
7.根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型;其中,所述数据流方式为权重固定数据流、输入固定数据流或输出固定数据流;
8.利用所述性能模型计算所述脉动阵列中每一加速器处理每一所述网络任务的时延信息,根据所述时延信息将所有所述网络任务分配至对应的加速器,以便得到所述卷积神经网络对所述待处理图像的图像处理结果。
9.可选的,根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型,包括:
10.根据所述脉动阵列的数据流方式确定卷积层执行时延l
conv

11.根据所述卷积神经网络的输出层大小确定池化层执行时延l
pool

12.确定所述卷积神经网络的缓存时延l
buf
;其中,所述缓存时延l
buf
为卷积核缓存不足的总时延、输入缓存不足的总时延和输出缓存不足的总时延的总和;
13.根据所述卷积神经网络的总层数h、卷积层数h
conv
、池化层数h
pool
、卷积层执行时延l
conv
、池化层执行时延l
pool
和缓存时延l
buf
构建所述性能模型。
14.可选的,根据所述脉动阵列的数据流方式确定卷积层执行时延l
conv
,包括:
15.若所述脉动阵列的数据流方式为权重固定数据流,则利用第一公式计算卷积层执
行时延l
conv

16.若所述脉动阵列的数据流方式为输入固定数据流,则利用第二公式计算卷积层执行时延l
conv

17.若所述脉动阵列的数据流方式为输出固定数据流,则利用第三公式计算卷积层执行时延l
conv

18.其中,所述第一公式为l
conv
=n
t1
×
s1,s1=wo×ho
×
r1+r2;
19.所述第二公式为l
conv
=n
t2
×
s2,s2=k
×
r1+r2;
20.所述第三公式为l
conv
=n
t3
×
s3,s3=f
conv
×fconv
×di
×
r1+r2;
21.f
conv
表示卷积核的高度,di表示卷积输入层深度,nr表示脉动阵列的行数,k表示卷积核数量,nc表示脉动阵列的列数,wo表示输出层的宽度,ho表示输出层的高度,r1表示一次乘加操作的时延,r2表示并行任务启动的时延。
22.可选的,所述脉动阵列包括异构的脉动阵列加速器群;
23.相应的,根据所述时延信息将所有所述网络任务分配至对应的加速器,包括:
24.在约束条件下将所有所述网络任务分配至对应的加速器;其中,所述约束条件为脉动阵列加速器群处理所有所述网络任务的整体时延最小。
25.可选的,在根据所述时延信息将所有所述网络任务分配至对应的加速器之后,还包括:
26.对所述加速器的任务队列中的网络任务设置优先级分数;
27.控制所述加速器按照优先级分数从高到低的顺序处理对应的网络任务;
28.在所述加速器处理完一个网络任务后,增加任务队列的所有网络任务的优先级分数。
29.可选的,根据所述时延信息将所有所述网络任务分配至对应的加速器之后,还包括:
30.判断所述加速器的任务队列中的网络任务是否符合分解标准;其中,所述分解标准为分解所述网络任务后处理所有所述网络任务的整体时延降低;
31.若是,则将所述网络任务分解为多个子任务,并将所述子任务作为新的网络任务分配至对应的加速器。
32.可选的,在将所述网络任务分解为多个子任务之后,还包括:
33.确定所有所述子任务的执行顺序,控制所述脉动阵列按照所述执行顺序逐个处理所述子任务。
34.本技术还提供了一种卷积神经网络的任务调度系统,该系统包括:
35.任务确认模块,用于接收待处理图像,并确定所述待处理图像对应的网络任务;
36.模型构建模块,用于根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型;其中,所述数据流方式为权重固定数据流、输入固定数据流或输出固定数据流;
37.任务处理模块利用所述性能模型计算所述脉动阵列中每一加速器处理每一所述
网络任务的时延信息,根据所述时延信息将所有所述网络任务分配至对应的加速器,以便得到所述卷积神经网络对所述待处理图像的图像处理结果。
38.本技术还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述卷积神经网络的任务调度方法执行的步骤。
39.本技术还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述卷积神经网络的任务调度方法执行的步骤。
40.本技术提供了一种卷积神经网络的任务调度方法,包括:接收待处理图像,并确定所述待处理图像对应的网络任务;根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型;其中,所述数据流方式为权重固定数据流、输入固定数据流或输出固定数据流;利用所述性能模型计算所述脉动阵列中每一加速器处理每一所述网络任务的时延信息,根据所述时延信息将所有所述网络任务分配至对应的加速器,以便得到所述卷积神经网络对所述待处理图像的图像处理结果。
41.本技术在接收到待处理图像后确定需要处理的网络任务,根据脉动阵列的数据流方式构建相应的性能模型,并基于该性能模型计算每一加速器处理各个网络任务的时延信息。本技术根据各个加速器处理网络任务的时延信息进行网络任务分配以便减少所有加速器处理网络任务的整体时延,进而根据各个加速器的输出得到待处理图像的图像处理结果。本技术能够降低卷积神经网络的对网络任务的响应时间,提高图像处理效率。本技术同时还提供了一种卷积神经网络的任务调度系统、一种电子设备及一种存储介质,具有上述有益效果,在此不再赘述。
附图说明
42.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1为本技术实施例所提供的一种卷积神经网络的任务调度方法的流程图;
44.图2为本技术实施例所提供的一种面向8*8脉动阵列的输出固定数据流的实现方式示意图;
45.图3为本技术实施例所提供的一种面向27*27脉动阵列的权重固定数据流的实现方式示意图;
46.图4为本技术实施例所提供的一种数组加链表原理示意图;
47.图5为本技术实施例所提供的一种异构脉动阵列加速器群的架构示意图。
具体实施方式
48.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.下面请参见图1,图1为本技术实施例所提供的一种卷积神经网络的任务调度方法
的流程图。
50.具体步骤可以包括:
51.s101:接收待处理图像,并确定所述待处理图像对应的网络任务;
52.其中,本实施例可以应用于包括卷积神经网络的电子设备,该卷积神经网络可以为应用于目标检测、背景除去、文字识别等图像处理的卷积神经网络。例如,可以输出待处理图像的目标检测结果、背景去除结果或文字识别结果。
53.卷积神经网络是一种以卷积为主要操作的深度学习技术。它主要由卷积、池化和全连接等不同的层连接在一起组成,且前一层的输出通常作为下一层的输入。卷积神经网络通过多个卷积与池化层完成对输入图片特征的提取,最后使用全连接层完成识别,例如卷积神经网络为一个由两个卷积层、两个池化层以及一个全连接层组成的网络,卷积神经网络可以对输入图像中的特定目标进行识别。
54.卷积操作占卷积神经网络整体计算量的比重通常超过90%,本实施例重点针对卷积操作进行优化。卷积操作可以将一个三维的输入层和一个或多个三维的卷积核做特定运算以得到三维的输出层,这三个维度通常称为高度、宽度以及深度,且卷积核的高度和宽度通常相等。卷积神经网络中具体的卷积计算过程如下。首先,卷积核和输入层左上角的相同大小的对象矩阵(在无填充的情况下)做逐元素乘加,再经过非线性变换f后得到输出层的一个元素。然后,进行滑窗操作(即选取上一步对象矩阵右侧或下方的对象矩阵),重复上述乘加以及非线性操作直至得到一个二维的输出层矩阵。如果有n个卷积核,则每个卷积核都会对应一个二维输出层矩阵,即输出层的深度也为n。此外,在有填充的情况下(通常填充值为0),输入层的高度和深度两个维度会向外扩展,其他的操作保持不变。池化层一般在卷积层之后,它与卷积层的区别在于它进行取平均或取最大值操作而非卷积操作,其目的是为了简化卷积层的输出并降低噪声影响。全连接层可以看作是卷积层的一种特殊形式,在全连接层中,输入层和卷积核的任意元素均相连。
55.s102:根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型;
56.其中,本实施例中的卷积神经网络可以基于脉动阵列实现,每一种型号的脉动阵列具体有对应的数据流方式,例如数据流方式可以为权重固定数据流、输入固定数据流或输出固定数据流,本步骤可以根据所述卷积神经网络所在脉动阵列的数据流方式构建对应的性能模型。本实施例建立了卷积神经网络任务在三种数据流(权重固定、输入固定、输出固定)脉动阵列加速器上的性能模型,仿真验证结果表明模型可以达到较高的准确率。
57.s103:利用所述性能模型计算所述脉动阵列中每一加速器处理每一所述网络任务的时延信息,根据所述时延信息将所有所述网络任务分配至对应的加速器,以便得到所述卷积神经网络对所述待处理图像的图像处理结果。
58.其中,脉动阵列中可以包括多个加速器,不同加速器对网络任务的处理速度不相同,本步骤在得到性能模型之后利用该性能模型计算脉动阵列中每一加速器处理每一所述网络任务的时延信息,进而根据与时延信息将所有的网络任务进行分配,以使脉动阵列加速器群处理所有所述网络任务的整体时延最小。
59.作为一种可行的实施方式,脉动阵列包括异构的脉动阵列加速器群,各个脉动阵列加速器群的尺寸不同;相应的,可以通过以下方式分配网络任务:在约束条件下将所有所述网络任务分配至对应的加速器;其中,所述约束条件为脉动阵列加速器群处理所有所述
网络任务的整体时延最小。
60.本实施例在接收到待处理图像后确定需要处理的网络任务,根据脉动阵列的数据流方式构建相应的性能模型,并基于该性能模型计算每一加速器处理各个网络任务的时延信息。本实施例根据各个加速器处理网络任务的时延信息进行网络任务分配以便减少所有加速器处理网络任务的整体时延,进而根据各个加速器的输出得到待处理图像的图像处理结果。本实施例能够降低卷积神经网络的对网络任务的响应时间,提高图像处理效率。
61.作为对于图1对应实施例的进一步介绍,本实施例可以通过以下方式构建性能模型:
62.步骤a1:根据所述脉动阵列的数据流方式确定卷积层执行时延l
conv
;根据所述卷积神经网络的输出层大小确定池化层执行时延l
pool

63.步骤a2:确定所述卷积神经网络的缓存时延l
buf
;其中,所述缓存时延l
buf
为卷积核缓存不足的总时延、输入缓存不足的总时延和输出缓存不足的总时延的总和;
64.步骤a3:根据所述卷积神经网络的总层数h、卷积层数h
conv
、池化层数h
pool
、卷积层执行时延l
conv
、池化层执行时延l
pool
和缓存时延l
buf
构建所述性能模型。
65.具体的,若所述脉动阵列的数据流方式为权重固定数据流,则利用第一公式计算卷积层执行时延l
conv
,其过程如下:
66.第一公式为l
conv
=n
t1
×
s1,s1=wo×ho
×
r1+r2。
67.若所述脉动阵列的数据流方式为输入固定数据流,则利用第二公式计算卷积层执行时延l
conv
,其过程如下:
68.第二公式为l
conv
=n
t2
×
s2,s2=k
×
r1+r2。
69.若所述脉动阵列的数据流方式为输出固定数据流,则利用第三公式计算卷积层执行时延l
conv
,其过程如下:
70.第三公式为l
conv
=n
t3
×
s3,s3=f
conv
×fconv
×di
×
r1+r2;
71.以上公式中,f
conv
表示卷积核的高度,di表示卷积输入层深度,nr表示脉动阵列的行数,k表示卷积核数量,nc表示脉动阵列的列数,wo表示输出层的宽度,ho表示输出层的高度,r1表示一次乘加操作的时延,r2表示并行任务启动的时延。s1、s2、s3为三种数据流方式下的串行任务映射一次的计算量,n
t1
、n
t2
、n
t3
为三种数据流方式下的重映射次数。
72.作为一种可行的实施方式,在根据所述时延信息将所有所述网络任务分配至对应的加速器之后,还可以利用优先级分数设置加速器处理各个网络任务的顺序,具体过程如下:
73.步骤b1:对所述加速器的任务队列中的网络任务设置优先级分数;
74.步骤b2:控制所述加速器按照优先级分数从高到低的顺序处理对应的网络任务;
75.步骤b3:在所述加速器处理完一个网络任务后,增加任务队列的所有网络任务的优先级分数。
76.本实施例提出了面向异构的脉动阵列加速器群的调度方法,此方法在准确估计各
加速器任务队列总时间的基础上实现任务的优化分配,兼顾负载任务网络结构特点与加速器负载均衡,同时进一步支持基于优先级的任务重排列、抢占以及迁移,从而保障高优先级任务能够优先完成。
77.作为一种可行的实施方式,在根据所述时延信息将所有所述网络任务分配至对应的加速器之后,还可以判断所述加速器的任务队列中的网络任务是否符合分解标准;其中,所述分解标准为分解所述网络任务后处理所有所述网络任务的整体时延降低;若是,则将所述网络任务分解为多个子任务,并将所述子任务作为新的网络任务分配至对应的加速器。相应的,在将所述网络任务分解为多个子任务之后,还可以确定所有所述子任务的执行顺序,控制所述脉动阵列按照所述执行顺序逐个处理所述子任务。
78.本实施例提出一种基于层的卷积神经网络任务分解方案,能够对负载任务进行进一步分解,从而实现子任务在异构加速器群上的更优化执行。
79.下面通过在实际应用中的实施例说明上述实施例描述的流程。
80.脉动阵列(systolic array)是一种由多个相同的处理单元(processing element,即pe)按照一定的互联规则组成的网络结构,例如脉动阵列是一个二维的脉动阵列结构。其中每一个处理单元负责一个乘加操作,且与上下左右的其他处理单元相连接。从内存读取输入层和卷积核数据并载入到相应缓存后(例如分别载入上方与左侧的缓存),脉动阵列从缓存中读取相应数据、完成卷积操作并将结果写入缓存。在此过程中,每个处理单元将接受相邻处理单元传递的数据,进行乘加操作并保存其结果,然后会将接受的数据向其他相邻处理单元传递。卷积操作具有高度的数据复用性,脉动阵列通过在相邻的处理单元之间转发数据来提高数据的重用,避免了频繁的访存,从而降低处理器能耗和时延,因此非常适合在脉动阵列执行。
81.脉动阵列架构的特点在于其实现了数据在处理单元阵列内部的流动,因此数据流动的方式极大地影响了脉动阵列的处理效率。常见的数据流方式包输出固定(output stationary),权重固定(weight stationary)和输入固定(input stationary),下文分别说明三种数据流方式。
82.在输出固定数据流方式下,脉动阵列处理单元与输出层的特定元素相对应,并在其中完成所有相关的乘法与累加操作。图2展示了一种面向8*8脉动阵列的输出固定数据流的实现方式,每一个处理单元对应一个输出层元素,脉动阵列的每一列对应一个卷积核,输入层和卷积核数据分别从阵列的左边缘和上边缘同时输入到阵列里。图2中a1、b1、c1、d1、e1、o1、m1、n1、m3、n3、o3和y3表示输入层数据,a1、b1、c1、i3、a1’、b1’、c1’、i3’、a1”、b1”、c1”、i3”表示卷积核数据。以左上角的处理单元为例,在第1周期,输入层数据a1和卷积核数据a1被同时载入此单元进行乘法,在下一周期,a1和a1分别被传递到下方与右侧的处理单元,分别进行a1与a1’的乘加以及b1与a1的乘加操作,同时左上角单元进行b1与b的乘法,数据不断流动,直至得到所有输出层元素。
83.在权重固定数据流方式下,脉动阵列中的一个处理单元通常对应一个权重(即将一个权重存入一个处理单元并保存一段时间),而输入层数据在阵列中流动。一个输出层元素通常对应多个处理单元(例如一列),并且需要执行缩减操作将这些处理单元的结果累加以得到最终结果。图3展示了一种面向27*27脉动阵列的权重固定数据流的实现方式,图3中a1、i1、i2和i3表示权重,a1、b1、n1、m1、y1、n2、m2、y2、m3、n3、y3表示输入层数据。权重a1,i1
等被载入相应处理单元保持一段时间固定。输入层数据从阵列的左边缘输入,与一个处理单元进行乘法之后将被传到右侧的处理单元。此阵列的一列对应一个输出层元素,因此需要将此列的运算结果从上到下传递并累加以得到最终输出。
84.输入固定数据流方式与权重固定数据流方式相似,区别在于把输入图像的数据固定到pe阵列中,而权重以脉动的方式在pe阵列里进行流动。采用不同的数据流方式可能导致处理效率的巨大差异。以输出固定方式为例,当输出层数据规模太小,采用输出固定方式可能导致硬件资源占用率过低,而当输出层数据规模太大,需要将其拆分并多次映射到脉动阵列,这样会有导致额外开销以及数据重用性的降低。权重固定(输入固定)方式也存在同样问题,即当卷积核(输入层)数据规模大小合适的时候,其处理效率最优。此外,阵列大小决定了并行度,对处理性能有直接影响。因此,要达到较优的处理效率,需要针对卷积数据规模选择合适的脉动阵列大小以及数据流方式。
85.构建脉动阵列的性能模型的过程如下:
86.卷积神经网络在脉动阵列上的执行效率不仅取决于网络的任务规模,也取决于脉动阵列的结构与数据流方式。本实施例以上述三种数据流方式所相应的性能模型来对时延进行准确估计。定义wi,hi以及di分别为卷积输入层的高度、宽度以及深度。k为卷积核的数量(即输出层深度),卷积核的高度和宽度通常相等且其深度与输入层相同,定义其大小为f
conv
×fconv
×di
。定义stride为输入层的卷积步长,p为输入层的填充大小。输出层的高度、宽度以及深度分别表示为wo,ho以及k,其与输入层维度之间的关系为式(1)所示。
[0087][0088]
定义c为得到输出层所需要的乘加(multiply and accumulation)计算量,它等于输出层的大小乘以每个卷积操作中的乘加数,如下式(2)所示。
[0089]
c=wo×ho
×k×fconv
×fconv
×di
ꢀꢀ
式(2);
[0090]
定义nr,nc分别为二维脉动阵列的行数和列数,则总的处理单元的数量为n(n=nr×
nc)。卷积神经网络计算任务可以被近似分解为并行任务m和串行任务执行一次的计算量s的乘积。由于脉动阵列的并行度为有限的n,并行任务m需要重复映射多次到脉动阵列上执行,定义n
t
为重映射次数。整个卷积层在脉动阵列执行时延l
conv
可以表示为式(3)。
[0091]
l
conv
=n
t
×sꢀꢀ
式(3);
[0092]
不同数据流方式对应的不同的串并行任务分配方式。对于权重固定方式,权重先被载入到处理单元中,输入层在阵列中流动,即式(2)中的k
×fconv
×fconv
×di
部分为并行任务,串行任务由式(2)中其他部分(即输出层数据规模)所确定。为了方便硬件架构设计,一种通常采用的方式为f
conv
×fconv
×di
与k分别以行和列为单位进行任务映射。定义r1表示一次乘加操作的时延,而r2为并行任务启动的时延开销,对于权重固定方式可以得到下式(4)。
[0093][0094]
输入固定与权重固定类似,输入层相应数据先被载入到处理单元中(并行处理部分),而权重在脉动阵列中流动(串行处理部分)。为了方便硬件架构设计,一种通常采用的
方式为f
conv
×fconv
×di
与wo×ho
分别以行和列为单位进行任务映射。因此可以得到下式(5)。
[0095][0096]
对于输出固定,每个输出层元素对应一个处理单元,即式(2)中wo×ho
×
k为并行部分,而f
conv
×fconv
×di
为串行部分。为了方便硬件架构设计,一种通常采用的方式为wo×ho
与k分别以行和列为单位进行任务映射,因此可以得到下式(6)。
[0097][0098]
池化层执行时延l
pool
取决于输出层的大小,将其输出层大小表示为wo×ho
×do
,每个池化操作时延为r3,可以得出池化层执行时延的表达式如下。
[0099]
l
pool
=r3×
wo×ho
×kꢀꢀ
式(7);
[0100]
除了卷积与池化层本身的计算时延,缓存(包括输入、卷积核以及输出缓存)的不足将导致也会导致额外时延l
buf
。定义lk与nk分别为一次卷积核缓存不足的时延以及发生次数,li与ni分别为一次输入缓存不足的时延以及发生次数,lo与no分别为一次输出缓存不足的时延以及发生次数,则l
buf
可以表示为下式。
[0101]
l
buf
=nk×
lk+ni×
li+no×
loꢀꢀ
式(8);
[0102]
定义h为卷积神经网络总层数,其中h
conv
为卷积层的数量,h
pool
为池化层的数量。整个卷积神经网络在脉动阵列上执行时延l可以表示为各卷积与池化层时延、缓存不足额外时延以及其他部分的和,如下式所示。
[0103][0104]
其中,分别表示第i个卷积与池化层的时延,表示第i层缓存不足导致的时延。由于其他部分的时延较低,用常量r4近似表示。另外,访存开销的计算公式为数据量除以带宽。对于第一层,需要从内存载入输入层与卷积核。对于其它层,其输入是前一层的输出,已经存在于缓存中,因此只需载入卷积核。在良好的架构设计下,访存通常可以实现与计算的并行,因此总时延公式中未包含访存的开销,但在很多特殊情况下,需要对其进行考虑。
[0105]
相关技术中,herald的层调度算法没有考虑每个负载任务的响应,导致紧急的负载任务的响应时间可能过长。基于prema调度器的调度算法只支持单个脉动阵列的任务调度,虽然它能优化任务的时延需求,但prema的平均标准化周转时间会永远高于sjf,且它的抢占机制设计的过于复杂并且依赖于对任务进度的划分。针对上述相关技术存在的就似乎问题,本技术提供一种面向异构脉动阵列加速器群的细粒度调度方法,其过程如下:
[0106]
卷积神经网络在不同配置的脉动阵列上的处理性能有很大差异,在面向大量任务时,同构的加速器群难以达到较好的处理效率,因此需要采用异构的脉动阵列加速器群。针对不同卷积神经网络任务特点进行合理调度是异构加速器群架构面临的一个重要问题,其核心挑战包括选择合适的加速器以及加速器的负载均衡。
[0107]
异构脉动阵列加速器群的任务调度如下:
[0108]
定义m个卷积神经网络任务e1,e2,

,em,且这些任务在含有n个加速器(分别表示为a1,a2,

,an)的异构加速器群上执行。每个任务只能分配到一个加速器上执行,且将ei任务分配到aj加速器上执行时延表示为t(ei,aj)(可由式(9)计算得出)。ak加速器的时延是所有分配到此加速器的任务时延之和,即显然,加速器群的整体性能由最慢的决定。异构脉动阵列加速器群的任务调度的目标是找到一种任务分配方案,使得整体时延最低,如下式所示。
[0109][0110]
求解式(10)需要较高复杂度,本实施例提高一种快速的贪婪方法,根据卷积神经网络任务的计算量的顺序从大到小进行分配,这样可以尽量保证每个加速器负载均衡。在分配每个任务的时候,首先计算其在所有加速器上的时延,然后考虑每个加速器的任务队列情况,选择对整体性能影响最小的方式进行分配。
[0111]
本实施例提供设计的异构脉动阵列调度方法hsas(heterogeneous systolic array scheduler)如算法1所示。算法的输入是任务e1,e2,

,em,以及加速器a1,a2,

,an,输出是任务队列q1,q2,

,qn。首先,在第2行对于所有的加速器aj,初始化其对应队列qj为空且将队列时延sj置零。根据式(2)计算得出所有任务的计算量,并对任务进行由大到小排序,排序后将任务以此重命名为e1,e2,

,em。因此,e1是计算量最大的任务,而em是计算量最小的。在第4-9行,从1到m依次遍历所有任务。对于每个任务,计算其在所有加速器的时延,如第5行所示。选择分配后队列时延最短的加速器进行任务分配,即对所有j找到t(ei,aj)+sj的最小值并赋值为j,如第6行所示。最后,更新sk并将ei加入队列qk,以完成任务分配。此算法的复杂度为o(m
×
n)。
[0112]
算法1:异构脉动阵列加速器群的任务调度算法hsas;
[0113]
输入:任务e1,e2,

,em,加速器a1,a2,

,an;
[0114]
输出:任务队列q1,q2,

,qn;
[0115]
第1行:对于所有aj(j=1,2,

,n),初始化对应队列qj以及队列总时延sj;
[0116]
第2行:对于所有ei(i=1,2,

,m),计算c;
[0117]
第3行:根据c对任务e1,e2,

,em进行从大到小排序并重命名;
[0118]
第4行:for i=1,2,

,m;
[0119]
第5行:对于所有aj(j=1,2,

,n)计算t(ei,aj);
[0120]
第6行:
[0121]
第7行:sk=t(ei,ak)+sk;
[0122]
第8行:将ei加入队列qk;
[0123]
第9行:end for。
[0124]
实时任务通常具有不同优先级,需要考虑任务的抢占以及迁移,以保证高优先级任务按时完成。在算法1完成任务分配后,每个队列需要考虑其中任务自身优先级以及其等待时间,并以此决定任务的排序。对于高优先级的任务,允许其中断现有任务进行执行,被中断任务则迁移至内存并再次进行任务分配。具体方法如下,队列中每个任务对应一个优
先级分数,任务按照分数从高到低排列。例如,将优先级分为高中低三挡,对应初始优先级分别为5、3和1。任务在每等待一个任务之后,其优先级分数会加1,这样低优先级任务也有机会得到执行。当新任务的分数高于当前正在执行任务的分数,并且当前任务的剩余部分执行时延大于一个迁移时延阈值,新任务会中断当前任务。
[0125]
基于层的细粒度任务调度方法如下:
[0126]
卷积神经网络的不同层之间具有极大差异性,为了进一步提升异构脉动阵列加速器群的处理效率,本文提出一种基于层的细粒度调度方法。由于卷积层运算是卷积神经网络中的主要运算,本实施例主要考虑卷积层的调度。不同于任务级调度,基于层的调度方法可以将不同卷积层分配到最适合的加速器上。例如,前一个卷积层分配到一个加速器,而后一个卷积层分配到另一个。这样的分配方式带来额外开销,前一层的输出经过中间池化层后是下一层的输入,两层在同一加速器上执行时,前一层输出被放入缓存,在下一层开始时可以直接使用,但如果分配到不同加速器,则前一层输出需要被放入内存,并在下一层开始时需要再从内存载入。因此,把相邻两层分配到不同加速器的额外开销的计算方式为前一层输出(即后一层的输入)的一次存入和一次取出时延之和,即前一层输出数据流除以带宽再乘以2。当特定卷积层分配到某个加速器,其后的池化层也在同一加速器执行,全连接层与最后的卷积层在同一加速器执行。
[0127]
对于一个卷积神经网络任务,为了找到最优的层分配方案,本实施例设计了一种基于二分法的任务分解算法。算法首先以整个任务为单位,将其分配到最优加速器,然后遍历所有的二分方式,如果分解后的方案优于分解前,那么就将整个任务分解为两个子任务,然后针对各个子任务重复上述过程,直到不能分解为止。算法具体过程如算法2所示。定义待分解的卷积神经网络卷积层数为p,e
1~p
表示由第1个卷积层到第p个卷积层组成的任务,gi是第i个卷积层的输出数据量,b是访存带宽。算法第1行,首先针对整个任务e
1~p
找到最优的加速器ab,并将对应时延表示为tb。在算法第2行定义task_decomp函数实现对任务的分解。将p层卷积神经网络一分为二的方式一共有p-1种,在算法第3行到第14行对所有可能的分解方式进行遍历。第i次循环判断是否在第i层进行分解,将第1层到第i层组成的子任务表示为e
1~i
,在第4行求解找到其最优加速器a
b1
和对应时延t
b1
,将第i+1层到第p-1层组成的子任务表示为e
i+1~p-1
,在第5行求解找到其最优加速器a
b2
和对应时延t
b2
,在第6行计算访存的额外开销。如果分解后的总时延与额外开销的和t
b1
+t
b2
+p小于tb,则在第i层对任务进行分解,并对子任务e
1~i
和e
i+1~p-1
递归调用task_decomp函数进行更细粒度的分解。如果不进行任务分解,则将整个任务加入任务数组,如算法第12行所示。
[0128]
算法2:基于层的卷积神经网络任务分解算法;
[0129]
输入:任务e
1~p
,加速器a1,a2,

,an;
[0130]
输出:任务数组q;
[0131][0132][0133]
基于层的细粒度任务调度方法的步骤如下,使用算法2对所有任务进行分解,然后以所有分解后的任务为对象,使用算法1完成任务调度。当考虑任务优先级时,由于子任务之间存在依赖关系,需要对不同子任务的优先级进行有效管理,而不能直接继承父任务的优先级。例如,高优先级任务e1分解为e
1_1
,e
1_2
和e
1_3
,显然e
1_2
,e
1_3
需要在
e1_1
完成后才能开始,这样即使e
1_2
,e
1_3
均具有高优先级也不能立即执行。因此,本实施例给同一父任务分解后形成的子任务分配递减的优先级,例如,e
1_1
的优先级为5,e
1_2
的优先级为4,e
1_3
的优先级为3。当前一个子任务执行完之后,后一个子任务的优先级的应该恢复到与前一子任务相同的数值,从而保证其能够被快速执行。本实施例设计了子任务优先级管理表,它采用了数组加链表的形式,如图4所示,以记录并管理各子任务的优先级。数组中每个元素对应一个任务,例如图4中数组第一个元素对应e1。数组元素中保存了一个链表的表头,且链表中每个节点保存一个子任务对应加速器以及其优先级,例如图4中数组第一个元素保存了指向与e1对应的子任务链表的表头,链表第一个节点对应e
1_1
且其优先级为5,第二个节点对应e
1_2
且其优先级为4(相对e
1_1
递减)。链表中所有的子任务都按照顺序排列(即e
1_1
必须先于e
1_2
执行),在e
1_1
执行完以后,它将被移出链表,e
1_2
的优先级将被提升为5,从而确保其能够尽快得到执行。
[0134]
在面向大量任务时,由不同规模的脉动阵列组成的异构加速器群,相对于同构加速器群有更大优势。针对不同卷积神经网络任务特点进行合理调度是异构加速器群架构面临的一个重要问题,其核心挑战包括选择合适的加速器以及加速器的负载均衡。本文建立脉动阵列加速器性能模型,并以之为基础设计了面向异构的脉动阵列加速器群的调度方法hsas。此方法在考虑负载任务对不同加速器的适配性的同时,也兼顾不同加速器间的负载
均衡,还支持基于优先级的任务重排列、抢占以及迁移,从而保障高优先级任务优先完成。为了进一步支持更细粒度的层级调度,本文还设计了任务分解算法,从而同时实现了对任务级与层级调度的支持。实验表明,hsas与先来先服务、最短作业优先以及基于优先级调度方法相比,无论是标准化周转时间、系统吞吐量或公平性,hsas在各项指标上都可以基本与上述方法中的最优水平持平,且在部分指标上可以有超过20%的提升,在允许抢占的情况下,最大提升可以超过40%。对于更细粒度的层级调度,hsas的优势更加明显,非抢占式的提升普遍可以达到10%以上,抢占式的提升在23%-44%之间。请参见图5,图5为本技术实施例所提供的一种异构脉动阵列加速器群的架构示意图,总线与带宽控制单元和任务控制单元连接,加速器1、2、

、n通过缓存与总线连接,任务控制单元可以控制各个加速器对应的队列1、2、

、n中的任务执行顺序。
[0135]
本技术实施例还提供一种卷积神经网络的任务调度系统,该系统可以包括:
[0136]
任务确认模块,用于接收待处理图像,并确定所述待处理图像对应的网络任务;
[0137]
模型构建模块,用于根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型;其中,所述数据流方式为权重固定数据流、输入固定数据流或输出固定数据流;
[0138]
任务处理模块,用于利用所述性能模型计算所述脉动阵列中每一加速器处理每一所述网络任务的时延信息,根据所述时延信息将所有所述网络任务分配至对应的加速器,以便得到所述卷积神经网络对所述待处理图像的图像处理结果。
[0139]
本实施例在接收到待处理图像后确定需要处理的网络任务,根据脉动阵列的数据流方式构建相应的性能模型,并基于该性能模型计算每一加速器处理各个网络任务的时延信息。本实施例根据各个加速器处理网络任务的时延信息进行网络任务分配以便减少所有加速器处理网络任务的整体时延,进而根据各个加速器的输出得到待处理图像的图像处理结果。本实施例能够降低卷积神经网络的对网络任务的响应时间,提高图像处理效率。
[0140]
进一步的,模型构建模块根据所述卷积神经网络所在脉动阵列的数据流方式构建性能模型的过程包括:根据所述脉动阵列的数据流方式确定卷积层执行时延lconv;根据所述卷积神经网络的输出层大小确定池化层执行时延lpool;确定所述卷积神经网络的缓存时延lbuf;其中,所述缓存时延lbuf为卷积核缓存不足的总时延、输入缓存不足的总时延和输出缓存不足的总时延的总和;根据所述卷积神经网络的总层数h、卷积层数hconv、池化层数hpool、卷积层执行时延lconv、池化层执行时延lpool和缓存时延lbuf构建所述性能模型。
[0141]
进一步的,模型构建模块根据所述脉动阵列的数据流方式确定卷积层执行时延lconv的过程包括:若所述脉动阵列的数据流方式为权重固定数据流,则利用第一公式计算卷积层执行时延lconv;若所述脉动阵列的数据流方式为输入固定数据流,则利用第二公式计算卷积层执行时延lconv;若所述脉动阵列的数据流方式为输出固定数据流,则利用第三公式计算卷积层执行时延lconv;其中,第一公式为lconv=nt1
×
s1,s1=wo
×
ho
×
r1+r2;第二公式为lconv=nt2
×
s2,s2=k
×
r1+r2;第三公式为lconv=nt3
×
s3,s3=fconv
×
fconv
×
di
×
r1+r2;fconv表示卷积核的高度,di表示卷积输入层深度,nr表示脉动阵列的行数,k表示卷积核数
量,nc表示脉动阵列的列数,wo表示输出层的宽度,ho表示输出层的高度,r1表示一次乘加操作的时延,r2表示并行任务启动的时延。
[0142]
进一步的,所述脉动阵列包括异构的脉动阵列加速器群;
[0143]
相应的,任务处理模块根据所述时延信息将所有所述网络任务分配至对应的加速器的过程包括:在约束条件下将所有所述网络任务分配至对应的加速器;其中,所述约束条件为脉动阵列加速器群处理所有所述网络任务的整体时延最小。
[0144]
进一步的,还包括:
[0145]
优先级设置模块,用于在根据所述时延信息将所有所述网络任务分配至对应的加速器之后,对所述加速器的任务队列中的网络任务设置优先级分数;还用于控制所述加速器按照优先级分数从高到低的顺序处理对应的网络任务;还用于在所述加速器处理完一个网络任务后,增加任务队列的所有网络任务的优先级分数。
[0146]
进一步的,还包括:
[0147]
任务拆分模块,用于根据所述时延信息将所有所述网络任务分配至对应的加速器之后,判断所述加速器的任务队列中的网络任务是否符合分解标准;其中,所述分解标准为分解所述网络任务后处理所有所述网络任务的整体时延降低;若是,则将所述网络任务分解为多个子任务,并将所述子任务作为新的网络任务分配至对应的加速器。
[0148]
进一步的,还包括:
[0149]
顺序控制模块,用于在将所述网络任务分解为多个子任务之后,确定所有所述子任务的执行顺序,控制所述脉动阵列按照所述执行顺序逐个处理所述子任务。
[0150]
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0151]
本技术还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0152]
本技术还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
[0153]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
[0154]
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的状况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1