数据处理方法及装置、处理器、电子设备及存储介质与流程

摘要: 本公开涉及电数字数据处理领域,具体涉及一种数据处理方法、处理器、数据处理装置、电子设备和非瞬时性计算机可读存储介质。背景技术:1、对于运行在芯片中的网络模型中的...
数据处理方法及装置、处理器、电子设备及存储介质与流程

本公开涉及电数字数据处理领域,具体涉及一种数据处理方法、处理器、数据处理装置、电子设备和非瞬时性计算机可读存储介质。

背景技术:

1、对于运行在芯片中的网络模型中的算子,需要一套科学、分层的验证方案来判定算子精度是否合格。目前主流验证方式很粗放,对卷积、矩阵乘、归一化等所有算子不加区分,全部使用同一个固定误差阈值做精度校验,统一阈值要么过于宽松(放过有问题的算子)要么过于严格(误报正常算子),这种验证方式存在明显局限性。

技术实现思路

1、本公开至少一实施例提供一种数据处理方法,包括:由硬件设备执行网络模型的推理或训练操作,其中,所述网络模型包括多个算子;针对每个算子,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,其中,所述算子的输出张量包括多个元素,所述精度验证结果包括每个元素的精度验证结果;基于所述算子的精度验证结果,确定所述算子是否符合精度要求;其中,所述逐元素精度验证操作包括基于所述算子对应的误差阈值和标准参考值,对所述算子的输出张量中的每个元素进行精度验证,所述算子对应的误差阈值与所述算子所属类别相关,不同类别的算子具有独立的误差阈值,所述类别包括第一类别、第二类别、第三类别、第四类别、第五类别、第六类别、第七类别和第八类别,属于所述第一类别的第一类算子为包括乘累加操作的算子,属于所述第二类别的第二类算子为包括归约累加操作的算子,所述第一类算子对应的误差阈值与所述硬件设备执行所述推理或训练操作时的数据块尺寸、累加器精度以及累加执行顺序中的至少一个相关,所述第二类算子对应的误差阈值与所述硬件设备执行所述第二类算子时产生的中间结果的精度相关;属于所述第三类别的第三类算子为使用所述硬件设备提供的专用指令的特殊函数算子,属于所述第四类别的第四类算子为执行逐元基础运算的算子,属于所述第五类别的第五类算子包括进行逻辑运算或极值运算的算子,属于所述第六类别的第六类算子包括进行形状尺寸变换的算子,属于所述第七类别的第七类算子为复合算子,其中,所述复合算子由多个子算子融合而成,属于所述第八类别的第八类算子包括多线程竞争同一地址的操作,且所述操作依靠硬件原子操作解决所述竞争。

2、例如,在本公开至少一实施例提供的数据处理方法中,所述第一类算子对应的误差阈值还与k呈正相关关系,其中,k表示所述第一类算子进行所述乘累加操作时的累加维度的尺寸,k为正整数。

3、例如,在本公开至少一实施例提供的数据处理方法中,所述第一类算子对应的误差阈值基于第一基础阈值和所述k来确定,其中,所述第一类算子对应的误差阈值随所述k进行缩放,所述第一基础阈值基于所述硬件设备执行所述推理或训练操作时的所述数据块尺寸、所述累加器精度或所述累加执行顺序中的至少一个来确定。

4、例如,在本公开至少一实施例提供的数据处理方法中,所述第一类算子对应的误差阈值呈阶梯状分布,响应于k小于第一阈值,所述第一类算子对应的误差阈值为定值,并且,所述k属于第一范围时所述第一类算子对应的误差阈值小于所述k属于第二范围时所述第一类算子对应的误差阈值,其中,k为正整数且表示所述第一类算子进行所述乘累加操作时的累加维度的尺寸,所述第一范围的最大值小于所述第二范围的最小值,所述第二范围的最大值小于所述第一阈值;响应于所述k大于或等于所述第一阈值,所述第一类算子对应的误差阈值与所述k呈正相关关系。

5、例如,在本公开至少一实施例提供的数据处理方法中,所述第二类算子对应的误差阈值还与l呈正相关关系,其中,所述l表示所述第二类算子包括的所述归约累加操作的累加数量,l为正整数;或者所述第二类算子对应的误差阈值还与所述l以及所述第二类算子的输入张量的数值范围呈正相关关系。

