深度学习模型剪枝与计算优化方法、装置、终端及介质

文档序号:35921965发布日期:2023-11-04 07:40阅读:22来源:国知局
深度学习模型剪枝与计算优化方法、装置、终端及介质

本发明涉及计算机,尤其涉及一种深度学习模型剪枝与计算优化方法、装置、终端及介质。


背景技术:

1、近几年许多领域为了追求更高的准确率,使深度学习模型变得越来越复杂和庞大。复杂模型的运行在算力和存储资源受限的硬件平台很难实现实时计算,为了减少模型参数量和计算量,提出了许多模型压缩方法。

2、模型剪枝是最常见的模型压缩方式之一,其剪枝方法分为非结构性剪枝、粗粒度剪枝和细粒度剪枝,非结构性剪枝灵活度高,模型准确率损失小,加速效果差;粗粒度剪枝剪枝粒度大,模型准确率损失严重,但计算不需要额外的硬件和加速算法支持,加速效果好;细粒度剪枝比粗粒度剪枝灵活,模型准确率和加速效果与剪枝粒度相关,需要在准确率和加速效果之间权衡。

3、为了在保持模型准确率的同时达到较好的加速效果,提出了许多细粒度的特殊的剪枝方法,如行重排后进行列向量剪枝、分块后进行列向量剪枝和平衡剪枝等。前两种方法剪枝之后通过行重排将稀疏矩阵分为多个密集块,每个密集快使用英伟达提供的密集矩阵计算库cublas进行计算。第三种方法使用了特定的kernel计算方式,但由于数据利用率低,数据存取不规则等问题加速效果有限。

4、特殊的剪枝方法是将权重重排为密集块之后调用计算库进行运算,针对gpu架构提出的稀疏矩阵计算库没有考虑不同剪枝方法的剪枝特性直接使用固定计算模式进行计算,这种使用各种剪枝方法配合固定计算模式进行计算的稀疏方式在准确率和运算时间上都很难取得较佳的效果。


技术实现思路

1、本发明提供一种深度学习模型剪枝与计算优化方法、装置、终端及设备,基于对深度学习模型进行剪枝和计算的优化,使其互相配合,能够兼顾稀疏矩阵计算库的准确率和加速效果。

2、为了实现上述目的,第一方面,本发明实施例提供了一种深度学习模型剪枝与计算优化方法,包括:

3、根据代表行的相似度在行方向上对稀疏矩阵进行组合和分块,得到所述稀疏矩阵的分块矩阵;对各所述分块矩阵的各列按照列与列之间的相似度进行合并分组后,进行行向量剪枝,得到剪枝后的稀疏矩阵;

4、对所述剪枝后的稀疏矩阵的每列保留的组进行累加统计以及排序后,平均分配到y方向上的线程并记录行索引,若所保留的组无法平均分配到y方向上的线程,则使用零填充;将所有组通过合并写回算法进行行融合,将所述行融合后的行索引以及所述线程需要计算的矩阵数据进行存储和计算;

5、从历史配置文件中查找与当前计算的矩阵行数相同的矩阵配置,若有,则选取所述行数下默认的配置参数;若没有则设置所述行数下默认的配置参数,其中,所述配置参数包括所述当前计算的矩阵的行饱和值和列饱和值;

6、剪枝:按照所述默认的配置参数对所述当前计算的矩阵进行剪枝,得到第一矩阵;

7、测试所述第一矩阵的加速效果,若所述加速效果为当前最佳,则根据所述默认的配置参数下的gpu占用率和共享内存合并写回率对所述默认的配置参数进行调整;若所述加速效果不为最佳则根据总搜索空间对所述默认的配置参数进行调整,直至跳出所述总搜索空间,其中,所述总搜索空间包括所述线程块x方向大小、所述线程块x方向的线程数和y方向的线程数的搜索空间。

8、作为上述方案的改进,所述根据代表行的相似度在行方向上对稀疏矩阵进行组合和分块,得到所述稀疏矩阵的分块矩阵,具体包括:

9、将稀疏矩阵中的每一行作为一个集合,得到集合空间;

10、选取所述集合空间中任意一个未饱和的集合记为第一集合,计算所述第一集合与其他未饱和的集合的杰西德相似度;将所述杰西德相似度最高的集合与所述第一集合进行合并,确定合并后的集合的代表行,直到所述第一集合饱和;

11、历遍所述集合空间,直至所有集合都饱和;将所有饱和的集合中的行重排至相邻位置,作为所述稀疏矩阵的分块矩阵;

12、其中,若所述集合空间中的集合只有一行,则该行为所述集合的代表行,否则,所述集合中非零数量最少的行作为所述代表行;

