数据处理方法及装置、电子装置和介质与流程

文档序号:31805544发布日期:2022-10-14 20:10阅读:75来源:国知局
数据处理方法及装置、电子装置和介质与流程

1.本公开的实施例涉及一种数据处理方法、数据处理装置、电子装置和计算机可读存储介质。


背景技术:

2.在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。丢弃法(dropout)可以比较有效地缓解过拟合的发生,在一定程度上达到正则化的效果。丢弃法是指在前向传播的时候,让某个神经元的激活值以一定的概率停止工作,这样可以使模型泛化性更强。


技术实现要素:

3.本公开至少一个实施例提供一种数据处理方法,包括:将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中,输入数据的尺寸为n*m,掩盖数据的尺寸为p*q,掩盖数据的每个元素为z个比特,q*z=2*m,掩盖数据的每个元素的每个比特对应于输入数据的一个元素,第二寄存器的存储单元排列为i行j列,i=j=q/2=z,第二寄存器的同一列中存储的i个比特依序对应于输入数据中位于同一行的连续的i个元素,n、m、p、q、i、j、z均为正整数;基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据。
4.例如,在本公开一实施例提供的数据处理方法中,第二寄存器的第1列至第j/2列为第一组存储单元,第二寄存器的第(j/2+1)列至第j列为第二组存储单元;基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据,包括:利用选择指令选择第一组存储单元中的第s列存储单元中存储的比特和第二组存储单元中的第s列存储单元中存储的比特,第一组存储单元中的第s列存储单元中存储的比特和第二组存储单元中的第s列存储单元中存储的比特对应于输入数据中位于每连续两行中连续i列的元素;基于对应关系,将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,以得到输出数据中对应的位于每连续两行中连续i列的元素;将第一组存储单元和第二组存储单元左移1个比特或右移1个比特,得到移位后的第一组存储单元和移位后的第二组存储单元,利用选择指令选择移位后的第一组存储单元中的第s列存储单元中存储的比特和移位后的第二组存储单元中的第s列存储单元中存储的比特,并基于对应关系将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,继续进行移位操作和乘积计算直至完成对第一组存储单元和第二组存储单元中的所有列的选择及乘积计算。
5.例如,在本公开一实施例提供的数据处理方法中,n=512,m=1024,p=256,i=j=q/2=z=32。
6.例如,在本公开一实施例提供的数据处理方法中,s=16,第一组存储单元中的第
16列存储单元中存储的比特对应于输入数据中位于第x行第1列至第32列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x+1行第1列至第32列的元素;所得到的输出数据中对应的位于每连续两行中连续i列的元素包括输出数据中位于第x行和第x+1行的第1列至第32列的元素;移位后的第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x行第33列至第64列的元素,移位后的第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x+1行第33列至第64列的元素,x为正整数且x为奇数。
7.例如,在本公开一实施例提供的数据处理方法中,第一组存储单元包含512个比特,第二组存储单元包含512个比特,第二寄存器包含2*512个比特,2*512个比特对应输入数据中的每连续两行中的第1列至第512列的元素。
8.例如,在本公开一实施例提供的数据处理方法中,输入数据中的每连续两行中的第513列至第1024列的元素由第三寄存器中存储的2*512个比特一一对应,第三寄存器存储有与第二寄存器中存储的掩盖数据不同但尺寸相同的掩盖数据,第三寄存器中的掩盖数据的排布方式与第二寄存器中的掩盖数据的排布方式相同。
9.例如,在本公开一实施例提供的数据处理方法中,将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,包括:在所选择的存储单元中的比特的数值为1的情况下,将对应的输入数据的元素作为输出数据中对应的元素;在所选择的存储单元中的比特的数值为0的情况下,将0作为输出数据中对应的元素。
10.例如,在本公开一实施例提供的数据处理方法中,基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据,还包括:将进行乘积计算得到的结果除以(1-drop_prob)以得到输出数据,drop_prob表示掩盖数据的每个元素的每个比特为0的概率。
11.例如,本公开一实施例提供的数据处理方法,还包括:将输出数据按照输入数据的对应位置存储到内存中。
12.例如,在本公开一实施例提供的数据处理方法中,选择指令的格式类型和输入数据的格式类型相同。
13.例如,在本公开一实施例提供的数据处理方法中,选择指令的格式类型为bf16,输入数据的格式类型为bf16。
14.例如,在本公开一实施例提供的数据处理方法中,数据处理方法用于神经网络的丢弃法层的计算,丢弃法层的输入部分包括输入数据和掩盖数据,在掩盖数据的元素的比特的数值为1的情况下,对应的输入数据的元素作为丢弃法层的输出;在掩盖数据的元素的比特的数值为0的情况下,对应的输入数据的元素被丢弃。
15.例如,本公开一实施例提供的数据处理方法,还包括:在将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中之前,对输入数据和掩盖数据进行对齐操作,使得输入数据中每2*n的元素对应掩盖数据中每1*z的元素。
16.本公开至少一个实施例还提供一种数据处理装置,包括:数据加载单元,配置为将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中,输入数据的尺寸为n*m,掩盖数据的尺寸为p*q,掩盖数据的每个元素为z个比特,q*z=2*m,掩盖数据的每个元素的每个比特对应于输入数据的一个元素,第二寄存器的存储单元排列为i行j列,i=j=q/2=
z,第二寄存器的同一列中存储的i个比特依序对应于输入数据中位于同一行的连续的i个元素,n、m、p、q、i、j、z均为正整数;计算单元,配置为基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据。
17.本公开至少一个实施例还提供一种数据处理装置,包括:处理器;以及存储器,存储有计算机可执行指令,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的数据处理方法。
18.本公开至少一个实施例还提供一种电子装置,包括本公开至少一个实施例提供的数据处理装置。
19.本公开至少一个实施例还提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的数据处理方法。
附图说明
20.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
21.图1示出了一种寄存器的结构示意图;
22.图2示出了本公开至少一个实施例提供的一种数据处理方法的示意性流程图;
23.图3示出了图2中步骤s202的一个示例的示意性流程图;
24.图4示出了图3中的步骤s301的一个示例的示意图;
25.图5示出了图3中的步骤s303的一个示例的示意图;
26.图6示出了本公开至少一个实施例提供的一种数据处理装置的示意框图;
27.图7示出了根据本公开实施例的数据处理装置的示意图;
28.图8示出了根据本公开实施例的电子装置的示意图;
29.图9为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
30.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
31.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
32.丢弃法层(dropout layer)的输入部分包括输入数据和与之对应的掩盖(mask)数据。掩盖数据的每个元素的每个比特都对应一个输入数据的元素。如果掩盖数据的元素的比特的数值为1,则对应的输入数据的元素需要被保留,如果掩盖数据的元素的比特的数值为0,则对应的输入数据的元素将被改成0。假设输入数据的尺寸为[512,1024],数据类型为bf16,掩盖数据的尺寸为[512,32],数据类型为fp32。掩盖数据中的每个fp32数据的32个比特对应输入数据的同一行的32个元素。掩盖数据中的每行为32个元素,即32*32=1024个比特,这1024个比特对应了输入数据中的完整的一行,即1024个输入数据的元素。掩盖数据会被从内存读取到寄存器中,寄存器的示意性结构如图1所示。每个寄存器包括32个通道(lane0~lane31),每个通道包含一个32比特(bit0~bit31)的数字,每一个比特对应一个输入数据的元素。因此一个寄存器刚好可以存放掩盖数据中完整的一行元素,即32个fp32的元素。
[0033]
通常来说,会将寄存器中的每个通道的32比特的数字对应输入数据横向的32个元素。因为输入数据的格式为bf16,读取到寄存器之后包含了两行,即2*32的bf16数据。为了与掩盖数据的元素的比特一一对应,需要先将存放输入数据的寄存器拆分成两组独立的1*32的fp32数据,然后每次只能先读取存放掩盖数据的寄存器中的一个通道的32比特并存放在标量寄存器中,然后利用掩盖数据对拆分后的输入数据进行选择性的乘积操作。如果掩盖数据的元素的比特为1,则保留对应的输入数据的元素,如果掩盖数据的元素的比特为0,则对应的输入数据的元素被改成0,然后再将两组1*32的fp32类型的计算结果合并成一组2*32的bf16类型的输出数据。这一计算过程指令复杂,效率极低。
[0034]
本公开至少一个实施例提供一种数据处理方法,包括:将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中,输入数据的尺寸为n*m,掩盖数据的尺寸为p*q,掩盖数据的每个元素为z个比特,q*z=2*m,掩盖数据的每个元素的每个比特对应于输入数据的一个元素,第二寄存器的存储单元排列为i行j列,i=j=q/2=z,第二寄存器的同一列中存储的i个比特依序对应于输入数据中位于同一行的连续的i个元素,n、m、p、q、i、j、z均为正整数;基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据。
[0035]
本公开上述实施例提供的数据处理方法改变了掩盖数据与输入数据的对应方式,有效地减少了指令的数目,极大地提升了运行效率,减少了运行时间。
[0036]
本公开至少一个实施例还提供对应于上述数据处理方法的数据处理装置、电子装置和计算机可读存储介质。
[0037]
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
[0038]
图2示出了本公开至少一个实施例提供的一种数据处理方法的示意性流程图。
[0039]
如图2所示,该数据处理方法包括如下的步骤s201~s202。
[0040]
步骤s201:将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中。
[0041]
例如,输入数据的尺寸为n*m,掩盖数据的尺寸为p*q,掩盖数据的每个元素为z个比特,q*z=2*m,掩盖数据的每个元素的每个比特对应于输入数据的一个元素,第二寄存器的存储单元排列为i行j列,i=j=q/2=z,第二寄存器的同一列中存储的i个比特依序对应于输入数据中位于同一行的连续的i个元素,n、m、p、q、i、j、z均为正整数。
[0042]
例如,n=512,m=1024,p=256,i=j=q/2=z=32,也即是,输入数据的尺寸为512*1024,掩盖数据的尺寸为256*64,掩盖数据的每个元素为32个比特,掩盖数据的列数(64)乘以掩盖数据的每个元素的比特数(32)等于2倍的输入数据的列数(2048),第二寄存器的存储单元的行数(32)等于第二寄存器的存储单元的列数(32),并且等于掩盖数据的列数除以2(32),以及等于掩盖数据的每个元素的比特数(32)。上述具体数值仅是一个示例,本公开对n、m、p、q、i、j、z的具体数值不作限制,只需要满足上述关系即可。
[0043]
步骤s202:基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据。
[0044]
例如,在步骤s201之前,本公开实施例提供的数据处理方法还可以包括:对输入数据和掩盖数据进行对齐操作,使得输入数据中每2*n的元素对应掩盖数据中每1*z的元素。
[0045]
例如,n=512,z=32,掩盖数据的每个元素的比特数为32,则输入数据中每2*512的元素(2行512列,即1024个元素)对应掩盖数据中每1*32的元素(1行32列,即32个元素,32个元素的比特数为32*32=1024)。
[0046]
本公开对输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系进行了调整,即不再按照第二寄存器中每个通道的j个比特对应输入数据横向的连续j个元素,而是按照第二寄存器中每列存储单元中存储的i个比特对应输入数据横向的连续i个元素,从而便于后续对掩盖数据的各个比特和输入数据的各个元素进行计算,例如便于结合选择指令批量地读取掩盖数据的多个比特,避免了对所读取的比特的格式调整和转换,从而有效地减少了指令数,提高了运行效率。
[0047]
例如,在本公开的一些实施例中,将第二寄存器划分为两组存储单元,第二寄存器的第1列至第j/2列为第一组存储单元,第二寄存器的第(j/2+1)列至第j列为第二组存储单元。由此,可以结合选择指令来实现各个比特的选择和计算,从而提高效率,便于实现。
[0048]
图3示出了图2中步骤s202的一个示例的示意性流程图。
[0049]
如图3所示,针对第二寄存器被划分为两组存储单元,步骤s202的一个示例可以包括如下的步骤s301~s303。
[0050]
步骤s301:利用选择指令选择第一组存储单元中的第s列存储单元中存储的比特和第二组存储单元中的第s列存储单元中存储的比特,其中,第一组存储单元中的第s列存储单元中存储的比特和第二组存储单元中的第s列存储单元中存储的比特对应于输入数据中位于每连续两行中连续i列的元素。
[0051]
例如,在本公开的一些实施例中,选择指令的格式类型和输入数据的格式类型相同。
[0052]
例如,在本公开的一些实施例中,选择指令的格式类型为bf16,输入数据的格式类型为bf16。
[0053]
由于选择指令的格式类型和输入数据的格式类型相同,因此可以直接对输入数据进行选择操作,更加简洁高效。
[0054]
图4示出了图3中的步骤s301的一个示例的示意图。
[0055]
如图4所示,第二寄存器的存储单元排列为32行32列(第二寄存器具有32个通道(lane0~lane31),每个通道具有32个比特(bit0~bit32)),第二寄存器的第1列至第16列为第一组存储单元,第二寄存器的第17列至第32列为第二组存储单元。利用选择指令选择
第一组存储单元和第二组存储单元的最高比特位,即第一组存储单元中的第16列存储单元中存储的比特和第二组存储单元中的第16列存储单元中存储的比特。例如,第一组存储单元中的第16列存储单元中存储的比特和第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第一行和第二行的第1列至第32列的元素。
[0056]
需要说明的是,本公开对选择第一组存储单元和第二组存储单元的哪一列存储单元中存储的比特不作限制,只要是以列为单位进行选择即可。
[0057]
步骤s302:基于对应关系,将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,以得到输出数据中对应的位于每连续两行中连续i列的元素。
[0058]
例如,在本公开的一些实施例中,步骤s302可以包括:在所选择的存储单元中的比特的数值为1的情况下,将对应的输入数据的元素作为输出数据中对应的元素,在所选择的存储单元中的比特的数值为0的情况下,将0作为输出数据中对应的元素。
[0059]
步骤s303:将第一组存储单元和第二组存储单元左移1个比特或右移1个比特,得到移位后的第一组存储单元和移位后的第二组存储单元,利用选择指令选择移位后的第一组存储单元中的第s列存储单元中存储的比特和移位后的第二组存储单元中的第s列存储单元中存储的比特,并基于对应关系将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,继续进行移位操作和乘积计算直至完成对第一组存储单元和第二组存储单元中的所有列的选择及乘积计算。
[0060]
图5示出了图3中的步骤s303的一个示例的示意图。
[0061]
如图5所示,第二寄存器的尺寸和图4所示的第二寄存器的尺寸相同。选择指令每次只会选择第一组存储单元中的第16列(bit15)存储单元中存储的比特和第二组存储单元中的第16列(bit31)存储单元中存储的比特,完成选择操作后执行步骤s302,执行完步骤s302之后就将第一组存储单元和第二组存储单元左移1个比特,这样bit30将被移动到bit31的位置,bit14将被移动到bit15的位置,其余的比特依次左移一位,再执行步骤302的乘积计算,直至完成对第一组存储单元和第二组存储单元中的所有列的选择及乘积计算。
[0062]
需要说明的是,也可以将第一组存储单元和第二组存储单元右移1个比特,这可以根据输入数据的元素与掩盖数据的元素的比特的对应关系而调整,本公开对此不作限制。在其他实施例中,若没有采用选择指令,而是采用其他方式来选择列方向上的比特,也可以省略移位的操作,只要能够依序选择各列比特即可,本公开的实施例对此不作限制。
[0063]
返回至图3,例如,在本公开的一些实施例中,步骤s202还可以包括步骤s304:将进行乘积计算得到的结果除以(1-drop_prob)以得到输出数据,drop_prob表示掩盖数据的每个元素的每个比特为0的概率。
[0064]
例如,掩盖数据的每个元素的每个比特都会有一定概率为0,这里将此概率用drop_prob表示,则掩盖数据的每个元素的每个比特为1的概率为(1-drop_prob)。通常会对计算结果进行缩放,即乘以1/(1-drop_prob)或除以(1-drop_prob)。
[0065]
例如,本公开实施例提供的数据处理方法还可以包括:将输出数据按照输入数据的对应位置存储到内存中。
[0066]
由于输出数据的尺寸和数据类型与输入数据完全一致,因此在得到输出数据之后,只要根据当前处理的输入数据的坐标,将输出数据按照同样坐标存储到内存中即可。
[0067]
下面通过一个具体的实施例来说明本公开提供的数据处理方法。
[0068]
例如,在本公开的一个实施例中,n=512,m=1024,p=256,i=j=q/2=z=32。即输入数据的尺寸为512*1024,掩盖数据的尺寸为256*64,掩盖数据的每个元素为32个比特,第二寄存器的存储单元排列为32行32列。输入数据的格式类型为bf16,掩盖数据的格式类型为fp32,选择指令的格式类型为bf16。
[0069]
例如,第二寄存器的第1列至第16列为第一组存储单元,第二寄存器的第17列至第32列为第二组存储单元
[0070]
首先,将输入数据加载到第一寄存器中并将掩盖数据加载到第二寄存器中。
[0071]
然后,利用选择指令选择第一组存储单元中的第16列存储单元中存储的比特和第二组存储单元中的第16列存储单元中存储的比特,也即,利用选择指令选择第二寄存器的32列存储单元中的第16列和第32列。
[0072]
然后,基于对应关系,将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,以得到输出数据中对应的位于每连续两行中连续32列的元素。所得到的输出数据中对应的位于每连续两行中连续i列的元素包括输出数据中位于第x行和第x+1行的前i列的元素。
[0073]
例如,第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x行第1列至第32列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x+1行第1列至第32列的元素,x为正整数且x为奇数。例如,x=1,第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第1行第1列至第32列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第2行第1列至第32列的元素。将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算,得到输出数据中对应的位于第一行和第二行中第1列至第32列的元素。
[0074]
然后,将第一组存储单元和第二组存储单元左移1个比特,得到移位后的第一组存储单元和移位后的第二组存储单元,利用选择指令选择移位后的第一组存储单元中的第16列存储单元中存储的比特和移位后的第二组存储单元中的第16列存储单元中存储的比特,这相当于选择了移位前的第二寄存器的32列存储单元中的第15列和第31列。然后,基于对应关系将所选择的存储单元中的比特和对应的输入数据的元素进行乘积计算。采用类似的方式,交替进行移位、选择、乘积计算,直至完成对第一组存储单元和第二组存储单元中的所有列的选择及乘积计算。
[0075]
例如,移位后的第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x行第33列至第64列的元素,移位后的第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第x+1行第33列至第64列的元素,x为正整数且x为奇数。例如,x=1,移位后的第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第1行第33列至第64列的元素,移位后的第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第2行第33列至第64列的元素。第一组存储单元包含512个比特,第二组存储单元包含512个比特,第二寄存器包含2*512个比特,2*512个比特对应输入数据中的连续两行中的第1列至第512列的元素。输入数据中的每连续两行中的第513列至第1024列的元素由另外一个寄存器来与之对应。例如,输入数据中的每连续两行中的第513列至第1024列的元素由第三寄存器中存储的2*512个比特一一对应,第三寄存器存储有与第二寄存器中存储的掩盖数据不同但尺寸相同的掩盖数据,第三寄存器中的掩盖数据的
排布方式与第二寄存器中的掩盖数据的排布方式相同。
[0076]
例如,初始状态下,第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第1行第1列至第32列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第2行第1列至第32列的元素;将第一组存储单元和第二组存储单元左移1个比特,此时,第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第1行第33列至第64列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第2行第33列至第64列的元素;再将第一组存储单元和第二组存储单元左移1个比特,此时,第一组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第1行第65列至第96列的元素,第二组存储单元中的第16列存储单元中存储的比特对应于输入数据中位于第2行第65列至第96列的元素;以此类推,直至完成对第一组存储单元和第二组存储单元中的所有列的选择及乘积计算,第一组存储单元中的512个比特对应输入数据中的第1行第1列至第512列的元素,第二组存储单元中的512个比特对应输入数据中的第2行第1列至第512列的元素。
[0077]
然后,将进行乘积计算得到的结果除以(1-drop_prob)以得到输出数据。
[0078]
最后,将输出数据按照输入数据的对应位置存储到内存中。
[0079]
本公开实施例提供的数据处理方法有效地减少汇编指令的数量,极大地提升运行效率。假设对于四个寄存器的输入数据,即8*32的bf16类型的输入数据,按照通常的数据处理方法需要大约38条汇编指令,而按照本公开实施例提供的数据处理方法仅需要6条汇编指令即可完成,优化效果显著。
[0080]
例如,在本公开的一些实施例中,数据处理方法用于神经网络的丢弃法层的计算。
[0081]
对于一个标准的神经网络,神经网络的训练流程是:首先把输入数据通过神经网络前向传播,然后把损失结果反向传播以决定如何更新神经网络的参数以使神经网络进行学习。使用丢弃法层后,训练流程变成:首先随机删除神经网络中一半的隐藏神经元,输入神经元和输出神经元保持不变;然后把输入数据通过修改后的神经网络前向传播,然后把得到的损失结果通过修改的神经网络反向传播,一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数;然后继续重复这一过程。
[0082]
丢弃法层的输入部分包括输入数据和掩盖数据,在掩盖数据的元素的比特的数值为1的情况下,对应的输入数据的元素作为丢弃法层的输出;在掩盖数据的元素的比特的数值为0的情况下,对应的输入数据的元素被丢弃(例如被删除的神经元)。
[0083]
上文说到将进行乘积计算得到的结果除以(1-drop_prob)以得到输出数据,这是因为丢弃法层需要进行缩放。训练的时候会随机丢弃一些神经元,但是预测的时候没法随机丢弃,如果丢弃一些神经元会带来结果不稳定的问题,导致模型预测不准确。一种方案就是每个神经元的权重都乘以一个概率,使得预测数据和训练数据是大致一样的。例如,一个神经元的输出是x,那么在训练的时候它有drop_prob的概率被丢弃,(1-drop_prob)的概率参与训练,因此预测的时候把这个神经元的输出除以(1-drop_prob)。
[0084]
图6示出了本公开至少一实施例提供的一种数据处理装置600的示意框图,该数据处理装置可以用于执行图2所示的数据处理方法。
[0085]
如图6所示,数据处理装置600包括数据加载单元601和计算单元602。
[0086]
数据加载单元601被配置为将输入数据加载到第一寄存器中并将掩盖数据加载到
第二寄存器中,输入数据的尺寸为n*m,掩盖数据的尺寸为p*q,掩盖数据的每个元素为z个比特,q*z=2*m,掩盖数据的每个元素的每个比特对应于输入数据的一个元素,第二寄存器的存储单元排列为i行j列,i=j=q/2=z,第二寄存器的同一列中存储的i个比特依序对应于输入数据中位于同一行的连续的i个元素,n、m、p、q、i、j、z均为正整数。
[0087]
计算单元602被配置为基于输入数据的各个元素与掩盖数据的各个元素的各个比特的对应关系,进行乘积计算以得到输出数据。
[0088]
数据加载单元601可以实现图2所示的数据处理方法中的步骤s201,计算单元602可以实现图2所示的数据处理方法中的步骤s202,相关说明可以参考上文内容,在此不再赘述。该数据处理装置600和图2所示的数据处理方法的技术效果相同,在此不再赘述。
[0089]
例如,数据处理装置可以采用硬件、软件、固件以及它们的任意可行的组合实现,本公开对此不作限制。
[0090]
例如,数据加载单元601和计算单元602可以为硬件、软件、固件以及它们的任意可行的组合。例如,数据加载单元601和计算单元602可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于数据加载单元601和计算单元602的具体实现形式,本公开的实施例对此不作限制。
[0091]
需要说明的是,本公开的实施例中,数据处理装置600的各个单元与前述的数据处理方法的各个步骤对应,关于该数据处理装置600的具体功能可以参考上文中数据处理方法的相关描述,此处不再赘述。图6所示的数据处理装置600的组件和结构只是示例性的,而非限制性的,根据需要,该数据处理装置600还可以包括其他组件和结构。
[0092]
本公开至少一个实施例还提供了一种数据处理装置,包括:存储器,用于非暂时性存储计算机可执行指令;以及处理器,用于运行计算机可执行指令,其中,计算机可执行指令被处理器运行时执行本公开至少一个实施例提供的数据处理方法。
[0093]
图7示出了根据本公开实施例的数据处理装置700的示意图。如图7所示,根据本公开实施例的数据处理装置700可以包括处理装置701以及存储器702,其可以通过总线703进行互连。
[0094]
处理装置701可以根据存储在存储器702中的程序或代码执行各种动作和处理。具体地,处理装置701可以是一种集成电路芯片,具有信号的处理能力。例如,上述处理装置可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中公开的各种方法、步骤、流程及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是x86架构或者是arm架构等。
[0095]
存储器702存储有计算机可执行指令,其中,计算机可执行指令在被处理装置701执行时实现本公开至少一个实施例提供的数据处理方法。存储器702可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率同步动态随机存取存储器(ddrsdram)、增强型同步动态随机存取存储器(esdram)、同步连接
动态随机存取存储器(sldram)和直接主存总线随机存取存储器(drram)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0096]
本公开的至少一个实施例还提供一种电子装置,包括本公开至少一个实施例提供的数据处理装置。在一个实施例中,该电子装置例如是中央处理器,该处理器例如是单核或多核处理器。在一个实施例中,该电子装置为计算机系统,该计算机系统包括一个或多个处理器,
[0097]
图8示出了根据本公开实施例的电子装置800的示意图。如图8所示,根据本公开实施例的电子装置800可以包括数据处理装置600。
[0098]
本公开至少一个实施例提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,该计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的数据处理方法。
[0099]
图9为本公开一些实施例提供的一种存储介质的示意图。如图9所示,存储介质900用于存储计算机可执行指令910。例如,当计算机可执行指令910由计算机执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
[0100]
类似地,本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0101]
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的数据处理方法。
[0102]
上述数据处理装置、电子装置以及存储介质的技术效果与图2所示的数据处理方法的技术效果相同,在此不再赘述。
[0103]
有以下几点需要说明:
[0104]
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
[0105]
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
[0106]
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1