本发明涉及计算机,更具体地,涉及一种神经网络模型压缩方法、装置、计算系统及存储介质。
背景技术:
1、目前神经网络已经在计算机视觉、自然语言处理等领域取得了巨大的成功。但随着神经网络的规模越来越大,参数量和计算量越来越多,制约了其在资源受限的硬件平台上的使用,如边缘端、移动端等设备。因此,需要对神经网络模型进行压缩,减少神经网络的计算和存储需求,加速神经网络模型的训练和推理。稀疏化正是模型轻量化方法之一。
2、网络参数稀疏化是通过适当的方法减少网络中的冗余成分,以降低网络对计算量和存储空间的需求。现有的网络稀疏化在稀疏粒度方面分为细粒度稀疏和粗粒度稀疏。其中,细粒度稀疏是对神经网络的不同位置的权重进行稀疏化,一般稀疏化后的模型精度损失非常小,甚至不会产生精度损失。但是细粒度稀疏的稀疏方式是非结构化的,稀疏化后的模型参数对硬件并不友好,在部署时存在一些问题,会影响实际性能。而粗粒度稀疏是对神经网络权重的整个卷积核进行稀疏化,是一种结构化的稀疏方式,实际硬件部署后对性能提升比较明显。但是粗粒度稀疏的稀疏方式会在稀疏整个卷积核时丢失该卷积核中的重要权重,模型精度损失大。
技术实现思路
1、鉴于上述问题,本发明的目的在于提供一种神经网络模型的压缩方法、装置、电子设备及计算机可读存储介质,以解决或至少缓解上面存在的问题。
2、根据本发明的第一方面,提供一种神经网络模型的压缩方法,包括:获取神经网络模型的权重矩阵;基于行、列、块中的任一个,将权重矩阵划分为多个层级的权重组,每一层级包括多个层级权重组,层级权重组包括多个权重元素,所述权重元素为下一层级权重组或权重值;根据层级顺序依次对每个层级权重组进行稀疏化处理直至神经网络模型的准确度和/或压缩比达到预定目标,以得到目标权重矩阵。
3、优选地,基于行、列和块中的一个,将权重矩阵划分为多个层级权重组包括:将所述权重矩阵按行、列和块中的任意一个划分为多个第零层级权重组,所述权重元素为权重值;将多个所述第零层级权重组按行、列和块中的任意一个划分为多个第一层级权重组,所述权重元素为第零层级权重组;以此类推,将第k-1层级权重组按行、列和块中的任意一个划分为多个第k层级权重组,所述权重元素为第k-1层级权重组,其中,k为正整数。
4、优选地,不同层级的权重组采用相同或者不同的划分方式。
5、优选地,所述第零层级权重组的数据长度基于加速单元的位宽来确定,加速单元用于执行与神经网络模型相关的运算。
6、优选地,根据层级顺序对每个层级权重组进行稀疏化处理直至神经网络模型的准确度和/或压缩比达到预定目标包括:按照层级顺序依次对每个层级的权重组进行稀疏化处理得到稀疏权重矩阵;在每一层级的权重组稀疏化处理后获取神经网络模型的准确度和/或压缩比;判断当前层级的权重组稀疏化处理后神经网络模型的准确度是否小于第一阈值;若当前层级的权重组稀疏化处理后神经网络模型的准确度小于第一阈值,则停止继续对下一层级的权重组进行稀疏化处理,并将上一层级的权重组稀疏化处理后得到的稀疏权重矩阵作为目标权重矩阵;若当前层级的权重组稀疏化处理后神经网络模型的准确度大于第一阈值,则判断当前层级的权重组稀疏化处理后神经网络模型的压缩比是否大于第二阈值;若当前层级的权重组稀疏化处理后神经网络模型的压缩比大于等于第二阈值,则停止继续对下一层级的权重组进行稀疏化处理,并将当前层级的权重组稀疏化处理后得到的稀疏权重矩阵作为目标权重矩阵;若当前层级的权重组稀疏化处理后神经网络模型的压缩比小于第二阈值则继续对下一层级的权重组进行稀疏化处理。
7、优选地,所述层级顺序包括从第零层级到第k层级或者从第k层级到第零层级。
8、优选地,所述压缩方法还包括:将所述权重矩阵划分成多个权重块矩阵;根据每个权重块矩阵中有效数据的密集度确定其划分的层级数量;基于行、列和块中的一个,根据每个权重块矩阵的层级数量将每个权重块矩阵划分成相应数量的层级权重组;其中,层级数量与权重块矩阵中有效数据的密集度呈反相关。
9、优选地,所述压缩方法还包括:根据每个权重块矩阵中权重值的精度确定其稀疏度;根据每个权重块矩阵的稀疏度依次对每个权重块矩阵划分的多个层级权重组进行稀疏化处理直至神经网络模型的准确度和/或压缩比达到预定目标,以得到目标权重矩阵。
10、优选地,不同权重块矩阵的数据格式相同或者不同,所述数据格式包括数据类型和数据精度;其中,对模型精度敏感的权重块矩阵可以选择高精度数据表示,对模型精度不敏感的权重块矩阵可以选择低精度数据表示。
11、优选地,每一权重块矩阵中,每一层级的权重组按行、列和块中的一个划分,不同层级的权重组采用相同或者不同的划分方式;不同权重块矩阵的同一层级的权重组采用相同或者不同的划分方式。
12、优选地,所述稀疏化处理包括结构化稀疏或者非结构化稀疏。
13、根据本发明的第二方面,提供一种神经网络模型的压缩装置,包括:获取模块,用于获取神经网络模型的权重矩阵;层级划分模块,用于基于行、列、块中的任一个,将权重矩阵划分为多个层级的权重组,每一层级包括多个层级权重组,层级权重组包括多个权重元素,所述权重元素为下一层级权重组或权重值;稀疏模块,用于根据层级顺序依次对每个层级的权重组进行稀疏化处理直至神经网络模型的准确度和/或压缩比达到预定目标,以得到目标权重矩阵。
14、优选地,所述层级划分模块还用于将所述权重矩阵按行、列和块中的任意一个划分为多个第零层级权重组,所述权重元素为权重值;将多个所述第零层级权重组按行、列和块中的任意一个划分为多个第一层级权重组,所述权重元素为第零层级权重组;以此类推,将第k-1层级权重组按行、列和块中的任意一个划分为多个第k层级权重组,所述权重元素为第k-1层级权重组,其中,k为正整数。
15、优选地,不同层级的权重组采用相同或者不同的划分方式。
16、优选地,所述第零层级权重组的数据长度基于加速单元的位宽来确定,加速单元用于执行与神经网络模型相关的运算。
17、优选地,所述稀疏模块包括:稀疏单元,用于根据层级顺序依次对每个层级的权重组进行稀疏化处理得到稀疏权重矩阵;获取单元,用于在每一层级的权重组稀疏化处理后获取神经网络模型的准确度和/或压缩比;判断单元,用于判断当前层级的权重组稀疏化处理后神经网络模型的准确度是否小于第一阈值;稀疏单元还用于若当前层级的权重组稀疏化处理后神经网络模型的准确度小于第一阈值,则停止继续对下一层级的权重组进行稀疏化处理,并将上一层级的权重组稀疏化处理后得到的稀疏权重矩阵作为目标权重矩阵;所述判断单元还用于若当前层级的权重组稀疏化处理后神经网络模型的准确度大于第一阈值,则判断当前层级的权重组稀疏化处理后神经网络模型的压缩比是否大于第二阈值;所述稀疏单元还用于若当前层级的权重组稀疏化处理后神经网络模型的压缩比大于等于第二阈值,则停止继续对下一层级的权重组进行稀疏化处理,并将当前层级的权重组稀疏化处理后得到的稀疏权重矩阵作为目标权重矩阵;以及若当前层级的权重组稀疏化处理后神经网络模型的压缩比小于第二阈值则继续对下一层级的权重组进行稀疏化处理。
18、优选地,所述层级顺序包括从第零层级到第k层级或者从第k层级到第零层级。
19、优选地,所述压缩装置还包括:块划分模块,用于将所述权重矩阵划分成多个权重块矩阵;层级确定模块,用于根据每个权重块矩阵中有效数据的密集度确定其划分的层级数量;所述层级划分模块还用于基于行、列和块中的一个,根据每个权重块的层级数量将每个权重块矩阵划分成相应数量的层级权重组;其中,层级数量与权重块矩阵中有效数据的密集度呈反相关。
20、优选地,所述稀疏模块还用于根据每个权重块矩阵中权重值的精度确定其稀疏度;以及根据每个权重块矩阵的稀疏度依次对每个权重块矩阵划分的多个层级权重组进行稀疏化处理直至神经网络模型的准确度和/或压缩比达到预定目标,以得到目标权重矩阵。
21、优选地,不同权重块矩阵的数据格式相同或者不同,所述数据格式包括数据类型和数据精度;其中,对模型精度敏感的权重块矩阵可以选择高精度数据表示,对模型精度不敏感的权重块矩阵可以选择低精度数据表示。
22、优选地,每一权重块矩阵中,每一层级的权重组按行、列和块中的一个划分,不同层级的权重组采用相同或者不同的划分方式;不同权重块矩阵的同一层级的权重组采用相同或者不同的划分方式。
23、根据本发明的第三方面,提供一种计算系统,包括相互藕接的系统存储器、处理器和加速单元,其中,所述系统存储器包括程序和神经网络模型,所述程序包括上述所述的神经网络模型的压缩方法的指令;所述处理器用于执行所述指令对所述神经网络模型进行压缩,并将压缩后的神经网络模型的计算数据写入所述加速单元;以及所述加速单元用于执行与神经网络模型相关的运算。
24、根据本发明的第四方面,提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的方法。
25、本发明提供的神经网络模型的压缩方法,将权重矩阵中基于行、列和块中的一个划分为多个层级权重组,依次对每个层级权重组进行稀疏化,可以提高权重矩阵的稀疏度,并且兼顾细粒度稀疏化所能达到的模型准确度和压缩比,减少神经网络模型的存储需求和计算需求。
26、进一步地,稀疏化后的模型也是结构化的,对硬件部署较为友好,可以兼顾精度和性能。
27、进一步地,将权重矩阵划分成多个权重块矩阵,不同的权重块矩阵可以实现不同层级的稀疏,可以保留更有效的权重值,提高计算精度。