13、所述杰西德相似度为两个集合的代表行的相似度,所述集合饱和表示所述集合的行饱和值大于或者等于预设行饱和值。

14、作为上述方案的改进,所述对各所述分块矩阵的各列按照列与列之间的相似度进行合并分组后,进行行向量剪枝,得到剪枝后的稀疏矩阵,具体包括:

15、计算所述分块矩阵的各列的非零数值的个数并进行排序;

16、根据所述分块矩阵的列数在列方向对所述分块矩阵进行分块,对每一个所述分块按照列与列之间的相似度进行分组;

17、同一组的列排至相邻位置,对行重排和列重排后的矩阵进行行向量剪枝,得到剪枝后的稀疏矩阵。

18、作为上述方案的改进,所述根据所述分块矩阵的列数在列方向对所述分块矩阵进行分块,对每一个所述分块按照列与列之间的相似度进行分组,具体包括:

19、根据所述分块矩阵的列数在列方向对所述分块矩阵进行分块,计算每两列之间的值方差矩阵,将所述值方差矩阵的每一行进行排序,并记录其索引;

20、将所述分块矩阵的每一列作为一个的未饱和集合,得到第二集合空间,取出所述值方差矩阵第二列的值并记录其进行排序的索引值;

21、选取初始集合:根据所述索引值选出初始集合;

22、选取预合并的集合:根据所述初始集合在所述值方差矩阵中对应的行的列索引值选出预合并的集合;

23、若所述预合并的集合与初始集合中每一个列的相似度排行都在其列的前二分之一,则将所述预合并的集合与初始集合合并;返回执行上述选取预合并的集合步骤,直至所述初始集合饱和;返回执行上述选取初始集合步骤,直到所述第二集合空间的所有集合都饱和或被合并;将同一个饱和集合中的列作为一组;

24、其中,所述值方差矩阵的值方差代表两列之间的相似度,所述值方差越大,两列之间的相似度越低;

25、所述选取初始集合步骤,具体为:选取第一个索引值对应的集合,若所述第一个索引值对应的集合与所述第二集合空间的其他集合合并,则选取下一个索引值对应的集合,直到某一个索引值对应的集合未与所述第二集合空间的其他集合合并时,将所述某一个索引值对应的集合作为初始集合;

26、所述选取预合并的集合步骤,具体为:选取所述初始集合在所述值方差矩阵中对应行的第二列索引值代表的集合作为预选合并的集合,若所述预选合并的集合与所述第二集合空间的其他集合合并,则选取所述对应行的下一列索引值代表的集合作为所述预选合并的集合,直到所述预选合并的集合未与所述第二集合空间的其他集合合并时,将所述预选合并的集合作为预合并的集合。

27、作为上述方案的改进,所述对所述剪枝后的稀疏矩阵的每列保留的组进行累加统计以及排序后,平均分配到y方向上的线程并记录行索引,若所保留的组无法平均分配到y方向上的线程,则使用零填充;将所有组通过合并写回算法进行行融合,将所述行融合后的行索引以及所述线程需要计算的矩阵数据进行存储和计算,具体包括:

28、对所述剪枝后的稀疏矩阵的每列保留的组进行累加统计以及排序;

29、将所保留的组平均分配到y方向上的每一个线程并记录行索引,若所保留的组无法平均分配到y方向上的线程,则使用零填充,得到所述剪枝后的稀疏矩阵的线程块;

30、所有线程读取所述线程块计算所需的数据至共享内存;每个所述线程读取计算所需的矩阵数据和所述行索引至寄存器并进行乘累加计算;

31、若所保留的任意一组数据的行索引与下组数据的行索引不同,则将所述任意一组的中间结果根据所述任意一组数据的行索引与所述共享内存中已计算的值累加并写回所述共享内存,将所述共享内存中的计算结果写回显存;

32、其中,所述线程块y方向的大小即为kernel线程块y方向的大小,预设所述线程块的y方向的线程数、x方向的线程数以及x方向的大小。

33、作为上述方案的改进,所述若所述加速效果不为最佳则根据总搜索空间对所述默认的配置参数进行调整,直至跳出所述总搜索空间,具体包括:

34、若所述加速效果不为最佳,则三重迭代遍历所述线程块x方向的线程数、所述线程块y方向的线程数、所述线程块x方向大小的搜索空间,根据所述线程块x方向的线程数的迭代中的当前参数配置启动kernel,获取运行时间,若获得最高加速效果,则记录所述当前的参数配置,直到不能获得最高加速效果,则结束所述线程块x方向的线程数的迭代;

35、根据所述线程块y方向的线程数的迭代中的当前参数配置启动kernel,获取运行时间,若获得最高加速效果,则记录所述当前的参数配置,直到不能获得最高加速效果,则结束所述线程块y方向的线程数的迭代,

