电力设备处理加速方法、装置、设备、芯片及介质转让专利

申请号 : CN202211420171.0

文献号 : CN115470899B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李德建刘亮种挺任增民马俊张茜歌

申请人 : 北京智芯微电子科技有限公司

摘要 :

本公开涉及计算机处理技术领域,具体涉及一种电力设备处理加速方法、装置、设备、芯片及介质,所述电力设备处理加速方法包括:根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子;根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备在实现处理加速的同时提高可靠性。

权利要求 :

1.一种电力设备处理加速方法,所述电力设备包括具有神经网络的智能芯片,其特征在于,所述方法包括:根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子;

根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,包括:将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;

以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;

以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;

以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;

分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根;

根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;

根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。

2.根据权利要求1所述的方法,其特征在于,所述根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子,包括:根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;

根据神经网络中神经元的关键性确定神经元关键性因子;

根据所述神经网络处理的数据的数据类型确定数据类型特性;

根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。

3.根据权利要求2所述的方法,其特征在于,所述根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子,包括:根据公式AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量确定第i个神经元的结构脆弱因子,其中i为正整数且小于等于当前层神经元总数。

4.根据权利要求3所述的方法,其特征在于,所述根据神经网络中神经元的关键性确定神经元关键性因子,包括:根据公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。

5.根据权利要求4所述的方法,其特征在于,所述根据所述神经网络处理的数据的数据类型确定数据类型特性,包括:根据公式M=(0的位数/总位数)*β确定所述数据类型特性,其中,M为所述数据类型特性,β为数据类型因子。

6.根据权利要求5所述的方法,其特征在于,所述根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子,包括:根据公式NVFi=AVFi*(əE/əy)*M确定第i个神经元的脆弱因子;

根据公式 计算所述神经网络中各层的脆弱因子,其中NVFlayer为神经网络中当前层的脆弱因子,NVFi为当前层中第i个神经元的脆弱因子,n为当前层神经元总数。

7.根据权利要求1所述的方法,其特征在于,还包括:根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子;

根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数。

8.根据权利要求7所述的方法,其特征在于,所述根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子,包括:运行所述神经网络得到神经网络中各层的激活值;

将所述神经网络中各层的激活值排序,得到激活边缘值;

以所述激活边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;

以所述激活边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;

以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;

分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中各层的第二调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。

9.根据权利要求1或8所述的方法,其特征在于,基于调节因子确定所述数据的量化值,包括:根据公式xr’=clamp(‑s,s,xr)对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为数据真实值,xr’为限定后的数据真实值;

k‑1

根据公式xq=round((2 ‑1)*(xr’/s))对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数,xq为四舍五入后的数据值;

k‑1

根据公式out=(xq/(2 ‑1))*s确定所述数据的量化值,其中,out为所述数据的量化值。

10.根据权利要求1所述的方法,其特征在于,所述根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;

基于所述神经网络的数据量化精度得到基础量化位数;

基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。

11.根据权利要求7所述的方法,其特征在于,所述根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子、第二调节因子和验证集得到神经网络的数据量化精度;

基于所述神经网络的数据量化精度得到基础量化位数;

基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。

12.根据权利要求10或11所述的方法,其特征在于,所述基于所述神经网络的数据量化精度得到基础量化位数,包括:确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数;

其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。

13.根据权利要求10或11所述的方法,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:确定所述神经网络中各层的脆弱因子的最大值;

将所述脆弱因子的最大值划分为多个区间;

遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。

14.根据权利要求13所述的方法,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;

当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;

当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;

当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。

15.根据权利要求10或11所述的方法,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:对所述神经网络中各层的脆弱因子进行聚类;

对聚类中心值排序后划分为多个区间;

遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。

16.根据权利要求15所述的方法,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;

当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;

当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;

当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。

17.一种电力设备处理加速装置,所述电力设备包括具有神经网络的智能芯片,其特征在于,所述装置包括:第一确定模块,被配置为根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子;

第二确定模块,被配置为根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,包括:将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;

以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;

以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;

以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;

分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根;

第三确定模块,被配置为根据所述脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;

量化模块,被配置为根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。

18.根据权利要求17所述的装置,其特征在于,所述根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子,包括:根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;

根据神经网络中神经元的关键性确定神经元关键性因子;

根据所述神经网络处理的数据的数据类型确定数据类型特性;

根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。

19.根据权利要求18所述的装置,其特征在于,所述根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子,包括:根据公式AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量确定第i个神经元的结构脆弱因子,其中i为正整数且小于等于当前层神经元总数。

20.根据权利要求19所述的装置,其特征在于,所述根据神经网络中神经元的关键性确定神经元关键性因子,包括:根据公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。

21.根据权利要求20所述的装置,其特征在于,所述根据所述神经网络处理的数据的数据类型确定数据类型特性,包括:根据公式M=(0的位数/总位数)*β确定所述数据类型特性,其中,M为所述数据类型特性,β为数据类型因子。

22.根据权利要求21所述的装置,其特征在于,所述根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子,包括:根据公式NVFi=AVFi*(əE/əy)*M确定第i个神经元的脆弱因子;

根据公式 计算所述神经网络中各层的脆弱因子,其中NVFlayer为神经网络中当前层的脆弱因子,NVFi为当前层中第i个神经元的脆弱因子,n为当前层神经元总数。

23.根据权利要求17所述的装置,其特征在于,

所述第二确定模块还被配置为,根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子;

所述第三确定模块还被配置为,根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数。

24.根据权利要求23所述的装置,其特征在于,所述根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子,包括:运行所述神经网络得到神经网络中各层的激活值;

将所述神经网络中各层的激活值排序,得到激活边缘值;

以所述激活边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;

以所述激活边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;

以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;

分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中各层的第二调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。

25.根据权利要求17或24所述的装置,其特征在于,基于调节因子确定所述数据的量化值,包括:根据公式xr’=clamp(‑s,s,xr)对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为数据真实值,xr’为限定后的数据真实值;

k‑1

根据公式xq=round((2 ‑1)*(xr’/s))对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数,xq为四舍五入后的数据值;

