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

神经网络计算的加速方法、装置及计算机可读存储介质与流程

2022-07-10 08:14:17 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,尤其涉及一种神经网络计算的加速方法、装置及计算机可读存储介质。


背景技术:

2.由于神经网络模型是过数据化的(over-parameterized),许多数据都是冗余的,恰当的删除这些数据对模型最终的结果几乎没有影响。模型剪枝(model pruning)就是一个很好的例子。剪枝能够将模型大小压缩10倍以上,这就意味着可以减少10倍以上的模型计算量,结合定制硬件的计算力提升,最终可能达到更高的性能提升。但是,虽然需要计算的数据只有10%,但其获取的数据为无效数据时,虽未进行计算,但会产生空闲的计算周期,因此,实际的计算时间并没有缩短,由此可见,稀疏卷积神经网络的计算效率并未得到提升。


技术实现要素:

3.本发明实施例通过提供一种神经网络计算的加速方法、装置及计算机可读存储介质,旨在解决如何提高稀疏神经网络计算的效率的技术问题。
4.本发明实施例提供一种神经网络计算的加速方法,所述方法包括:
5.获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值;
6.根据所述数据标识确定多组所述数据中是否存在有效数据;
7.若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。
8.在一实施例中,所述根据所述数据标识确定多组所述数据中是否存在有效数据的步骤之后,所述方法还包括:
9.若多组所述数据中不存在所述有效数据,返回执行所述获取多组数据的步骤。
10.在一实施例中,所述若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果的步骤包括:
11.若多组所述数据中存在所述有效数据,确定所述有效数据的组数;
12.在所述有效数据的组数大于1时,分布式计算所述有效数据,得到所述计算结果。
13.在一实施例中,所述若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果的步骤包括:
14.若多组所述数据中存在所述有效数据,确定所述有效数据的组数;
15.在所述有效数据的组数大于1时,依次计算所述有效数据,得到所述计算结果。
16.在一实施例中,所述获取神经网络模型中的多组数据的步骤之前,所述方法还包括:
17.确定所述神经网络模型中的数据的数据数值;
18.根据所述数据数值对所述神经网络模型中的数据进行数据标记,以使得多组所述数据对应有数据标识。
19.在一实施例中,所述根据所述数据数值对所述神经网络模型中的数据进行数据标记的步骤包括:
20.确定所述数据数值是否处于有效数据范围;
21.在所述数据数值处于所述有效数据范围,将所述数据数值对应的数据标记有效数据标识;
22.在所述数据数值未处于所述有效数据范围,将所述数据数值对应的数据标记无效数据标识。
23.在一实施例中,所述若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果的步骤包括:
24.若多组所述数据中存在所述有效数据,获取所述有效数据进行卷积、池化以及分类,得到所述计算结果。
25.在一实施例中,所述若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果的步骤之后,所述方法还包括:
26.输出所述计算结果。
27.本发明实施例还提供一种神经网络计算的加速装置,所述神经网络计算的加速装置包括:存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的神经网络计算的加速方法的各个步骤。
28.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的神经网络计算的加速方法的各个步骤。
29.在本实施例的技术方案中,神经网络计算的加速装置获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值;根据所述数据标识确定多组所述数据中是否存在有效数据;若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。由于模型剪枝技术手段中一次计算周期只获取一组数据,若获取的数据为无效数据,则会产生用于计算的空周期,鉴于神经网络模型都是过数据化的,故而现存技术手段会产生大量的空周期,而本发明的神经网络计算的加速装置在一次计算周期中获取了多组数据,因此,当获取的所有数据都为无效数据的情况下才会产生空周期,相对于模型剪枝,本发明人可明显降低空周期的产生数量,提高了神经网络计算的效率。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
31.图1为本发明实施例涉及的神经网络计算的加速装置的硬件构架示意图;
32.图2为本发明神经网络计算的加速方法第一实施例的流程示意图;
33.图3为本发明神经网络计算的加速方法的第一参考图;
34.图4为本发明神经网络计算的加速方法的第二参考图;
35.图5为本发明神经网络计算的加速方法第二实施例步骤s30的细化流程示意图;
36.图6为本发明神经网络计算的加速方法第三实施例步骤s30的细化流程示意图;
37.图7为本发明神经网络计算的加速方法第四实施例的流程示意图;
38.图8为本发明神经网络计算的加速方法的第三参考图。
具体实施方式
39.为了更好的理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
40.本发明的主要解决方案是:神经网络计算的加速装置获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值;根据所述数据标识确定多组所述数据中是否存在有效数据;若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。
41.由于模型剪枝技术手段中一次计算周期只获取一组数据,若获取的数据为无效数据,则会产生用于计算的空周期,鉴于神经网络模型都是过数据化的,故而现存技术手段会产生大量的空周期,而本发明的神经网络计算的加速装置在一次计算周期中获取了多组数据,因此,当获取的所有数据都为无效数据的情况下才会产生空周期,相对于模型剪枝,本发明人可明显降低空周期的产生数量,提高了神经网络计算的效率。
42.作为一种实现方式,神经网络计算的加速装置可以如图1。
43.本发明实施例方案涉及的是神经网络计算的加速装置,神经网络计算的加速装置包括:处理器101,例如cpu,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
44.存储器102可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。如图1,作为一种计算机可读存储介质的存储器103中可以包括检测程序;而处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
45.获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值;
46.根据所述数据标识确定多组所述数据中是否存在有效数据;
47.若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。
48.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以
下操作:
49.若多组所述数据中不存在所述有效数据,返回执行所述获取多组数据的步骤。
50.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
51.若多组所述数据中存在所述有效数据,确定所述有效数据的组数;
52.在所述有效数据的组数大于1时,分布式计算所述有效数据,得到所述计算结果。
53.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
54.若多组所述数据中存在所述有效数据,确定所述有效数据的组数;
55.在所述有效数据的组数大于1时,依次计算所述有效数据,得到所述计算结果。
56.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
57.根据所述神经网络模型中的数据进行神经网络计算,得到参考计算结果;
58.根据所述数据数值对所述神经网络模型中的数据进行数据标记,以使得多组所述数据对应有数据标识。
59.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
60.确定所述数据数值是否处于有效数据范围;
61.在所述数据数值处于所述有效数据范围,将所述数据数值对应的数据标记有效数据标识;
62.在所述数据数值未处于所述有效数据范围,将所述数据数值对应的数据标记无效数据标识。
63.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
64.若多组所述数据中存在所述有效数据,获取所述有效数据进行卷积、池化以及分类,得到所述计算结果。
65.在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
66.输出所述计算结果。
67.在本实施例的技术方案中,神经网络计算的加速装置获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值;根据所述数据标识确定多组所述数据中是否存在有效数据;若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。由于模型剪枝技术手段中一次计算周期只获取一组数据,若获取的数据为无效数据,则会产生用于计算的空周期,鉴于神经网络模型都是过数据化的,故而现存技术手段会产生大量的空周期,而本发明的神经网络计算的加速装置在一次计算周期中获取了多组数据,因此,当获取的所有数据都为无效数据的情况下才会产生空周期,相对于模型剪枝,本发明人可明显降低空周期的产生数量,提高了神经网络计算的效率。
68.为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
69.参照图2,图2为本发明神经网络计算的加速方法的第一实施例,方法包括以下步骤:
70.步骤s10,获取神经网络模型中的多组数据,所述数据对应有数据标识,所述数据标识包括有效数据标识以及无效数据标识,所述数据包括特征图像以及所述特征图像对应的神经网络参数值。
71.人工智能在图像、语音等领域取得的成功很大程度上归功于大型多层的深度神经网络模型。为了达到更好的效果或解决更复杂的问题,这些模型还在变大、变复杂。然而,在人工智能的多数应用领域,例如:机器翻译、语音识别、自动驾驶等,用户对人工智能系统的响应速度都非常敏感,有些甚至关乎生命安全。因此深度神经网络的低延迟推理是人工智能应用落地场景中一个非常关键的问题。
72.神经网络模型卷积层的输入的稀疏度来源于很多方面,例如:第一,卷积第一层的输入是原始图像,原始图像中很多的像素点可能为0。图像的位数通常是8位,即可以表示256种颜色(0-255)。简单的可以认为一张单通道8位彩色图共有三个通道,即r、g、b。比如彩色图像中的一个像素点的rgb值为(234,103,67)。其中255代表纯白,0代表纯黑。在极端情况中,如果整张图都是黑色的,那么这个图的所有像素点都是0,而在一般情况下,图像中也会存在很多0值。第二,由于激活函数的应用会带来很大的稀疏度。激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。激活函数最早起源于生物学,神经生物学认为一个神经元细胞要么处于激活状态,要么是抑制状态,人工神经网络目的之一就是要模拟这一机制,所以就按照这个机理设计了二值化激活过程,也就是说超过某一个阈值就取值1,代表激活,低于某个阈值就取值0,代表抑制。
73.通常的ai芯片的设计中使用多个专门的存储单元(例如片上的ram)来缓存神经网络算法运行过程中的各种数据,从而保证ai芯片能够快速高效的完成数据的神经网络计算,减少数据传输导致的延迟。传统的方式是为神经网络中常用的大数据量的数据类型各分配一块存储空间进行缓存,计算的时候从对应存储空间中将数据取出进行计算。例如图3所示,存储单元a用于存储特征图像、存储单元b用于存储神经网络参数值。另外,特征图像及其对应的神经网络参数值依次输入到计算模块a、b、c后,将最终计算结果再次存储到存储单元a中。计算模块a、b、c可以执行诸如卷积、池化等计算步骤。
74.神经网络中的特征图像和数据值存在很多数值为0或者数值接近0的值,因为它们对最终的计算结果影响很小,可以不用参与计算。同时,由于这些数据分布不规则,通常很难将这些数据逐个剔除。
75.步骤s20,根据所述数据标识确定多组所述数据中是否存在有效数据。
76.在本实施例中,针对稀疏神经网络模型,提供一种神经网络计算的加速方法,可以剔除分布不规则、对计算结果影响小的数据,从而减少计算时间,同时节省更多功耗。
77.可选的,确定所述神经网络模型中的数据的数据数值;根据所述数据数值对所述神经网络模型中的数据进行数据标记,以使得多组所述数据对应有数据标识。
78.可选的,确定所述数据数值是否处于有效数据范围;在所述数据数值处于所述有效数据范围,将所述数据数值对应的数据标记有效数据标识;在所述数据数值未处于所述
有效数据范围,将所述数据数值对应的数据标记无效数据标识。
79.具体的,对于数据标记,参考图4,本实施例增加bit-map a和b两个模块,分别对应存储单元a和存储单元b。假设存储单元a和存储单元b分别可以存储m和n个数据,那么bit-map a和b的大小分别为m个比特和n个比特。bit-map a中的每个比特用于标识存储单元a中的每个数据是否需要参与计算。例如,存储单元a存储256个16bit的整数数据,那么bit-map a里存储256个比特,每个比特分别对应存储单元a里的一个数据点;当bit-map a里某个比特的值为1(有效数据标识)时,代表存储单元a里的其对应位置的数据是有效的,需要参与计算;当bit-map a里某个比特的值为0(无效数据标识)时,代表存储单元a里的其对应位置的数据是无效的,不需要参与计算。
80.通常每个存储单元只有一个取数单元,用于读取下一次需要参与计算的数据。但是新的结构中,因为有可能读取的下一个数据是无效的,那么就不需要进行计算。如果此时仅仅不启动计算,那么将产生一个空闲的计算周期,并不能有效的节省计算时间。因此,新的结构中增加数据预取模块,可以一次性读取多个bit-map中的数据,并且根据读到的bit-map数据判断出下一个有效数据的位置,然后再从数据存储单元中读出有效的数据,并发送到后续计算模块开启计算。如果在一次预取中,读到的bit-map数据都是无效的,那么不启动计算,产生一个空闲的计算周期。
81.那么bit-map内的数据是怎样产生的呢?在特征图像数据存储到存储单元a之前,首先判断数据对计算结果是否有影响(具体做法可以是:判断数据是否是0或者比较接近与0的值,或者根据不同的神经网络确定)。如果数据对计算结果有影响,则将数据写入到存储单元中,并在bit-map中相应的位置标识数据有效。如果数据对计算结果没有影响,则将数据直接丢弃,不再写入到存储单元中,并在bit-map中相应的位置标识数据无效。
82.步骤s30,若多组所述数据中存在所述有效数据,根据所述有效数据进行神经网络计算,得到计算结果。
83.在本实施例中,获取有效数据的位置,并从存储单元中读出有效数据。发送给计算单元,启动神经网络计算,得到计算结果。
84.可选的,多组所述数据中不存在所述有效数据,返回执行所述获取多组数据的步骤。其中,不存在有效数据则返回获取有效数据,实现了神经网络计算的加速方法的流程闭环。
85.可选的,若多组所述数据中存在所述有效数据,获取所述有效数据进行卷积、池化以及分类,得到所述计算结果。其中,神经网络计算具体计算步骤不进行限定,主要包括数据的输入以及计算结果的输出等步骤。
86.在本实施例的技术方案中,由于模型剪枝技术手段中一次计算周期只获取一组数据,若获取的数据为无效数据,则会产生用于计算的空周期,鉴于神经网络模型都是过数据化的,故而现存技术手段会产生大量的空周期,而本发明的神经网络计算的加速装置在一次计算周期中获取了多组数据,因此,当获取的所有数据都为无效数据的情况下才会产生空周期,相对于模型剪枝,本发明人可明显降低空周期的产生数量,提高了神经网络计算的效率。
87.参照图5,图5为本发明神经网络计算的加速方法的第二实施例,基于第一实施例,步骤s30包括:
88.步骤s31,若多组所述数据中存在所述有效数据,确定所述有效数据的组数。
89.步骤s32,在所述有效数据的组数大于1时,分布式计算所述有效数据,得到所述计算结果。
90.在本实施例的技术方案中,当确定有效数据为多组时,可通过神经网络计算的加速装置中的分布式计算模块同时进行多组数据的神经网络计算,进一步提高了神经网络计算的效率。
91.参照图6,图6为本发明神经网络计算的加速方法的第三实施例,基于第一至第二任一实施例,步骤s30包括:
92.步骤s33,若多组所述数据中存在所述有效数据,确定所述有效数据的组数。
93.步骤s34,在所述有效数据的组数大于1时,依次计算所述有效数据,得到所述计算结果。
94.在本实施例的技术方案中,当确定有效数据为多组时,依次对多组数据进行神经网络计算,可使得计算模块产生空周期的概率降低,提高了计算资源的利用率。
95.参照图7,图7为本发明神经网络计算的加速方法的第四实施例,基于第一至第三任一实施例,步骤s30之后,还包括:
96.步骤s40,输出所述计算结果。
97.在本实施例中,参考图8,本实施例神经网络计算的加速方法的流程如下:
98.步骤一:在数据写入存储单元前,判断数据是否有效,是否需要参与计算。如果需要参与计算,如果是,则执行步骤步骤二,否则执行步骤步骤三。
99.步骤二:将有效数据写入神经网络计算的加速装置的存储器中,同时,将bit-map中对应的位置标识出数据有效。
100.步骤三:将无效数据丢弃,同时,将bit-map中对应的位置标识出数据无效。跳转到步骤一,判断下一个数据。
101.步骤四:开始计算时,从bit-map中读取出一组将要进行计算的数据对应的数据标识。
102.步骤五:判断当前取出的这一组数据标识中是否存在有效数据。如果存在有效数据,那么执行步骤六,否则执行步骤七。
103.步骤六:获取有效数据的位置,并从存储单元中读出有效的数据。发送给计算单元,启动计算。
104.步骤七:在当前获取到的标识中没有发现有效数据,不启动计算。然后,跳转到步骤四,再次从bit-map中获取下一组数据标识。
105.步骤八:输出最终的计算结果。
106.在本实施例的技术方案中,输出最终的计算结果可使得用户及时了解,并且可直观体现神经网络计算的加速效果。
107.为实现上述目的,本发明实施例还提供一种神经网络计算的加速装置,所述神经网络计算的加速装置包括:存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的神经网络计算的加速方法的各个步骤。
108.为实现上述目的,本发明实施例还提供一种计算机可读存储介质,所述计算机可
读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的神经网络计算的加速方法的各个步骤。
109.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序的形式。
110.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
111.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
112.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
113.应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
114.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
115.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

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

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

相关文献