36、根据所述线程块x方向大小的迭代中的当前参数配置启动kernel,获取运行时间,若获得最高加速效果,则记录所述当前的参数配置,直到不能获得最高加速效果,则结束所述线程块x方向大小的迭代,跳出所述总搜索空间。

37、作为上述方案的改进,所述测试所述第一矩阵的加速效果,若所述加速效果为当前最佳,则根据所述默认的配置参数下的gpu占用率和共享内存合并写回率对所述默认的配置参数进行调整,具体包括:

38、测试所述第一矩阵的加速效果,若所述加速效果为当前最佳,则计算所述默认的配置参数下的gpu占用率和共享内存合并写回率;

39、若所述gpu占用率未达到百分之百且小于所述共享内存合并写回率,则增大所述默认的配置参数的行饱和值,返回执行上述剪枝步骤;

40、若所述gpu占用率达到百分之百或者大于等于所述共享内存合并写回率,则增大所述默认的配置参数的列饱和值,返回执行上述剪枝步骤。

41、第二方面,本发明实施例提供了一种深度学习模型剪枝与计算优化装置,包括:

42、模型剪枝模块,用于根据代表行的相似度在行方向上对稀疏矩阵进行组合和分块,得到所述稀疏矩阵的分块矩阵;对各所述分块矩阵的各列按照列与列之间的相似度进行合并分组后,进行行向量剪枝,得到剪枝后的稀疏矩阵;

43、加速计算模块,用于对所述剪枝后的稀疏矩阵的每列保留的组进行累加统计以及排序后,平均分配到y方向上的线程并记录行索引,若所保留的组无法平均分配到y方向上的线程,则使用零填充;将所有组通过合并写回算法进行行融合,将所述行融合后的行索引以及所述线程需要计算的矩阵数据进行存储和计算;

44、查找配置模块,用于从历史配置文件中查找与当前计算的矩阵行数相同的矩阵配置,若有,则选取所述行数下默认的配置参数;若没有则设置所述行数下默认的配置参数;其中,所述配置参数包括所述当前计算的矩阵的行饱和值和列饱和值;

45、矩阵剪枝模块,用于剪枝:按照所述默认的配置参数对所述当前计算的矩阵进行剪枝,得到第一矩阵;

46、协同优化模块,用于测试所述第一矩阵的加速效果,若所述加速效果为当前最佳,则根据所述默认的配置参数下的gpu占用率和共享内存合并写回率对所述默认的配置参数进行调整;若所述加速效果不为最佳则根据总搜索空间对所述默认的配置参数进行调整,直至跳出所述总搜索空间,其中,所述总搜索空间包括所述线程块x方向大小、所述线程块x方向的线程数和y方向的线程数的搜索空间。

47、第三方面,本发明实施例对应提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述深度学习模型剪枝与计算优化方法。

48、此外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述深度学习模型剪枝与计算优化方法。

49、与现有技术相比,本发明实施例公开的一种深度学习模型剪枝与计算优化方法、装置、终端及介质,通过根据代表行的相似度在行方向上对稀疏矩阵进行组合和分块,得到所述稀疏矩阵的分块矩阵;对各所述分块矩阵的各列按照列与列之间的相似度进行合并分组后,进行行向量剪枝,得到剪枝后的稀疏矩阵;对所述剪枝后的稀疏矩阵的每列保留的组进行累加统计以及排序后,平均分配到y方向上的线程并记录行索引,若所保留的组无法平均分配到y方向上的线程,则使用零填充;将所有组通过合并写回算法进行行融合,将所述行融合后的行索引以及所述线程需要计算的矩阵数据进行存储和计算;从历史配置文件中查找与当前计算的矩阵行数相同的矩阵配置,若有,则选取所述行数下默认的配置参数;若没有则设置所述行数下默认的配置参数;剪枝:按照所述默认的配置参数对所述当前计算的矩阵进行剪枝,得到第一矩阵;测试所述第一矩阵的加速效果,若所述加速效果为当前最佳,则根据所述默认的配置参数下的gpu占用率和共享内存合并写回率对所述默认的配置参数进行调整;若所述加速效果不为最佳则根据总搜索空间对所述默认的配置参数进行调整,直至跳出所述总搜索空间。因此,本发明实施例能够提高模型进行行剪枝的概率;根据相似度进行列重排,降低了误剪重要权重的概率,因此,能够在高稀疏度的情况下较好地保持模型的准确率,且通过调节线程数,使线程之间负载均衡,避免线程发散,通过行重排和行向量剪枝提高数据利用率,利用合并访存等技术提高数据读取效率;同时通过计算参数和剪枝方法的相互配合,能够同时保证计算效率和模型准确率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1