一种神经网络压缩方法及装置制造方法及图纸

技术编号:29419474 阅读:14 留言:0更新日期:2021-07-23 23:13
一种神经网络压缩方法及装置,用以解决现有技术中不能很好地适配处理设备的能力,达不到较好的处理效果的问题。方法包括:根据处理设备的处理能力信息,确定稀疏化单位长度;在对神经网络模型进行当前次训练时,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,得到当前次训练参照的第j组权重;根据得到的当前次训练参照的各组权重,对神经网络模型进行当前次训练;其中,稀疏化单位长度为处理设备进行矩阵运算时一次运算的数据长度,第j组权重包括的权重个数为稀疏化单位长度;j取遍1至m中的任意一个正整数,m为对神经网络模型的所有权重按照稀疏化单位长度分组后得到的权重总组数。

【技术实现步骤摘要】
【国外来华专利技术】一种神经网络压缩方法及装置
本申请涉及神经网络领域,尤其涉及一种神经网络压缩方法及装置。
技术介绍
当前深度学习技术在业界上如火如荼,各行业都在将深度学习技术应用于各自的领域中。众所周知,深度学习模型(也即神经网络模型)在运行时,涉及到大量的浮点型的矩阵运算,而神经网络通常过度参数化,深度学习模型存在明显的冗余,这导致计算和存储的浪费。为了简化模型的计算和存储空间,当前业界提出了多种压缩方法,例如多种模型稀疏化的方法,这些方法通过剪枝、量化等方式,将模型权重矩阵中表达力不强的权重置零,以达到简化模型计算和存储的目的。目前,例如在对深度学习模型进行稀疏化时,深度学习模型中每个权重的值都是根据训练集自动学习得到,在训练过程中进行随机的稀疏化,并不能针对性的对权重进行稀疏化处理,使得后续处理设备只能依赖随机稀疏化得到的深度学习模型进行数据处理,不能很好地适配处理设备的能力,达不到较好的处理效果。
技术实现思路
本申请实施例提供了一种神经网络压缩方法及装置,用以解决现有技术中不能很好地适配处理设备的能力,达不到较好的处理效果的问题。第一方面,本申请提供了一种神经网络压缩方法,根据处理设备的处理能力信息确定稀疏化单位长度;之后在对神经网络模型进行当前次训练时,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,得到当前次训练参照的第j组权重;其中,所述稀疏化单位长度为所述处理设备进行矩阵运算时一次运算的数据长度,第j组权重包括的权重个数为所述稀疏化单位长度;所述j取遍1至m中的任意一个正整数,所述m为对所述神经网络模型的所有权重按照所述稀疏化单位长度分组后得到的权重总组数;根据得到的当前次训练参照的各组权重,对所述神经网络模型进行当前次训练。通过上述方法,在进行神经网络压缩时,可以基于处理设备的能力信息去确定稀疏化单位长度,在训练过程中对基于稀疏化单位长度分组后的权重进行处理,可以根据处理设备的能力不同,使神经网络模型适配不同的处理设备的能力,以使后续处理设备达到比较好的处理效果。在一种可能的设计中,根据处理设备的处理能力信息确定稀疏化单位长度,具体方法可以为:确定所述处理设备中寄存器的长度或者所述处理设备中指令集一次处理的最大数据长度,然后将所述寄存器的长度或者所述指令集一次处理的最大数据长度作为所述稀疏化单位长度。通过上述方法,可以准确地确定所述稀疏化单位长度,以适配所述处理设备的处理能力。在一种可能的设计中,所述神经网络压缩装置还可以确定所述处理设备中的计算单元的位宽,并将确定的所述计算单元的位宽作为所述稀疏化单位长度。其中,所述计算单元可以但不限于为GPU、NPU等等。通过上述方法,可以准确地确定所述稀疏化单位长度,以适配所述处理设备的处理能力。在一种可能的设计中,在对所述神经网络进行首次训练之前,根据初始神经网络模型的初始权重阈值,对所述初始神经网络模型的所有权重进行剪裁。通过上述方法,先对神经网络进行一次剪裁,可以节省后续训练过程中的一些处理流程,提高运算速度。在一种可能的设计中,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,具体可以包括以下五种情况:情况1、在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重全部小于置零权重阈值时,将所述上一次训练后得到的第j组权重全部置零;情况2、在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重不全部都小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;情况3、在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值均小于置零权重阈值时,将所述上一次训练后得到的第j组权重中的所述非零值的权重均置零;情况4、在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值不均小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;情况5、在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重不小于设定比重阈值时,保持所述上一次训练后得到的第j组权重不变。通过上述方法,可以根据不同的实际情况对上一次训练后的权重进行调整,以使后续得到神经网络模型的权重零值更规则地分布,以使尽可能多的零值连续分布在一组权重中,从而可以使后续应用该神经网络模型进行数据处理时,减少访问数据时间,提高运算速度。在一种可能的设计中,所述置零权重阈值可以是基于所述初始权重阈值确定的,例如,所述置零权重阈值可以为所述初始权重阈值设定倍数的值,所述设定倍数大于1。这样可以使后续判断过程中更加贴合当前权重的取值范围。在一种可能的设计中,判断所述上一次训练参照的第j组权重是否全部为零具体方法可以为:确定置零标记数据结构中第j组权重对应的置零标记是否为零;当所述置零标记为零时,判定所述上一次训练参照的第j组权重全部为零;当所述置零标记为非零值时,判定所述上一次训练参照的第j组权重不全为零。通过上述方法可以准确地确定上一次训练参照的第j组权重是否全部为零,以根据判断结果进行后续处理。在一种可能的设计中,在将所述上一次训练后得到的第j组权重全部置零之后,或者在将所述非零值的权重均置零之后,还将当前的置零标记数据结构中第j组权重对应的置零标记更新为零;或者,在保持所述上一次训练后得到的第j组权重不变之后,还将当前的置零标记数据结构中第j组权重对应的置零标记更新为非零值。通过上述方法,可以实时更新所述置零标记数据结构中的置零标记,以使进行权重调整时可以更准确地判断上一次训练参照的第j组权重是否全部为零。第二方面,本申请提供了一种数据处理方法,获取目标神经网络模型的权重,并基于所述目标神经网络模型的权重进行如下处理:在第p次处理时,判断第q组权重是否全部为零,若是则根据矩阵运算类型或者根据所述矩阵运算类型和待处理的矩阵数据生成第一运算结果并保存,否则根据所述第q组权重、所述待处理的矩阵数据和所述矩阵运算类型生成第二运算结果并保存;其中,所述目标神经网络模型是基于稀疏化单位长度对神经网络模型的权重神经网络分组后训练得到的最终神经网络模型;所述稀疏化单位长度为基于处理设备的处理能力信息确定的,所述稀疏化单位长度为进行矩阵运算时一次运算的数据长度;第q组权重包括的权重的个数为稀疏化单位长度;所述q取遍1至f中的任意一个正整数,所述f为所述目标神经网络模型的所有权重按照所述稀疏化单位长度分组后的总组数;所述p取遍1到f中的任意一个正整数。通过上述方法,由于应用处理设备的处理能力信息得到的稀疏本文档来自技高网...