6、例如,在本公开至少一实施例提供的数据处理方法中,所述第二类算子对应的误差阈值基于第二基础阈值和第一系数来确定,其中,所述第二基础阈值基于所述硬件设备执行所述第二类算子时产生的中间结果的精度来确定,所述第二类算子对应的误差阈值随所述第一系数进行缩放,所述第一系数与所述l呈正相关关系,或者,所述第一系数与所述l和所述第二类算子的输入张量的数值范围的乘积呈正相关关系。

7、例如,在本公开至少一实施例提供的数据处理方法中,所述第三类算子对应的误差阈值为第一固定值,所述第四类算子对应的误差阈值为第二固定值,所述第一固定值大于所述第二固定值。

8、例如,在本公开至少一实施例提供的数据处理方法中,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,包括:针对所述第一类算子、所述第二类算子、所述第三类算子或所述第四类算子中的任一类算子:根据所述任一类算子所属类别,确定所述任一类算子对应的误差阈值;基于所述任一类算子中每个元素的数值与所述元素对应的标准参考值,确定所述元素的误差值;对每个元素的误差值与所述任一类算子对应的误差阈值进行比较,得到所述任一类算子的精度验证结果;基于所述算子的精度验证结果,确定所述算子是否符合精度要求,包括:在所述任一类算子的每个元素的误差值都小于或等于所述任一类算子对应的误差阈值时,确定所述任一类算子通过所述逐元素精度验证,否则确定所述任一类算子未通过所述逐元素精度验证。

9、例如,在本公开至少一实施例提供的数据处理方法中,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,包括:针对所述第五类算子或所述第六类算子中的任一类算子,对所述任一类算子的输出张量中的每个元素和所述元素的标准参考值进行逐元素的比特级验证,得到所述任一类算子的精度验证结果;基于所述算子的精度验证结果,确定所述算子是否符合精度要求,包括:当所述任一类算子的精度验证结果指示所述任一类算子的每个元素都与所述元素的标准参考值在比特级一致,确定所述任一类算子通过所述逐元素精度验证,否则确定所述任一类算子未通过所述逐元素精度验证。

10、例如,在本公开至少一实施例提供的数据处理方法中,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,包括:针对所述第七类算子,对所述第七类算子包括的多个子算子分别进行所述逐元素精度验证操作,基于所述算子的精度验证结果,确定所述算子是否符合精度要求,包括:当所述第七类算子包括的每个子算子都通过所述逐元素精度验证,确定所述第七类算子通过所述逐元素精度验证,否则确定所述第七类算子未通过所述逐元素精度验证。

11、例如,在本公开至少一实施例提供的数据处理方法中,所述第八类算子对应的标准参考值包括由参考设备运行n次所述第八类算子时,得到的输出结果的第一均值,n为大于1的正整数,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,包括:执行n次所述第八类算子,得到在n次运行中、所述第八类算子的输出张量的第二均值和方差;基于所述第二均值和所述第一均值,确定所述第八类算子对应的误差值;对所述误差值和所述第八类算子对应的误差阈值进行比较,以及对所述方差和预设方差阈值范围进行比较,得到所述第八类算子的精度验证结果;基于所述算子的精度验证结果,确定所述算子是否符合精度要求,包括:响应于所述第八类算子对应的误差值小于或等于所述第八类算子对应的误差阈值,且所述方差位于所述预设方差阈值范围内,确定所述第八类算子通过所述逐元素精度验证,否则确定所述第八类算子未通过所述逐元素精度验证。

12、例如,本公开至少一实施例提供的数据处理方法还包括:基于每个算子的输出张量,确定所述算子的全局误差指标,其中,所述全局误差指标包括评估所述算子的整体偏差水平的第一指标,评估所述算子的误差离散程度的第二指标,以及评估所述算子的系统性偏差方向的第三指标;基于所述算子的精度验证结果,确定所述算子是否符合精度要求,包括:基于所述算子的精度验证结果和所述全局误差指标,确定所述算子是否符合精度要求。

13、例如,在本公开至少一实施例提供的数据处理方法中,每个算子的第一指标为所述算子包括的多个元素的相对误差的均值,所述第一指标的确定方式为:

14、diff1 =

15、=

16、其中,diff1表示所述第一指标,t表示所述多个元素的总数,表示所述多个元素中第i个元素的相对误差,i依次取1、2、...、t,为表示第一预设阈值的正数,表示第i个元素的数值,表示第i个元素对应的标准参考值。

17、例如,在本公开至少一实施例提供的数据处理方法中,每个算子的第二指标为所述算子包括的多个元素的相对误差的均方根。

