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

一种矩阵数据的处理方法、装置、电子设备及存储介质与流程

2022-06-01 16:59:06 来源:中国专利 TAG:


1.本发明涉及机器学习领域,更具体的说,是涉及一种矩阵数据的处理方法、装置、电子设备及存储介质。


背景技术:

2.随着机器学习的快速发展,递归神经网络(rnn,recurrent neural networks)已被证明具有许多重要应用程序的有用特性。由于它们可以记录先前的信息以提高预测精度,因此rnn被应用于诸如语音识别,自然语言处理和视频分类,并被开发研究出多种变体。其中,在许多rnn变体中,两个最受欢迎的是长短期记忆网络(lstm)和门控循环单元(gru)。但是,rnn计算中的数据依赖性使系统停滞,直到所需的隐藏向量从完整管道返回以开始下一个时间步长计算为止,如图1a所示,在图1a中,必需等隐藏向量h
t
返回才开始下一个时间步长计算。而且,通常使用较深的流水线来达到较高的工作频率,由于需要清空系统流水线,因此使停滞损失的情况更糟,在停滞的过程中使硬件资源闲置,目前大多数硬件加速器只能支持运行一个模型,多个模型并行计算的时候,会依次运行,这降低了系统效率,增加了系统延时,如图1b所示,计算内核依次执行三个模型lstm1、lstm2、lstm3,其中,模型lstm1中包括两个时间步,分别为ts1、ts2,在ts1、ts2之间存在一个停滞idel,模型lstm2中包括三个时间步,分别为ts1、ts2、ts3,则存两个停滞idel,模型lstm3中包括两个时间步,分别为ts1、ts2,存在一个停滞idel。因此,现有的rnn对硬件资源的利用率不高,而且,需要多个模型并行计算时,硬件系统的效率低。
3.申请内容
4.本发明的目的是针对上述现有技术存在的缺陷,提供一种矩阵数据的处理方法,提高rnn对硬件资源的利用率,通过灵活配置多线程硬件资源从而可以在多个模型并行情况下,提高硬件系统的效率。
5.本发明的目的是通过以下技术方案来实现的:
6.第一方面,本发明实施例提供一种矩阵数据的处理方法,用于递归神经网络,所述方法包括:
7.获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;
8.根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;
9.根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;
10.根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;
11.通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
12.可选的,所述根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程,包括:
13.根据所述数据处理任务的数量,配置对应数量的管道线程;
14.根据所述时间轴关系,配置对应管道线程的线程长度和线程起始时间点。
15.可选的,所述通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果,包括:
16.将所述管道线程加载到计算内核;
17.通过所述计算内核对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
18.可选的,所述通过所述计算内核对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果,包括:
19.当所述计算内核遇到数据阻塞时,则切换所述管道线程。
20.第二方面,本发明实施例还提供一种矩阵数据的处理装置,用于递归神经网络,所述装置包括:
21.获取模块,用于获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;
22.匹配模块,用于根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;
23.处理模块,用于根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;
24.配置模块,用于根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;
25.计算模块,用于通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
26.可选的,所述配置模块包括:
27.第一配置单元,用于根据所述数据处理任务的数量,配置对应数量的管道线程;
28.第二配置单元,用于根据所述时间轴关系,配置对应管道线程的线程长度和线程起始时间点。
29.可选的,所述计算模块,包括:
30.加载单元,用于将所述管道线程加载到计算内核;
31.计算单元,用于通过所述计算内核对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
32.可选的,所述计算单元还用于当所述计算内核遇到数据阻塞时,则切换所述管道线程。
33.第三方面,提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例提供的矩阵数据的处理方法中的步骤。
34.第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计
算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的矩阵数据的处理方法中的步骤。
35.本发明带来的有益效果:获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。通过将权重矩阵数据的列式矢量与待处理矩阵的矩阵元素进行乘法计算后再进行累加,不用等待所述待处理矩阵数据的矢量完全复制,从而无需等待系统管道清空就可以开始下一时间步的计算,只需要部分的输入向量即可开始计算,形成数据流水线,避免产生停顿的情况,降低硬件资源闲置的情况,进而提高了对硬件资源的利用率,同时,通过灵活配置多线程硬件资源从而可以在多个模型并行情况下,提高硬件系统的效率。
附图说明
36.图1为本发明实施例提供的一种矩阵数据的处理方法的流程示意图;
37.图1a为本发明实施例提供的一种现有矩阵数据处理方法的示意图;
38.图1b为本发明实施例提供的一种现有矩阵数据处理中多任务单线程的示意图;
39.图1c为本发明实施例提供的一种长短期记忆网络的推理示意图;
40.图1d为本发明实施例提供的一种组合后的权重矩阵的示意图;
41.图1e为本发明实施例提供的一种矩阵数据的处理方法的示意图;
42.图1f为本发明实施例提供的一种多管道线程处理的示意图;
43.图1g为本发明实施例提供的一种行式矢量乘法的示意图;
44.图1h为本发明实施例提供的一种列式矢量乘法的示意图;
45.图2是本发明实施例提供的一种矩阵数据的处理装置的结构示意图;
46.图3为本发明实施例提供的一种配置模块的结构示意图;
47.图4为本发明实施例提供的一种计算模块的结构示意图。
具体实施方式
48.下面描述本发明的优选实施方式,本领域普通技术人员将能够根据下文所述用本领域的相关技术加以实现,并能更加明白本发明的创新之处和带来的益处。
49.本发明提供了一种矩阵数据的处理方法。本发明的目的是通过以下技术方案来实现的:
50.请参见图1,图1是本发明实施例提供的一种矩阵数据的处理方法的流程示意图,如图1所示,所述方法用于递归神经网络,所述方法包括以下步骤:
51.101、获取递归神经网络的待处理矩阵数据以及权重矩阵数据。
52.其中,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量。
53.所述待处理矩阵数据可以是语音矩阵数据、文本矩阵数据以及图像矩阵数据等。上述语音矩阵数据可以是将语音信息编码到矩阵空间得到,上述的文本矩阵数据可以是将文本信息编码到矩阵空间得到,上述的图像矩阵数据可以是图像本身的像素矩阵,也可以是将图像本身的像素矩阵编码到矩阵空间得到。
54.上述的权重矩阵数据是所述递归神经网络经过训练后的权重矩阵。在对待处理矩阵数据的处理中,通过权重矩阵来提取待处理矩阵的隐含信息,从而根据隐含信息得到对应的分类信息。
55.所述递归神经网络可以部署在cpu(中央处理器)、gpu(图像处理器)、fpga(现场可编程门阵列)等硬件环境中。在本发明实施例中,所述递归神经网络优选部署在基于fpga的硬件环境中,fpga的硬件环境相较于cpu、gpu的硬件环境,由于具有逻辑门的硬件支持,可以使得运行在fpga的硬件环境的递归神经网络具有低延迟和低功耗的优势。
56.所述递归神经网络可以是长短期记忆网络和门控循环单元(将输入门与遗忘门合并到一个更新门中)等递归神经网络。其中,本发明实施例中所述递归神经网络优选为长短期记忆网络。进一步的,本发明实施例中所述递归神经网络优选为部署在fpga的硬件环境中的长短期记忆网络。需要说明的是,本发明实施例只是以长短期记忆网络作为实施例以便于阐述本发明的发明意图,对于其他形式的递归神经网络同样适用,在此,并不应当将长短期记忆网络作为是对本发明例中所范围的限定。
57.所述权重矩阵数据也为长短期记忆网络中门的权重矩阵数据。具体的,长短期记忆网络包括四个门,分别为输入门、遗忘门、输入调制门以及输出门。其中,输入调制门可以理解为输入门的一个子部分,用于将输入张量与隐含张量组合起来,使得对应的输入调制门权重矩阵表示输入单元和隐含单元的权重矩阵。其中,四个门分别对应各个的权重矩阵,比如输入门对应的输入门权重为wi(n),遗忘门对应的遗忘门权重为wf(n),输入调制门对应的输入调制门权重为wg(n),输出门对应的输出门权重为wo(n)。其中,wi(n)、wf(n)、wg(n)、wo(n)均为大小相同的矩阵。
58.在长短期记忆网络中,隐含状态可以通过四个门来进行计算,具体可以参照下述的公式:
59.i
t
=σ(wi[x
t
,h
t-1
] bi)
ꢀꢀꢀ
(1)
[0060]ft
=σ(wf[x
t
,h
t-1
] bf)
ꢀꢀꢀ
(2)
[0061]gt
=tanh(wf[x
t
,h
t-1
] bu)
ꢀꢀꢀ
(3)
[0062]ot
=σ(wo[x
t
,h
t-1
] bo)
ꢀꢀꢀ
(4)
[0063]ct
=f
t
⊙ct-1
i
t
⊙gt
ꢀꢀꢀ
(5)
[0064]ht
=o
t