k‑1

根据公式out=(xq/(2 ‑1))*s确定所述数据的量化值,其中,out为所述数据的量化值。

26.根据权利要求17所述的装置,其特征在于,所述根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;

基于所述神经网络的数据量化精度得到基础量化位数;

基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。

27.根据权利要求23所述的装置,其特征在于,所述根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子、第二调节因子和验证集得到神经网络的数据量化精度;

基于所述神经网络的数据量化精度得到基础量化位数;

基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。

28.根据权利要求26或27所述的装置,其特征在于,所述基于所述神经网络的数据量化精度得到基础量化位数,包括:确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数;

其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。

29.根据权利要求26或27所述的装置,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:确定所述神经网络中各层的脆弱因子的最大值;

将所述脆弱因子的最大值划分为多个区间;

遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。

30.根据权利要求29所述的装置,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;

当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;

当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;

当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。

31.根据权利要求26或27所述的装置,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:对所述神经网络中各层的脆弱因子进行聚类;

对聚类中心值排序后划分为多个区间;

遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。

32.根据权利要求31所述的装置,其特征在于,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;

当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;

当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;

当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。

33.一种电子设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1到16中任一项所述的方法步骤。

34.一种芯片,其特征在于,

所述芯片包括如权利要求17‑32中任一项所述的装置。

35.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1到16中任一项所述的方法步骤。

说明书 :

电力设备处理加速方法、装置、设备、芯片及介质

技术领域

[0001] 本公开涉及计算机处理技术领域,具体涉及一种电力设备处理加速方法、装置、设备、芯片及介质。

背景技术

[0002] 随着经济和技术的迅速发展,现代社会对于电能的需求量快速增加,目前电力系统在提高性能、效率、可靠性和安全性方面都取得了很多进展。近年来,随着神经网络算法和神经网络硬件芯片的快速发展,将神经网络应用于电力系统将是一个非常有前景的解决方案。电力大数据时代的到来和广域测量系统的广泛应用,为电力系统控制和评估提供了丰富的数据来源。人工智能和深度学习的发展为更好地挖掘系统响应信息与系统状态之间隐藏的映射关系提供了新的技术路线。神经网络拥有强大和快速的并行计算能力、容错性高、学习能力强等优点,在电力系统传输稳定性分析,负荷预测、静态和动态稳定性分析、故障预测等方面能够发挥巨大作用。但现代电力系统规模越来越庞大,系统越来越复杂,未来对可靠性和安全性等方面也会提出更高的要求和挑战。
[0003] 神经网络本身的容错性不足以满足安全关键领域应用的需求。并且现有的容错方案应用在复杂的神经网络上会带来较大开销。有研究证明,用于模型加速的量化算法通过缩减模型尺寸,减少故障次数,提高了网络模型的容错性。现有的量化算法大多从减少精度损失和缩小模型的角度出发,没有充分考虑模型的容错性。因此,设计一种开销小、具有容错性的量化方案,可以有效地提升模型的容错性和能效性。

发明内容