【技术保护点】
一种神经网络压缩方法,其特征在于,包括:/n根据处理设备的处理能力信息,确定稀疏化单位长度,所述稀疏化单位长度为所述处理设备进行矩阵运算时一次运算的数据长度;/n在对神经网络模型进行当前次训练时,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,得到当前次训练参照的第j组权重;其中,第j组权重包括的权重个数为所述稀疏化单位长度;所述j取遍1至m中的任意一个正整数,所述m为对所述神经网络模型的所有权重按照所述稀疏化单位长度分组后得到的权重总组数;/n根据得到的当前次训练参照的各组权重,对所述神经网络模型进行当前次训练。/n

【技术特征摘要】
【国外来华专利技术】一种神经网络压缩方法,其特征在于,包括:
根据处理设备的处理能力信息,确定稀疏化单位长度,所述稀疏化单位长度为所述处理设备进行矩阵运算时一次运算的数据长度;
在对神经网络模型进行当前次训练时,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,得到当前次训练参照的第j组权重;其中,第j组权重包括的权重个数为所述稀疏化单位长度;所述j取遍1至m中的任意一个正整数,所述m为对所述神经网络模型的所有权重按照所述稀疏化单位长度分组后得到的权重总组数;
根据得到的当前次训练参照的各组权重,对所述神经网络模型进行当前次训练。


如权利要求1所述的方法,其特征在于,根据处理设备的处理能力信息,确定稀疏化单位长度,包括:
确定所述处理设备中寄存器的长度或者所述处理设备中指令集一次处理的最大数据长度;
将所述寄存器的长度或者所述指令集一次处理的最大数据长度作为所述稀疏化单位长度。


如权利要求1或2所述的方法,其特征在于,在对所述神经网络进行首次训练之前,还包括:
根据初始神经网络模型的初始权重阈值,对所述初始神经网络模型的所有权重进行剪裁。


如权利要求1-3任一项所述的方法,其特征在于,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,包括:
在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重全部小于置零权重阈值时,将所述上一次训练后得到的第j组权重全部置零;或者
在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重不全部都小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值均小于置零权重阈值时,将所述上一次训练后得到的第j组权重中的所述非零值的权重均置零;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值不均小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重不小于设定比重阈值时,保持所述上一次训练后得到的第j组权重不变。