tanh(c
t
)
ꢀꢀꢀ
(6)
[0065]
其中,σ为归一化函数,x
t
为当前输入,h
t-1
为上一隐含状态,i
t
为输入门的计算结果,w为各个门的权重矩阵,b为偏置,f
t
为输入门的计算结果,g
t
为输入门的计算结果,o
t
为输入门的计算结果,c
t
为内存单元状态,h
t
为当前输入的隐含状态。其中,上述的隐含状态可以通过张量进行表示,即为隐含张量,可以用于下一时间步或下一计算层的输入,如图1c所示,图1c中,i
t
,f
t
,g
t
,o
t
的计算可以称为门计算(lstm-gates),c
t
,h
t
的计算可以称为尾计算(lstm-tail)。
[0066]
进一步的,在本发明实施例中,上述的权重矩阵数据可以由上述的四个门对应的
权重矩阵数据进行组合,即是将wi(n)、wf(n)、wg(n)、wo(n)组合为w(n)。假设四个门对应的权重矩阵数据的张量为lh*lk,组合后的权重矩阵数据w(n)的张量为hw*lw,其中,lh为四个门对应的权重矩阵数据的行数,lk为四个门对应的权重矩阵数据的列数,同理,hw为权重矩阵数据w(n)的行数,lw为权重矩阵数据w(n)的列数,则有hw=4*lh,lw=lk。在一种可能的实施例中,在规定了输入矩阵数据所对应的张量大小时,上述的lk=lh l
x
,l
x
为待处理矩阵数据的行数,此时,lw=lk=lh l
x
。如图1d所示,在图1d中,wi(0)、wf(0)、wg(0)、wo(0)分别为输入门权重的第一行的行式矢量,遗忘门权重的第一行的行式矢量,输入调制门权重的第一行的行式矢量,输出门权重的第一行的行式矢量,同时,也为权重矩阵数据w(n)的前四行的行式矢量。
[0067]
具体的,上述的四个门对应的权重矩阵数据的组合可以是将对应的行式矢量进行组合,比如,将四个门对应的权重矩阵数据中第一行的行式矢量进行组合,得到的权重矩阵数据w(n)中,前四行的行式矢量分别对应四个门对应的权重矩阵数据中第一行的行式矢量。
[0068]
将四个门对应的权重矩阵数据进行组合后,得到一个更大张量的权重矩阵数据w(n),这样,在一个时间步内对权重矩阵进行优化时,只需要用该权重矩阵数据w(n)乘以一个矢量来进行优化,而不需要通过四个矢量分别对四个门对应的权重矩阵进行优化,节省了优化的计算量和优化的时间。
[0069]
102、提取权重矩阵数据中的权重列式矢量。
[0070]
该步骤中,上述的权重矩阵数据为步骤101中的权重矩阵数据w(n),上述的权重列式矢量也可以称为权重列向量,每一个权重列式矢量可以表达权重矩阵数据中的一列数据。
[0071]
通过情况下,权重矩阵数据与待处理矩阵数据的乘法是通过行式矢量进行,这时,需要全部提取待处理矩阵数据的列向量才能完成矢量乘法的计算。比如:权重矩阵数据的张量为n*m,待处理矩阵数据的张量应为j*k,则需要满足j=m,才能进行矢量乘法的计算。因此,需要提取待处理矩阵数据完整的一列才能进行矢量乘法的计算。如图1e所示,在图1e中,weights matrix为权重矩阵,w0、w1、w
hw-2
、w
hw-1
均为权重行式矢量,权重矩阵总共有hw行,总共有lw列,0、1、