[0004] 为了解决相关技术中的问题,本公开实施例提供一种电力设备处理加速方法、装置、设备、芯片及介质。
[0005] 第一方面,本公开实施例中提供了一种电力设备处理加速方法,所述电力设备包括具有神经网络的智能芯片,其特征在于,所述方法包括:
[0006] 根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子;
[0007] 根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;
[0008] 根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;
[0009] 根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。
[0010] 根据本公开的实施例,所述根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子,包括:
[0011] 根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;
[0012] 根据神经网络中神经元的关键性确定神经元关键性因子;
[0013] 根据所述神经网络处理的数据的数据类型确定数据类型特性;
[0014] 根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。
[0015] 根据本公开的实施例,所述根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子,包括:
[0016] 根据公式AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量确定第i个神经元的结构脆弱因子,其中i为正整数且小于等于当前层神经元总数。
[0017] 根据本公开的实施例,所述根据神经网络中神经元的关键性确定神经元关键性因子,包括:
[0018] 根据公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。
[0019] 根据本公开的实施例,所述根据所述神经网络处理的数据的数据类型确定数据类型特性,包括:
[0020] 根据公式M=(0的位数/总位数)*β确定所述数据类型特性,其中,M为所述数据类型特性,β为数据类型因子。
[0021] 根据本公开的实施例,所述根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子,包括:
[0022] 根据公式NVFi=AVFi*(əE/əy)*M确定第i个神经元的脆弱因子;
[0023] 根据公式 计算所述神经网络中各层的脆弱因子,其中NVFlayer为神经网络中当前层的脆弱因子,NVFi为当前层中第i个神经元的脆弱因子,n为当前层神经元总数。
[0024] 根据本公开的实施例,所述根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,包括:
[0025] 将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;
[0026] 以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;
[0027] 以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;
[0028] 以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;
[0029] 分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0030] 根据本公开的实施例,所述方法还包括:
[0031] 根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子;
[0032] 根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数。
[0033] 根据本公开的实施例,所述根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子,包括:
[0034] 运行所述神经网络得到神经网络中各层的激活值;
[0035] 将所述神经网络中各层的激活值排序,得到激活边缘值;
[0036] 以所述激活边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;
[0037] 以所述激活边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;
[0038] 以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;
[0039] 分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中各层的第二调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0040] 根据本公开的实施例,基于调节因子确定所述数据的量化值,包括:
[0041] 根据公式xr’=clamp(‑s,s,xr)对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为数据真实值,xr’为限定后的数据真实值;
[0042] 根据公式xq=round((2k‑1‑1)*(xr’/s))对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数,xq为四舍五入后的数据值;
[0043] 根据公式out=(xq/(2k‑1‑1))*s确定所述数据的量化值,其中,out为所述数据的量化值。
[0044] 根据本公开的实施例,所述根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,包括:
[0045] 基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;
[0046] 基于所述神经网络的数据量化精度得到基础量化位数;
[0047] 基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0048] 根据本公开的实施例,所述根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数,包括:
[0049] 基于初始量化位数k、所述第一调节因子、第二调节因子和验证集得到神经网络的数据量化精度;
[0050] 基于所述神经网络的数据量化精度得到基础量化位数;
[0051] 基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0052] 根据本公开的实施例,所述基于所述神经网络的数据量化精度得到基础量化位数,包括:
[0053] 确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数;
[0054] 其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。
[0055] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0056] 确定所述神经网络中各层的脆弱因子的最大值;
[0057] 将所述脆弱因子的最大值划分为多个区间;
[0058] 遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0059] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0060] 将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;
[0061] 当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;
[0062] 当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;
[0063] 当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0064] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0065] 对所述神经网络中各层的脆弱因子进行聚类;
[0066] 对聚类中心值排序后划分为多个区间;
[0067] 遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0068] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0069] 将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;
[0070] 当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;
[0071] 当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;
[0072] 当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0073] 第二方面,本公开实施例中提供了一种电力设备处理加速装置,所述电力设备包括具有神经网络的智能芯片,其特征在于,所述装置包括:
[0074] 第一确定模块,被配置为根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子;
[0075] 第二确定模块,被配置为根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;
[0076] 第三确定模块,被配置为根据所述脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;
[0077] 量化模块,被配置为根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。
[0078] 根据本公开的实施例,所述根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子,包括:
[0079] 根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;
[0080] 根据神经网络中神经元的关键性确定神经元关键性因子;
[0081] 根据所述神经网络处理的数据的数据类型确定数据类型特性;
[0082] 根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。
[0083] 根据本公开的实施例,所述根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子,包括:
[0084] 根据公式AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量确定第i个神经元的结构脆弱因子,其中i为正整数且小于等于当前层神经元总数。
[0085] 根据本公开的实施例,所述根据神经网络中神经元的关键性确定神经元关键性因子,包括:
[0086] 根据公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。
[0087] 根据本公开的实施例,所述根据所述神经网络处理的数据的数据类型确定数据类型特性,包括:
[0088] 根据公式M=(0的位数/总位数)*β确定所述数据类型特性,其中,M为所述数据类型特性,β为数据类型因子。
[0089] 根据本公开的实施例,所述根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子,包括:
[0090] 根据公式NVFi=AVFi*(əE/əy)*M确定第i个神经元的脆弱因子;
[0091] 根据公式 计算所述神经网络中各层的脆弱因子,其中NVFlayer为神经网络中当前层的脆弱因子,NVFi为当前层中第i个神经元的脆弱因子,n为当前层神经元总数。
[0092] 根据本公开的实施例,所述根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,包括:
[0093] 将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;
[0094] 以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;
[0095] 以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;
[0096] 以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;
[0097] 分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0098] 根据本公开的实施例,所述第二确定单元还被配置为,根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子;
[0099] 所述第三确定单元还被配置为,根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数。
[0100] 根据本公开的实施例,所述根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子,包括:
[0101] 运行所述神经网络得到神经网络中各层的激活值;
[0102] 将所述神经网络中各层的激活值排序,得到激活边缘值;
[0103] 以所述激活边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;
[0104] 以所述激活边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;
[0105] 以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;
[0106] 分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中各层的第二调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0107] 根据本公开的实施例,基于调节因子确定所述数据的量化值,包括:
[0108] 根据公式xr’=clamp(‑s,s,xr)对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为数据真实值,xr’为限定后的数据真实值;
[0109] 根据公式xq=round((2k‑1‑1)*(xr’/s))对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数,xq为四舍五入后的数据值;
[0110] 根据公式out=(xq/(2k‑1‑1))*s确定所述数据的量化值,其中,out为所述数据的量化值。
[0111] 根据本公开的实施例,所述根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,包括:
[0112] 基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;
[0113] 基于所述神经网络的数据量化精度得到基础量化位数;
[0114] 基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0115] 根据本公开的实施例,所述根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数,包括:
[0116] 基于初始量化位数k、所述第一调节因子、第二调节因子和验证集得到神经网络的数据量化精度;
[0117] 基于所述神经网络的数据量化精度得到基础量化位数;
[0118] 基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0119] 根据本公开的实施例,所述基于所述神经网络的数据量化精度得到基础量化位数,包括:
[0120] 确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数;
[0121] 其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。
[0122] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0123] 确定所述神经网络中各层的脆弱因子的最大值;
[0124] 将所述脆弱因子的最大值划分为多个区间;
[0125] 遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0126] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0127] 将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;
[0128] 当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;
[0129] 当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;
[0130] 当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0131] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0132] 对所述神经网络中各层的脆弱因子进行聚类;
[0133] 对聚类中心值排序后划分为多个区间;
[0134] 遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0135] 根据本公开的实施例,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:
[0136] 将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;
[0137] 当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;
[0138] 当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;
[0139] 当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0140] 第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如上所述的方法。
[0141] 第四方面,本公开实施例提供了一种芯片,所述芯片包括如第二方面中任一实施例所述的装置。
[0142] 第五方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如上所述的方法。
[0143] 根据本公开实施例提供的技术方案,通过综合考虑智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定出神经网络中各层的脆弱因子,结合所述脆弱因子和神经网络中各层的第一调节因子确定所述神经网络中各层的量化位数,根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速,在对电力设备的处理进行加速的同时增加了神经网络容错性,降低了电力设备的故障率,提高了电力设备的可靠性。
[0144] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0145] 结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中。
[0146] 图1示出根据本公开实施例的电力设备处理加速方法的流程图。
[0147] 图2示出根据本公开实施例的神经网络的结构示意图。
[0148] 图3示出根据本公开实施例的神经网络中神经元的关键性对输出结果影响的示意图。
[0149] 图4示出根据本公开实施例的电力设备处理加速方法在神经网络中的流程图。
[0150] 图5示出根据本公开实施例的电力设备处理加速装置的结构框图。
[0151] 图6示出对本公开实施例的电力设备处理加速方法进行测试的实验结果。
[0152] 图7示出对本公开实施例的电力设备处理加速方法进行测试的另一实验结果。
[0153] 图8示出根据本公开实施例的电子设备的结构框图。
[0154] 图9示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。