18、例如,在本公开至少一实施例提供的数据处理方法中,每个算子的第三指标为所述算子包括的多个元素的误差值之和与第一乘积之间的比值,其中,所述第一乘积为所述多个元素的总数和所述多个元素中的标准参考值的绝对值的最大值的乘积;响应于所述算子的第三指标位于包含零值的预设范围内,表示所述算子不存在系统性偏向性;响应于所述算子的第三指标大于所述预设范围的最大值,表示所述算子存在系统性正偏向性;响应于所述算子的第三指标小于所述预设范围的最小值,表示所述算子存在系统性负偏向性。

19、例如,在本公开至少一实施例提供的数据处理方法中,基于所述算子的精度验证结果和所述全局误差指标,确定所述算子是否符合精度要求,包括:响应于所述算子的精度验证结果指示所述算子通过逐元素精度验证,所述算子的第一指标小于或等于第二预设阈值,所述算子的第二指标小于所述第一指标的预设倍数,所述算子的第三指标位于包含零值的预设范围内,确定所述算子符合所述精度要求,否则确定所述算子不符合所述精度要求。

20、例如,本公开至少一实施例提供的数据处理方法还包括:对符合精度要求的算子进行性能验证;响应于所述符合精度要求的算子通过所述性能验证,确定所述算子合格;其中,所述性能验证包括验证所述算子的计算效率和接口效率是否满足性能要求。

21、本公开至少一实施例提供一种数据处理装置,包括:操作模块,配置为由硬件设备执行网络模型的推理或训练操作,其中,所述网络模型包括多个算子;逐元素精度验证模块,配置为针对每个算子,对所述算子在所述推理或训练操作中的输出张量进行逐元素精度验证操作,得到每个算子的精度验证结果,其中,所述算子的输出张量包括多个元素,所述精度验证结果包括每个元素的精度验证结果;精度检验模块,配置为基于所述算子的精度验证结果,确定所述算子是否符合精度要求;其中,所述逐元素精度验证操作包括基于所述算子对应的误差阈值和标准参考值,对所述算子的输出张量中的每个元素进行精度验证,所述算子对应的误差阈值与所述算子所属类别相关,不同类别的算子具有独立的误差阈值,所述类别包括第一类别、第二类别、第三类别、第四类别、第五类别、第六类别、第七类别和第八类别,属于所述第一类别的第一类算子为包括乘累加操作的算子,属于所述第二类别的第二类算子为包括归约累加操作的算子,所述第一类算子对应的误差阈值与所述硬件设备执行所述推理或训练操作时的数据块尺寸、累加器精度以及累加执行顺序中的至少一个相关,所述第二类算子对应的误差阈值与所述硬件设备执行所述第二类算子时产生的中间结果的精度相关;属于所述第三类别的第三类算子为使用专用指令的特殊函数算子,属于所述第四类别的第四类算子为执行逐元基础运算的算子,属于所述第五类别的第五类算子包括进行逻辑运算或极值运算的算子,属于所述第六类别的第六类算子包括进行形状尺寸变换的算子,属于所述第七类别的第七类算子为复合算子,其中,所述复合算子由多个子算子融合而成,属于所述第八类别的第八类算子包括多线程竞争同一地址的操作,且所述操作依靠硬件原子操作解决所述竞争。

22、本公开至少一实施例提供一种处理器,包括指令解析单元和精度验证单元,其中,所述指令解析单元用于接收和解析精度验证指令,所述精度验证单元在所述指令解析单元解析所述精度验证指令之后,执行根据本公开任一实施例所述的数据处理方法。

23、本公开至少一实施例提供一种电子设备,包括:存储器,非瞬时性地存储有计算机可执行指令;处理器,配置为运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时实现根据本公开任一实施例所述的数据处理方法。

24、本公开至少一实施例提供一种非瞬时性计算机可读存储介质,其中,所述非瞬时性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现根据本公开任一实施例所述的数据处理方法。

25、本公开至少一实施例提供的数据处理方法中,根据算子的数值计算特性,将网络模型的算子分成8个类别,每个类别有独立的精度阈值,消除了统一阈值的精度悖论,避免一刀切的验证方式,将误报率降低80%以上。细粒度的8分类的算子分类,有效区分矩阵乘累加、硬件特殊函数、逻辑运算、归约累加等之间固有的误差生成机理差异,有效提升精度验证准确性,提升精度验证方案的精细化程度。