如权利要求4所述的方法,其特征在于,判断所述上一次训练参照的第j组权重是否全部为零,包括:
确定置零标记数据结构中第j组权重对应的置零标记是否为零;
当所述置零标记为零时,判定所述上一次训练参照的第j组权重全部为零;
当所述置零标记为非零值时,判定所述上一次训练参照的第j组权重不全为零。


如权利要求4或5所述的方法,其特征在于,在将所述上一次训练后得到的第j组权重全部置零之后,或者在将所述非零值的权重均置零之后,还包括:
将当前的置零标记数据结构中第j组权重对应的置零标记更新为零;或者
在保持所述上一次训练后得到的第j组权重不变之后,还包括:
将当前的置零标记数据结构中第j组权重对应的置零标记更新为非零值。


一种数据处理方法,其特征在于,包括:
获取目标神经网络模型的权重,所述目标神经网络模型是基于稀疏化单位长度对神经网络模型的权重神经网络分组后训练得到的最终神经网络模型;所述稀疏化单位长度为基于处理设备的处理能力信息确定的,所述稀疏化单位长度为进行矩阵运算时一次运算的数据长度;
基于所述目标神经网络模型的权重进行如下处理:
在第p次处理时,判断第q组权重是否全部为零,若是则根据矩阵运算类型或者根据所述矩阵运算类型和待处理的矩阵数据生成第一运算结果并保存,否则根据所述第q组权重、所述待处理的矩阵数据和所述矩阵运算类型生成第二运算结果并保存;
其中,第q组权重包括的权重的个数为稀疏化单位长度;所述q取遍1至f中的任意一个正整数,所述f为所述目标神经网络模型的所有权重按照所述稀疏化单位长度分组后的总组数;所述p取遍1到f中的任意一个正整数。


如权利要求7所述的方法,其特征在于,判断第q组权重是否全部为零,包括:
获取所述目标神经网络模型的权重对应的置零标记数据结构;
判断所述置零标记数据结构中所述第q组权重对应的置零标记是否为零。


一种神经网络压缩装置,其特征在于,包括:
确定单元,用于根据处理设备的处理能力信息,确定稀疏化单位长度,所述稀疏化单位长度为所述处理设备进行矩阵运算时一次运算的数据长度;
权重调整单元,用于在对神经网络模型进行当前次训练时,根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整,得到当前次训练参照的第j组权重;其中,第j组权重包括的权重个数为所述稀疏化单位长度;所述j取遍1至m中的任意一个正整数,所述m为对所述神经网络模型的所有权重按照所述稀疏化单位长度分组后得到的权重总组数;
训练单元,用于根据权重调整单元得到的当前次训练参照的各组权重,对所述神经网络模型进行当前次训练。


如权利要求9所述的装置,其特征在于,所述确定单元,在根据处理设备的处理能力信息确定稀疏化单位长度时,具体用于:
确定所述处理设备中寄存器的长度或者所述处理设备中指令集一次处理的最大数据长度;
将所述寄存器的长度或者所述指令集一次处理的最大数据长度作为所述稀疏化单位长度。


如权利要求9或10所述的装置,其特征在于,还包括:
权重剪裁单元,用于在所述训练单元对所述神经网络进行首次训练之前,根据初始神经网络模型的初始权重阈值,对所述初始神经网络模型的所有权重进行剪裁。


如权利要求9-11任一项所述的装置,其特征在于,所述权重调整单元,在根据上一次训练参照的第j组权重,对上一次训练后得到的第j组权重进行调整时,具体用于:
在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重全部小于置零权重阈值时,将所述上一次训练后得到的第j组权重全部置零;或者
在所述上一次训练参照的第j组权重全部为零、且所述上一次训练后得到的第j组权重不全部都小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值均小于置零权重阈值时,将所述上一次训练后得到的第j组权重中的所述非零值的权重均置零;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重小于设定比重阈值、且所述上一次训练后得到的第j组权重中的非零值不均小于置零权重阈值时,保持所述上一次训练后得到的第j组权重不变;或者
在所述上一次训练参照的第j组权重不全部为零、且所述上一次训练后得到的第j组权重中非零值的个数在所述上一次训练后得到的第j组权重的总个数中所占比重不小于设定比重阈值时,保持所述上一次训练后得到的第j组权重不变。


如权利要求12所述的装置,其特征在于,所述权重调整单元,在判断所述上一次训练参照的第j...

【专利技术属性】
技术研发人员:朱佳峰刘刚毅卢惠莉高伟芮祥麟杨鋆源夏军
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1