、l
x-1
为待处理矩阵数据,共有l
x
行,0、1、

、l
h-1
为上一隐含张量,共有lh行,此时,需要满足lw=l
x
lh才能开始矢量乘法的计算,即是需要读取l
x
lh个矩阵元素才能开始矢量乘法的计算,在没有读取完成之前,硬件计算资源都处于闲置状态。
[0072]
103、提取待处理矩阵数据与权重列式矢量对应的待处理矩阵元素。
[0073]
该步骤中,上述的待处理矩阵数据被以矩阵元素为单位进行提取,而不用以矢量为单位进行提取,一个矢量包括多个矩阵元素,从而缩短了计算开始的时间。具体的,若以矢量为单位进行提取,则需要等待读取完该矢量包含的所有矩阵元素,才会开始计算,而以矩阵元素为单位,则读取一个矩阵元素后就会开始计算,不用等待所述待处理矩阵数据的矢量完全复制,从而无需等待系统管道清空就可以开始下一时间步的计算,只需要部分的输入向量即可开始计算。
[0074]
需要说明的是,上述的待处理矩阵元素为待处理矩阵数据中的矩阵元素。
[0075]
104、根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程。
[0076]
在本发明实施例中,上述数据处理任务的数量可以理解为模型的数量,上述的时
间轴关系可以理解为各个数据处理任务中,从数据到达至数据处理完成的时间。上这数据处理任务或模型也可以理解为递归神经网络。
[0077]
在一种可能的实施例中,可以通过粗粒度多线程(cgmt)来对管道线程进行配置。
[0078]
可选的,可以根据数据处理任务的数量,配置对应数量的管道线程。根据所述时间轴关系,配置对应管道线程的线程长度和线程起始时间点。
[0079]
在同一条的管道线程中,不同的时间步之间通过线程阻滞进行分程,在不同的管道线程中,不同的时间步会被配置在其他管道线程中的线程阻滞中,从而将其他管道线程中的线程阻滞进行填充,如图1f所示,在图1f中,管道线程t1有两个时间步,两个时间步中配置一个线程阻滞virtual idel,管道线程t2中有三个时间步,每两个时间步中配置一个线程阻滞virtual idel,管道线程t3中有两个时间步,两个时间步中配置一个线程阻滞virtual idel。可以看出,管道线程t1中的第一线程阻滞virtual idel可以容纳管道线程t2中的一个时间步和管道线程t3中的一个时间步,在管道线程t1遇到数据阻滞时,则执行线程阻滞virtual idel对应的管道线程t2中的一个时间步和管道线程t3中的一个时间步。同样的,管道线程t2中的第一线程阻滞virtual idel可以容纳管道线程t1中的一个时间步和管道线程t3中的一个时间步,在管道线程t2遇到数据阻滞时,则执行线程阻滞virtual idel对应的管道线程t1中的一个时间步和管道线程t3中的一个时间步。管道线程t3中的第一线程阻滞virtual idel可以容纳管道线程t1中的一个时间步和管道线程t2中的一个时间步,在管道线程t3遇到数据阻滞时,则执行线程阻滞virtual idel对应的管道线程t1中的一个时间步和管道线程t2中的一个时间步。需要说明的是,上述线程阻滞virtual idel也可以称为虚拟阻滞,只存在于管道线程中,在加载到计算内核时,通过切换管道线程,则可以消除该虚拟阻滞。
[0080]
105、通过管道线程对权重矢量块与待处理矩阵元素进行计算,得到待处理矩阵数据的处理结果。
[0081]
具体的,可以将所述管道线程加载到计算内核;通过所述计算内核对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。上述的计算内核可以是npu内核。
[0082]
进一步的,当计算内核遇到线程阻塞时,则切换可以管道线程。另外,当一个计算内核停止运行时,另一个计算内核可以继续运行,执行对应的管道线程。
[0083]
在计算内核中,可以根据列式矢量与待处理矩阵的矩阵元素进行乘法计算后再进行累加。具体的,以权重矩阵数据的张量为3*3来说,待处理矩阵为3*1,假设权重矩阵数据中的第一列为第一权重列式矢量,待处理矩阵第一行为第一矩阵元素,依次假设得到权重矩阵数据中的第二列为第二权重列式矢量,权重矩阵数据中的第三列为第三权重列式矢量,待处理矩阵第二行为第二矩阵元素,待处理矩阵第三行为第三矩阵元素,则可以将第一权重列式与第一矩阵元素进行相乘,将第二权重列式与第二矩阵元素进行相乘,将第三权重列式与第三矩阵元素进行相乘。第一权重列式矢量、第二权重列式、第三权重列式的张量均为3*1,第一矩阵元素、第二矩阵元素、第三矩阵元素的张量也均可以看成1*1,则对应的3*1与1*1相乘,最后得到的是三个3*1张量的第一处理结果。相较于权重矩阵数据与待处理矩阵直接相乘,即3*3与3*1相乘来说,不用等待一次性3*1整个张量的提取完毕再进行计算,每提取一个1*1张量(矩阵元素)后,就可以计算,使数据更接近于流式,降低硬件资源的
闲置时长。如图1g所示,在图1g中,权重矩阵的列式矢量与待处理矩阵数据中的一个矩阵元素直接相乘,由于权重矩阵的列式矢量的列数为1,矩阵元素的行数为1,满足矢量乘法的计算。
[0084]
将第一处理结果进行累加,得到第二处理结果,并输出第二处理结果作为待处理矩阵数据的处理结果。
[0085]
该步骤中,以权重矩阵数据的张量为3*3,待处理矩阵为3*1来说,得到的第一处理结果为三个3*1的张量,将三个3*1的张量进行累加,得到一个3*1张量的第二处理结果。相较于权重矩阵数据与待处理矩阵直接相乘,即3*3与3*1相乘来说,3*3与3*1相乘的结果是一个3*1的张量,也可以称为隐含张量或隐含状态,权重列式矢量与矩阵元素的相乘,即3*1与1*1相乘,最后累加得到3*1的张量,也可以称为隐含张量或隐含状态,而通过权重列式矢量与矩阵元素的相乘每提取一个1*1张量(矩阵元素)后,就可以计算,使数据更接近于流式,降低硬件资源的闲置时长。如图1g以及图1h所示,在图1h中,可以看出,不需要等待隐含张量h
t
的完成,所有的数据都如流水线一般进行计算,没有停滞等待。
[0086]
在本实施例中,获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。通过将权重矩阵数据的列式矢量与待处理矩阵的矩阵元素进行乘法计算后再进行累加,不用等待所述待处理矩阵数据的矢量完全复制,从而无需等待系统管道清空就可以开始下一时间步的计算,只需要部分的输入向量即可开始计算,形成数据流水线,避免产生停顿的情况,降低硬件资源闲置的情况,进而提高了对硬件资源的利用率,同时,通过灵活配置多线程硬件资源从而可以在多个模型并行情况下,提高硬件系统的效率。
[0087]
在本发明实施例中,在计算内核中,多管道线程通过切换到另一个线程“恢复”未使用的性能(其中计算内核由于一个线程上的事件而处于空闲状态)。多管道线程还可以确保在单管道线程模式下达到峰值性能,而不受其他管道线程影响。一起运行多个神经网络可以缓解来自不同递归神经网络的数据阻塞问题,并可以自由的调度递归神经网络运行,而无需考虑数据依赖关系。
[0088]
进一步的,在本发明实施例中,可以获取递归神经网络的待处理矩阵数据以及权重矩阵数据。
[0089]
其中,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量。
[0090]
所述待处理矩阵数据可以是语音矩阵数据、文本矩阵数据以及图像矩阵数据等。上述语音矩阵数据可以是将语音信息编码到矩阵空间得到,上述的文本矩阵数据可以是将文本信息编码到矩阵空间得到,上述的图像矩阵数据可以是图像本身的像素矩阵,也可以是将图像本身的像素矩阵编码到矩阵空间得到。
[0091]
上述的权重矩阵数据是所述递归神经网络经过训练后的权重矩阵。在对待处理矩
阵数据的处理中,通过权重矩阵来提取待处理矩阵的隐含信息,从而根据隐含信息得到对应的分类信息。
[0092]
根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数。
[0093]
在本发明实施例中,上述的递归神经网络的规模参数可以通过处理单元数量npe来确定。
[0094]
该步骤中,可以对元素并行参数(ep)以及矢量并行参数(vp)进一步的开发可用的并行性,以使处理过程中计算周期数大于延迟。需要说明的是,元素并行参数表示矩阵元素的并行处理数量,矢量并行参数表示列式矢量的行数量。
[0095]
进一步的,矢量并行参数受权重矩阵数据以及元素并行参数的约束。具体获取矢量并行参数可以是先获取处理单元数量(npe);获取所述权重矩阵数据中的权重矩阵的矢量行数;根据所述处理单元数量与元素并行参数的比值、及所述权重矩阵宽度对矢量并行参数进行约束,并通过贪婪算法搜索得到所述元素并行参数以及矢量并行参数。具体的,上述的约束可以是:
[0096]
vp≤hw=4*lhꢀꢀꢀ
(7)
[0097]
vp≤npe/ep
ꢀꢀꢀ
(8)
[0098]
通过上述的两个式子,将元素并行参数作为变量,从元素并行参数ep=1开始,进行贪婪算法,搜索出最佳的矢量并行参数以及元素并行参数。
[0099]
可以看出,当ep较小时,由于vp受公式(7)约束,因此处理周期数较高,使得有效处理单元pe(每个处理单元都有ep元素进行处理)小于处理单元数量npe,从而导致严重的未充分利用。当ep增加时,处理周期数减少,直到ep达到这些最佳点。当ep大于最佳点时,处理周期逐渐增加。比如,根据预设的设计空间探索结果,当npe=16382时,最佳配置的ep值介于4和16之间;当npe=65536时,ep值介于16和64之间。在这些最佳位置,可以实现高并行度,从而可以提高系统吞吐量。
[0100]
可选的,上述递归神经网络的规模参数还可以包括:处理单元数量以及矢量维度。本可选实施例中,可以根据所述处理单元数量以及矢量维度,匹配与处理单元数量以及矢量维度对应的元素并行参数以及矢量并行参数。这样,可以得到更适合当前递归神经网络规模的元素并行参数以及矢量并行参数来进行切片分块。
[0101]
比如,对于给定的矢量大小,通过调整(ep,vp)设计参数可以获得更好的性能和利用率。比如,对于512维矢量来说,在(ep,vp)为(32,2048)下的性能比(ep,vp)为(16,4096)下的更好,而对于1024维矢量来说,在(ep,vp)为(16,4096)下的性能比(ep,vp)为(32,2048)好。当运行不同大小的rnn模型时,ep和vp的不同选择会影响体系结构的硬件利用率和性能。
[0102]
需要说明的是,每个pe都相当于一个全流水线乘法器,用于列式乘法的乘法计算,在经过pe,则会进入累加器进行加法计算。
[0103]
根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块。
[0104]
该步骤中,上述的权重矢量块可以如图3所示,其中,需要说明的是,上述的权重矢量块中的元素并行参数与待处理矩阵数据中的元素并行参数具有相同的矩阵元素数量,即
是具有相同的ep。通过元素并行参数以及矢量并行参数得到的权重矢量块,可以提高递归神经网络的推理吞吐量。
[0105]
在本发明实施例中,由于上述元素并行参数以及矢量并行参数是根据递归神经网络的规模参数得到的,因此,可以根据递归神经网络的规模灵活配置元素并行参数以及矢量并行参数,进而灵活地对权重矩阵数据进行分块,得到的权重矢量块也是符合当前递归神经网络的规模的,进一步提高了硬件的利用率。
[0106]
可选的,将所述权重矢量块与所述待处理矩阵元素进行乘法计算,得到第一处理结果。
[0107]
通过权重矩阵数据分块得到权重矢量块与待处理矩阵中元素并行参数相对依然矩阵元素进行乘法计算,得到第一处理结果。这样可以提高递归神经网络的推理吞吐量。
[0108]
根据元素并行参数配置加法树尾,通过包含所述加法树尾的加法树对所述第一处理结果进行累加,得到第二处理结果,并输出所述第二处理结果作为所述待处理矩阵数据的处理结果。
[0109]
在本发明实施例中,为了支持各种ep和vp,可以配置加法树尾(cat),以减少加法器的配置。对应于各种数量的ep,加法树的级别数可以相应地更改配置。比如加法树的固定结构是为大型的ep,最后几级加法树的结果可用小型ep直接更新累加器,而无需输入下一级加法器,从而可以减少加法器的配置。
[0110]
进一步的,将所述加法树尾配置在所述加法树的后面;配置所述加法树尾的并行。
[0111]
在加法树尾cat体系结构中,可将加法树尾的加法器作为所需的累加器重用,而无需额外的加法器组件。比如,可以将具有n输入的cat(cat-n)配置为在数据达到加法器树的最后log2(n)级别时将1到n个的累加器更新。
[0112]
在大规模的递归神经网络设计中,根据最佳系统吞吐量的设计探索,由于ep的数量集为{16,32,64},因此,用加法树尾cat-4就足够了。当然,也可以在加法树尾cat-n级联加法树尾cat-n,比如将使用两个cat-2级联得到一个cat-4。
[0113]
在本发明实施例中,还可以包括在适配器之后进行解量化(反量化),由于解量化和量化需要32位乘法器单元和加法器,因此会导致加法树尾的线性量化的总硬件成本要高于16位定点量化的硬件成本。因此,可以让加法树尾不去执行线性量化。取而代之的是,在适配器之后进行解量化,将量化值解量化为定点值,则加法树尾的输出则会生成一个不需要反量化的输出向量,避免在加法树尾增加反量化的硬件,从而降低了总硬件成本。
[0114]
进一步的,对第一处理结果进行平衡性计算,以平衡权重矢量块的并行性。
[0115]
具体的,递归神经网络的架构中乘法器以及累加器,累加器连接在乘法器之后,其中,乘法器用于矢量乘法的计算,具体用于上述列式矢量与矩阵元素间矢量乘法的计算,或者用于权重矢量块与待处理矩阵中元素并行参数相对依然矩阵元素间矢量乘法的计算。上述的累加器用于对第一处理结果进行累加处理。
[0116]
可选的,在乘法器与累加器之间,还可以设置一个平衡加法器树对第一处理结果进行平衡性计算,具体的,是对元素并行参数以及矢量并行参数的并行性进行平衡,以进一步增加递归神经网络的推理吞吐量。
[0117]
可选的,可以通过批处理对输入的待处理矩阵数据进行多线程化,使得到待处理矩阵数据可以输入对应的管道线程中进行处理。
[0118]
在本实施例中,获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。通过将权重矩阵数据的列式矢量与待处理矩阵的矩阵元素进行乘法计算后再进行累加,不用等待所述待处理矩阵数据的矢量完全复制,从而无需等待系统管道清空就可以开始下一时间步的计算,只需要部分的输入向量即可开始计算,形成数据流水线,避免产生停顿的情况,降低硬件资源闲置的情况,进而提高了对硬件资源的利用率,同时,根据递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数来进行切片,以及配置对应的加法树尾,可以使切片策略更灵活,可以适用于各种规模的递归神经网络。
[0119]
请参见图2,图2是本发明实施例提供的一种矩阵数据的处理装置,用于递归神经网络,其特征在于,所述装置包括:
[0120]
获取模块201,用于获取所述递归神经网络的待处理矩阵数据以及权重矩阵数据,所述待处理矩阵数据以及权重矩阵数据均由矩阵元素构成,所述矩阵数据包括由所述矩阵元素构建的列式矢量;
[0121]
匹配模块202,用于根据所述递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数;
[0122]
处理模块203,用于根据所述元素并行参数以及矢量并行参数对所述权重矩阵数据进行分块,得到权重矢量块;
[0123]
配置模块204,用于根据数据处理任务的数量和时间轴关系,配置对应数量的管道线程;
[0124]
计算模块205,用于通过所述管道线程对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
[0125]
可选的,如图3所示,所述配置模块204包括:
[0126]
第一配置单元2041,用于根据所述数据处理任务的数量,配置对应数量的管道线程;
[0127]
第二配置单元2042,用于根据所述时间轴关系,配置对应管道线程的线程长度和线程起始时间点。
[0128]
可选的,如图4所示,所述计算模块205,包括:
[0129]
加载单元2051,用于将所述管道线程加载到计算内核;
[0130]
计算单元2052,用于通过所述计算内核对所述权重矢量块与所述待处理矩阵元素进行计算,得到所述待处理矩阵数据的处理结果。
[0131]
可选的,所述计算单元2052还用于当所述计算内核遇到数据阻塞时,则切换所述管道线程。
[0132]
本发明实施例中,通过将权重矩阵数据的列式矢量与待处理矩阵的矩阵元素进行乘法计算后再进行累加,不用等待所述待处理矩阵数据的矢量完全复制,从而无需等待系
统管道清空就可以开始下一时间步的计算,只需要部分的输入向量即可开始计算,形成数据流水线,避免产生停顿的情况,降低硬件资源闲置的情况,进而提高了对硬件资源的利用率,同时,根据递归神经网络的规模参数,匹配与所述规模参数对应的元素并行参数以及矢量并行参数来进行切片,以及配置对应的加法树尾,可以使切片策略更灵活,可以适用于各种规模的递归神经网络。
[0133]
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例提供的矩阵数据的处理方法中的步骤。
[0134]
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的矩阵数据的处理方法中的步骤。
[0135]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0136]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0137]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的
[0138]
另外,在本发明各个实施例中的处理器、芯片可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上硬件集成在一个单元中。计算机可读存储介质或计算机可读程序可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0139]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-only memory,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
[0140]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

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

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

相关文献