具体实施方式

[0155] 下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
[0156] 在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
[0157] 另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
[0158] 在本公开中,如涉及对用户信息或用户数据的获取操作或向他人展示用户信息或用户数据的操作,则所述操作均为经用户授权、确认,或由用户主动选择的操作。
[0159] 上文提及,神经网络本身的容错性不足以满足安全关键领域应用的需求。并且现有的容错方案应用在复杂的神经网络上会带来较大开销。有研究证明,用于模型加速的量化算法通过缩减模型尺寸,减少故障次数,提高了网络模型的容错性。现有的量化算法大多从减少精度损失和缩小模型的角度出发,没有充分考虑模型的容错性。因此,设计一种开销小、具有容错性的量化方案,可以有效地提升模型的容错性和能效性。
[0160] 在大部分的系统中,默认使用单精度浮点数表示数值。这个数据类型的表示范围较大,表达精度较高。当系统用定点数,或者用更少的位数表示同一个数值时,这个数值的精确程度下降了,并且数和数之间变得更加离散。例如,当使用8位定点数表示数据时,数据就有256个不同的取值,一般是有128个负数,一个0值,127个正数,这些数值均匀地分布在数轴上。使用的位数越少,表示的范围和精度就会越小。量化技术的提出是为了对神经网络模型的压缩和加速。量化不仅能在内存压缩上起到作用,还能在处理方面加速,因为处理的数据变少,处理量下降了。另外,量化在硬件上也是友好的。硬件的内部结构都是位操作。量化是使用更少的位数表示数据,减少数据的量化位数,从而达到加速的效果。量化方法主要从以下几个方面考虑:根据量化的对象,可以分为只量化权重的方法和同时量化权重和输入的方法;根据量化问题的定义,可以使用优化算法或者启发式算法;根据量化值的分布,可以分为均匀量化与非均匀量化;根据量化值映射,可以分为直接映射和随机映射。
[0161] 在设计量化方案过程中,通常从量化问题定义、量化值分布、量化值映射等方面着手考虑,同时可以使用启发式算法或者优化算法解决量化问题。启发式算法通常将数据直观地映射到最接近的离散数值。如公式(1)所示,
[0162] Q(x)=Δ·round(x/Δ)                       (1)其中,x为在连续空间中原始的高精度数据,Q(x)为在离散空间中量化后的数值,函数round()是对数值进行四舍五入,Δ表示在均匀量化下的单个量化距离(也称为量化级别)。假设x∈[0, 1],量化的位数k k k为k,那么,Δ=1/(2‑1),产生了2个离散数值,即,Δ=max(x)/(2‑1),以充分利用动态的数值范围。除了公式中的基本量化形式外,还可以通过自适应学习算法,对神经网络每层采用不同的量化距离。
[0163] 在量化方案设计中,原始数据是连续的,被映射到一组离散的数据中,这些离散的数据可以具有不同的分布。量化值的离散分布可以分为均匀分布和非均匀分布。均匀分布是在相邻的离散值之间具有相同的步长,是使用最广泛的一种方案,它的优点是容易实现,一个线性函数就可以完成量化值的映射。但是,均匀分布的缺点也很明显,在神经网络中,大部分数据对象的数值呈长钟型分布,即,大部分的数据集中在零值附近,因此,均匀分布方案不能很好地适应数据的实际分布情况。非均匀分布,是指在相邻的离散值之间具有不同的步长,这赋予了量化技术对重要的数据区域更大的选择性和更大的动态范围。非均匀的量化方案有很多,典型的方案有对数分布和自适应分布。对数分布是指各个相邻的离散值之间的步长呈指数级增长,越靠近零值,步长越小,这种方案符合神经网络中数据对象的分布情况。在执行网络推理时,对数分布可以将代价昂贵的乘法运算直接转换为简单的加法运算。除了对数分布方案,非均匀量化还可以具有其他适应性更强的方式。自适应的非均匀量化往往出现在当我们将量化问题转换为一个优化问题求解,以找到一个离散空间来逼近原始数据的高精度空间时,在使用自适应的非均匀量化函数时,所有量化级别都是根据实际数据的分布和学习目标即时确定的,可以更好地适应数据分布。但是,自适应分布的开销可能会比较大,因为每次都要重新计算量化函数的参数。
[0164] 有研究表明,采用模型量化技术,改变了数据的表达方式,减少了模型的存储量和处理量,从而减少模型运行中发生故障的次数,最终增加了模型的容错性。
[0165] dos Santos Fernando Fernandes等人测试了不同平台的不同数据格式精度对软错误的容忍度。他们在FPGA、GPU和Xeon Phis上,运行相同的神经网络应用程序,并通过中子束的照射,为设备注入软错误,测试在故障率的变化下,程序运行结果的正确性。最后结论为,采用位数较少的数据格式可以有效地提升程序的性能;采用位数较少的数据格式可以提高程序的容错性,因为在软错误发生前可以计算更多的数据。
[0166] Majid Sabbagh等人考虑了不同数据类型的故障,设计了一个通用的容错性评估框架,对两种常见的网络模型LeNet5和VGG16进行了实验,并评估了它们在不同压缩类型下的故障恢复能力。压缩类型包括结构化裁剪、非结构化裁剪、二值网络、三值量化和裁剪这四种情况。实验结果证明,压缩之后的网络模型更具有可靠性,特别是采用量化技术,可以在很大程度上增强神经网络的容错性。
[0167] Brandon Reagen等人提出了一种轻量级、专用于深度神经网络DNN的故障注入框架Ares。Ares框架可以快速准确地量化网络模型MLP、CNN和GRU和测试网络模型的容错性。在分析故障和模型的容错性时,Ares框架从模型,层和结构级别为用户提供了不同程度的粒度。实验结果证明,各个DNN的容错性不同,采用权重量化可以提升模型的容错性,因为量化后的数据格式限制了数据的范围,无法产生更大的数据偏差。
[0168] Sparsh Mittal分析了数据格式和数据类型对网络模型的影响。在使用定点数的数据格式过程中,位翻转发生在整数位中带来的数据偏差相对于浮点数中指数位的数据偏差更小,从而网络模型更具有容错性。因此,对于相同的网络模型,采用不同的数据格式将带来不同的容错性。在使用单精度浮点数的数据格式的过程中,数据的高位位翻转将带来更大的数据偏差,更容易导致模型出错,特别是指数位的由0变1的位翻转,其背后的原因是正确的值接近于0。因此,尾数或符号位的微小差异影响可忽略不计。表示范围大的数据格式更容易受到故障的干扰。另外,对于所有的网络模型,每层的激活值都在很小的数据范围内,那么,导致激活数值发生较大变化的故障会影响模型的容错性。
[0169] 综上所述,针对传统硬件的加速量化算法的容错方案,如DMR、TMR、ECC等均能够有效提高系统的容错性,但神经网络应用的计算处理和访存都较密集,对搭载了神经网络的智能芯片而言,采用传统容错方案会带来很大开销。最新的针对神经网络的容错方法往往需要对网络重新训练,或者增加额外的硬件单元,成本和能耗开销较大。
[0170] 鉴于此,本公开实施例提供了一种电力设备处理加速方法,所述电力设备包括具有神经网络的智能芯片,其特征在于,所述方法包括:根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子;根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;根据所述脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。根据本公开实施例的技术方案,通过综合考虑智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定出神经网络中各层的脆弱因子,结合所述脆弱因子和神经网络中各层的第一调节因子确定所述神经网络中各层的量化位数,根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速,在对电力设备的处理进行加速的同时增加了神经网络容错性,降低了电力设备的故障率,提高了电力设备的可靠性。
[0171] 图1示出根据本公开实施例的电力设备处理加速方法的流程图。
[0172] 如图1所示,所述电力设备处理加速方法包括步骤S101‑步骤S104:
[0173] 在步骤S101中,根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子;
[0174] 在步骤S102中,根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;
[0175] 在步骤S103中,根据所述脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;
[0176] 在步骤S104中,根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。
[0177] 在本公开实施例中,所述电力设备可以是电力系统中任意包括具有神经网络的智能芯片的设备。所述智能芯片可能由于高能粒子撞击、器件老化、温度变化等不可避免的外部因素和工艺偏差等内部特性,导致在程序运行中带来软错误,使内存或者逻辑发生位翻转,导致程序运行失败。为实现所述电力设备的处理加速,可以对所述智能芯片中的神经网络进行量化处理。
[0178] 在实际应用中,软错误的发生和过度量化都可能带来较大的精度损失,使神经网络失去识别能力。而神经网络每层对软错误和量化的敏感性不同,如果向每层随机地注入误差或设置不同的量化位数,并记录其对最终结果的影响,可以直观地确定每层的重要性。但是,这种方法由于神经网络层数可能过多,实验过于复杂且费时费力往往难以实现。
[0179] 在本公开实施例中,通过将神经网络硬件结构脆弱因子、神经元关键性因子和数据类型特性结合能够刻画神经元的差异,量化每层对软错误和量化精度的敏感性。具体地,所述根据所述智能芯片中神经网络硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子,包括:根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;根据神经网络中神经元的关键性确定神经元关键性因子;根据所述神经网络处理的数据的数据类型确定数据类型特性;根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。
[0180] 在本公开实施例中,首先确定各神经元的结构脆弱因子。结构脆弱因子考虑了智能芯片中神经网络硬件结构特性,具体地,考虑了正确执行位(Architecture Correct Excute,ACE)的比例和神经元的执行时间。图2示出根据本公开实施例的神经网络的结构示意图,如图2所示,对于神经网络而言,由于其运算符(卷积、完全连接和池化等)的操作是固定的,并且每一层的计算始终是循环重复的,因此神经元的结构通常在每一层中都是相似的,从神经元的结构分析,可以清楚的看出每个神经元的ACE比率是固定的,主要区别在于网络中每个神经元的驻留时间或生命周期不同。结构脆弱因子反映了神经元驻留时间对脆弱因子的影响。由于每层的计算量不同,不同层在加速器上的驻留时间是不同的,驻留时间长的层受到软错误影响的可能性更大。此外,加速器的并行度也影响计算时间,通过计算每层的计算量和硬件加速器的并行度,可以得到每层的驻留时间,衡量软错误的影响。当前层中第i个神经元的结构脆弱因子AVFi计算公式如式(2)所示:
[0181] AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量                       (2)
[0182] 其中i为正整数且小于等于当前层神经元总数n。
[0183] 结构脆弱因子只体现了时间的变化对于神经网络结构脆弱度的影响,并没有考虑神经网络自身的独特性,所以只考虑结构脆弱因子不足以衡量软错误影响输出结果的概率。已有研究发现神经网络本身就有一定的容错性,并且每个神经元受软错误影响的程度也不同。神经元分为关键神经元和非关键神经元,非关键的神经元遇到软错误攻击后,对输出结果不会产生大的影响,输出结果是应用可以接受的范围。但是如果关键的神经元受到软错误的攻击后,会对网络造成严重的影响,其输出结果是错误的,是很多应用无法接受的结果。图3示出根据本公开实施例的神经网络中神经元的关键性对输出结果影响的示意图,其中NN为神经网络(Neural Network),从图3中可以看出,神经元的关键性对于输出结果的影响具有差异性,神经网络中的软错误会有两种方式被覆盖,包括重写覆盖和被网络自身的容错性所覆盖,但是并不是所有的神经元都可以容忍软错误。
[0184] 在本公开实施例中,鉴于AVF不考虑神经网络的唯一性和神经元之间的差异的问题,在确定所述神经网络中各层的脆弱因子时,进一步考虑了神经元的关键性。反向传播过程中的梯度可以计算出该神经元的关键性,该方法有效地应用于任何拓扑结构的神经网络,如果某个神经元上的小抖动会引起最终输出质量严重下降,则认为这个神经元是关键的。具体地,可以通过公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。
[0185] 神经网络可以处理多种不同类型的数据,不同的数据类型可以在能耗,准确性甚至性能之间提供不同的权衡,因此必须从错误传播的角度考虑数据类型的敏感性。神经网络中的数据可以用两种类型表示:定点数据类型和浮点数据类型。对于这两种数据类型,位的不同位置受到软错误的影响也不同。对于浮点数据,从0到1的有效位翻转比从1到0的翻转更有可能导致数据损坏,这是因为网络中的正确值通常聚集在0附近,并且符号位的小偏差不会对网络的输出结果产生太大影响。而对于定点数据,其整数部分容易受到攻击,因此我们需要考虑数据类型对于神经网络脆弱因子的影响。
[0186] 在本公开实施例中,神经网络处理的数据的数据类型特性用M表示,M的计算公式如式(3)所示:
[0187] M=(0的位数/总位数)*β (3)
[0188] 其中,β为数据类型因子,根据数据类型的不同,例如定点数据或浮动数据而不同,并且数据的指数、整数和尾数不同也会产生不同的β。在本公开的一个具体实施方式中,可以通过故障注入和高斯过程回归获得β的值。
[0189] 在本公开实施例中,在分别确定了神经网络的结构脆弱因子、神经元关键性因子和数据类型特性后,可以根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。具体地,可以根据公式(4)确定当前层中第i个神经元的脆弱因子NVFi:
[0190] NVFi=AVFi*(əE/əy)*M (4)
[0191] 在确定了当前层中每一个神经元的脆弱因子后,可以根据公式(5)确定神经网络中当前层的脆弱因子NVFlayer:
[0192] (5)
[0193] 进一步地,可以根据所述神经网络中各层的脆弱因子确定整个神经网络的脆弱因子NVFnetwork,计算公式如式(6)所示:
[0194] (6)
[0195] 其中,l为所述神经网络中的总层数。
[0196] 由于神经网络中的数值大部分在0左右,如果将数据直接地量化为定点数而不加调节,量化后的数据和实际数据相差较大,量化带来的神经网络精度损失很大。同时,如果神经网络中发生软错误,带来的数据偏差也比较大。因此,有必要设计合适的调节因子,使量化后的数据和实际数据尽量接近,还能限定数据的范围,令发生位翻转时带来的数据偏差变小。
[0197] 在本公开实施例中,可以根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,然后根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,进而实现对神经网络的量化。由于调节因子代表了量化后的最大值,因此,调节因子的取值可以从每组参数按升序排序后较边缘区域得到。为了衡量调节因子取值的优劣,可以使用L2范数衡量的真实值与量化值之间的差距,差距越小说明量化效果越好。
[0198] 在本公开实施例中,所述根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,可以由以下方式实现:将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0199] 其中,所述权重边缘值为权重的最大和/或最小值, 所述第一比例系数至第N比例系数可以为递增的系数,也可以为递减的系数,还可以为以其他方式排列的系数,此处不做限制。在本公开的一个具体实施方式中,所述第一比例系数可以是90%,第二比例系数可以是99%,第三比例系数可以是99.9%,依次递增。
[0200] 在本公开实施例中,基于调节因子确定所述数据的量化值,可以通过以下方式实现:根据公式(7)
[0201] xr’=clamp(‑s,s,xr) (7)
[0202] 对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为数据真实值,xr’为限定后的数据真实值;根据公式(8)
[0203] xq=round((2k‑1‑1)*(xr’/s)) (8)
[0204] 对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数, xq为四舍五入后的数据值;根据公式(9)
[0205] out=(xq/(2k‑1‑1))*s (9)
[0206] 确定所述数据的量化值,其中,out为所述数据的量化值。在本公开的一个具体实施方式中,所述初始量化位数k可以设置为8位,数据真实值可以是32位。
[0207] 在本公开实施例中,在确定了所述神经网络中各层的脆弱因子和第一调节因子后,可以根据所述神经网络中各层的脆弱因子和第一调节因子确定所述神经网络中各层的量化位数。在本公开实施例中,对于神经网络中每层的权重值采用了不同的量化处理方式,由于权重值将被多次使用,因此在本公开实施例的技术方案中设计了映射过程为每层的权重值选择不同的量化位数,以保障神经网络正常工作时的高精度和提高发生错误时的容错性。
[0208] 在本公开实施例中,所述根据所述神经网络中各层的脆弱因子和第一调节因子确定所述神经网络中各层的量化位数,可以通过以下方式实现:基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;基于所述神经网络的数据量化精度得到基础量化位数;基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0209] 具体地,可以首先确定一个初始量化位数k,在本公开的一个具体实施方式中,所述初始量化位数k可以为8。接下来分别以所述神经网络中各层的第一调节因子作为整个神经网络的调节因子,运行所述神经网络并将运行结果与一验证集相比较,得到神经网络的数据量化精度。然后确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数,其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。在本公开的一个具体实施方式中,所述数据真实值可以是32位浮点数据的真实值。
[0210] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,可以通过以下方式实现:确定所述神经网络中各层的脆弱因子的最大值;将所述脆弱因子的最大值划分为多个区间;遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。具体地,可以将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0211] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,还可以通过以下方式实现:对所述神经网络中各层的脆弱因子进行聚类;对聚类中心值排序后划分为多个区间;遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。具体地,可以将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0212] 根据本公开实施例的技术方案,通过综合考虑智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定出神经网络中各层的脆弱因子,结合所述脆弱因子和神经网络中各层的第一调节因子确定所述神经网络中各层的量化位数,根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速,在对电力设备的处理进行加速的同时增加了神经网络容错性,降低了电力设备的故障率,提高了电力设备的可靠性。
[0213] 在本公开实施例中,还可以基于所述神经网络各层的激活值确定所述神经网络中各层的第二调节因子,然后根据所述脆弱因子、第一调节因子和第二调节因子确定所述神经网络中各层的量化位数。与神经网络中各层的权重值是静态(神经网络运行之前)时就已经确定的值不同,神经网络各层的激活值需要在神经网络运行后才能确定。在本公开的一个具体实施方式中,可以首先基于所述神经网络的一个验证集来运行该神经网络,得到各层的激活值,然后对所述各层的激活值采用与神经网络中各个层的权重值相同的处理方法进行处理,得到所述第二调节因子。具体过程此处不再赘述。
[0214] 在本公开实施例中,在根据所述脆弱因子、第一调节因子和第二调节因子确定所述神经网络中各层的量化位数时,由于8位的激活值已包含很多特征,继续量化可能损害精度,且每次推理的激活值特征是不同的,简单地用相同的位数量化每次不同的激活值会影响网络的精度,因此,同样可以直接将激活值映射到8位。
[0215] 图4示出根据本公开实施例的电力设备处理加速方法在神经网络中的流程图。
[0216] 如图4所示,电力设备处理加速方法由所述电力设备中智能芯片上的神经网络执行,所述神经网络包括预先训练好的神经网络模型,例如深度神经网络(Deep Neural Networks,DNN)模型,所述预先训练好的DNN模型具有一定的神经网络结构和神经网络参数,其中,所述神经网络结构可以包括各层中乘法器和加法器的数量、神经网络在运行时各层使用的乘法器和加法器的数量等,所述神经网络参数可以包括各神经元的关键性、数据类型特性、各层权重和激活值等,基于上述神经网络结构和神经网络参数可以确定神经网络中各层的脆弱因子以及整个神经网络的脆弱因子;基于上述神经网络参数和验证数据集可以确定神经网络中各层的调节因子;最后,基于所述脆弱因子和所述调节因子即可确定神经网络中各层的量化位数。采用量化后的数据进行计算、处理,则可实现包括具有该神经网络的智能芯片的电子设备的处理加速。
[0217] 图5示出根据本公开实施例的电力设备处理加速装置的结构框图。
[0218] 如图5所示,所述电力设备处理加速装置500包括:
[0219] 第一确定模块510,被配置为根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定所述神经网络中各层的脆弱因子;
[0220] 第二确定模块520,被配置为根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;
[0221] 第三确定模块530,被配置为根据所述脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;
[0222] 量化模块540,被配置为根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。
[0223] 在本公开实施例中,所述根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子,包括:根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子;根据神经网络中神经元的关键性确定神经元关键性因子;根据所述神经网络处理的数据的数据类型确定数据类型特性;根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子。
[0224] 在本公开实施例中,所述根据所述智能芯片中神经网络硬件结构特性确定各神经元的结构脆弱因子,包括:根据公式AVFi=当前神经元所在层中所有乘法器和加法器的数量/当前神经元所在层能够支持的最大乘法器和加法器的数量确定第i个神经元的结构脆弱因子,其中i为正整数且小于等于当前层神经元总数。
[0225] 在本公开实施例中,所述根据神经网络中神经元的关键性确定神经元关键性因子,包括: 根据公式əE/əy确定所述神经元关键性因子,其中,E为所述神经网络当前预测结果与真实结果之间的差值,y为当前神经元的输出,ə为求偏导。
[0226] 在本公开实施例中,所述根据所述神经网络处理的数据的数据类型确定数据类型特性,包括:根据公式M=(0的位数/总位数)*β确定所述数据类型特性,其中,M为所述数据类型特性,β为数据类型因子。
[0227] 在本公开实施例中,所述根据所述结构脆弱因子、神经元关键性因子和数据类型特性确定所述神经网络中各层的脆弱因子,包括:根据公式NVFi=AVFi*(əE/əy)*M确定第i个神经元的脆弱因子;根据公式 计算所述神经网络中各层的脆弱因子,其中NVFlayer为神经网络中当前层的脆弱因子,NVFi为当前层中第i个神经元的脆弱因子,n为当前层神经元总数。
[0228] 在本公开实施例中,所述根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子,包括:将所述神经网络中每一层的权重分别排序,得到当前层的权重边缘值,所述权重边缘值为权重的最大和/或最小值;以所述权重边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;以所述权重边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数;分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中当前层的第一调节因子,进而确定所述神经网络中各层的第一调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0229] 在本公开实施例中,所述第二确定单元还被配置为,根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子;所述第三确定单元还被配置为,根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数。
[0230] 在本公开实施例中,所述根据所述神经网络中各层的激活值,确定所述神经网络中各层的第二调节因子,包括:运行所述神经网络得到神经网络中各层的激活值;将所述神经网络中各层的激活值排序,得到激活边缘值;以所述激活边缘值与第一比例系数的乘积作为调节因子,基于所述调节因子确定所述神经网络处理的数据的第一量化值;以所述激活边缘值与第二比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第二量化值;以此类推,直至以所述权重边缘值与第N比例系数的乘积作为调节因子,基于所述调节因子确定所述数据的第N量化值,其中,N为正整数; 分别计算第一至第N量化值与数据真实值的L2范数,确定得到最小L2范数的量化值对应的调节因子为所述神经网络中各层的第二调节因子,其中,L2范数为向量中各元素的平方和然后求平方根。
[0231] 在本公开实施例中,基于调节因子确定所述数据的量化值,包括:根据公式xr’=clamp(‑s,s,xr)对数据真实值进行限定,其中,clamp()为区间限定函数,s为调节因子,xr为k‑1数据真实值,xr’为限定后的数据真实值;根据公式xq=round((2 ‑1)*(xr’/s))对所述限定后的数据真实值进行四舍五入计算,其中,round()为四舍五入函数,k为初始量化位数,xqk‑1
为四舍五入后的数据值;根据公式out=(xq/(2 ‑1))*s确定所述数据的量化值,其中,out为所述数据的量化值。
[0232] 在本公开实施例中,所述根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子和验证集得到神经网络的数据量化精度;基于所述神经网络的数据量化精度得到基础量化位数;基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0233] 在本公开实施例中,所述根据所述脆弱因子、第一调节因子和第二调节因子,确定所述神经网络中各层的量化位数,包括:基于初始量化位数k、所述第一调节因子、第二调节因子和验证集得到神经网络的数据量化精度;基于所述神经网络的数据量化精度得到基础量化位数;基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数。
[0234] 在本公开实施例中,所述基于所述神经网络的数据量化精度得到基础量化位数,包括:确定满足第一条件的所述神经网络的数据量化精度对应的数据最小位数为所述基础量化位数;其中,所述第一条件为所述数据量化后的精度与数据真实值的精度之间的差值小于第一阈值。
[0235] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:确定所述神经网络中各层的脆弱因子的最大值;将所述脆弱因子的最大值划分为多个区间;遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0236] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将所述脆弱因子的最大值划分为三个区间,分别为最小值区间、中间值区间和最大值区间;当所述神经网络中当前层的脆弱因子位于所述最小值区间时,所述当前层的量化位数为所述基础量化位数;当所述神经网络中当前层的脆弱因子位于所述中间值区间时,所述当前层的量化位数为所述基础量化位数加1;当所述神经网络中当前层的脆弱因子位于所述最大值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0237] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:对所述神经网络中各层的脆弱因子进行聚类;对聚类中心值排序后划分为多个区间;遍历所述神经网络中每一层的脆弱因子,根据各层脆弱因子与所述脆弱因子的最大值的区间对应关系,修正各层的基础量化位数,得到所述神经网络中各层的量化位数。
[0238] 在本公开实施例中,所述基于所述脆弱因子对所述基础量化位数进行修正,得到所述神经网络中各层的量化位数,包括:将排序后的聚类中心值划分为三个区间,分别为最小聚类值区间、中间聚类值区间和最大聚类值区间;当所述神经网络中当前层的脆弱因子位于所述最小聚类值区间时,所述当前层的量化位数为所述基础量化位数;当所述神经网络中当前层的脆弱因子位于所述中间聚类值区间时,所述当前层的量化位数为所述基础量化位数加1;当所述神经网络中当前层的脆弱因子位于所述最大聚类值区间时,所述当前层的量化位数为所述基础量化位数加2。
[0239] 根据本公开实施例的技术方案,通过综合考虑智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型,确定出神经网络中各层的脆弱因子,结合所述脆弱因子和神经网络中各层的第一调节因子确定所述神经网络中各层的量化位数,根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速,在对电力设备的处理进行加速的同时增加了神经网络容错性,降低了电力设备的故障率,提高了电力设备的可靠性。
[0240] 图6示出对本公开实施例的电力设备处理加速方法进行测试的实验结果;图7示出对本公开实施例的电力设备处理加速方法进行测试的另一实验结果。
[0241] 具体地,上述测试是在数据集MNIST、CIFAR10和CIFAR100下,对所述电力设备中智能芯片上加载的神经网络分别为LeNet5、AlexNet、VGG、ResNet和MobileNet进行的,测试了模型的精度损失和容错性。采用本公开实施例提供的电力设备处理加速方法的量化位数在8位以下时,精度损失可在1%以内,保证了系统精度。
[0242] 图6示出在数据集MNIST和CIFAR10下进行测试的结果,图7示出在数据集CIFAR100下进行测试的结果,在图6和图7中,左侧曲线均代表未使用本公开实施例提供的加速方案的量化结果,右侧曲线均代表使用了本公开实施例提供的加速方案的量化结果。从图6和图7可以看到,在保证相同精度的情况下,使用了本公开实施例提供的加速方案神经网络可以容忍更高的故障率,相比未进行加速的原始神经网络,采用本公开实施例提供的技术方案之后可容忍的故障率提高了10倍以上,明显增强了模型的容错性。
[0243] 进一步地,表1示出量化精度损失实验的结果,实验基于MNIST、CIFAR10、CIFAR100和ILSVRC 2012数据集上的各种常见神经网络进行,其中,混合量化是指在采用本公开实施例提供的加速方法确定量化位数时,权重位数不固定而激活位数采用8位;8位量化是指采用本公开实施例提供的加速方法确定量化位数时,权重位数和激活位数均采用8位;Baseline是指基线方案。由表1可以看出,采用本公开实施例的加速方法对数据进行量化后,量化精度与32位浮点数的精度相差不大,精度损失都在可接受的范围内。
[0244] 表1
[0245]
[0246] 表2示出在数据集CIFAR10下,对采用了本公开实施例提供的加速方法的VGG11神经网络与基于强化学习的加速方法ReleQ的VGG11神经网络在没有故障发生时的测试结果。由表2可以看到,本公开实施例提供的方案可以提供更低的量化位数,提高了处理速度,但在没有故障发生的情况下,本公开实施例提供的方案的精度损失大于ReleQ方案。
[0247] 表2
[0248]
[0249] 本公开实施例还提供一种芯片,所述芯片包括上述电力设备处理加速装置,所述装置可以通过软件、硬件或者两者的结合实现成为芯片的部分或者全部。
[0250] 本公开还公开了一种电子设备,图8示出根据本公开实施例的电子设备的结构框图。
[0251] 如图8所示,所述电子设备包括存储器和处理器,其中,存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现根据本公开的实施例的电力设备处理加速方法。
[0252] 其中,所述电力设备包括具有神经网络的智能芯片,,所述电力设备处理加速方法包括:根据所述智能芯片中神经网络的硬件结构、神经网络中神经元的关键性和所述神经网络处理的数据的数据类型特性,确定所述神经网络中各层的脆弱因子;根据所述神经网络中各层的权重,确定所述神经网络中各层的第一调节因子;根据所述神经网络中各层的脆弱因子和第一调节因子,确定所述神经网络中各层的量化位数;根据确定的所述量化位数对所述神经网络进行量化,以使包括具有所述神经网络的智能芯片的电力设备实现处理加速。
[0253] 图9示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
[0254] 如图9所示,计算机系统包括处理单元,其可以根据存储在只读存储器(ROM)中的程序或者从存储部分加载到随机访问存储器(RAM)中的程序而执行上述实施例中的各种方法。在RAM中,还存储有计算机系统操作所需的各种程序和数据。处理单元、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
[0255] 以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信过程。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。其中,所述处理单元可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
[0256] 特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。
[0257] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0258] 描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
[0259] 作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
[0260] 以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。