用于优化神经网络模型推理的方法及设备转让专利

申请号 : CN202110128162.3

文献号 : CN112862101B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒲永杰高飞王玉龙张广勇段亦涛

申请人 : 网易有道信息技术(北京)有限公司

摘要 :

本发明的实施方式提供了一种用于优化神经网络模型推理的方法及设备,所述方法包括:根据同一批次中多个待处理任务的组合关系,以及根据所述神经网络模型的重组帧的帧重组规则,确定所述重组帧中有效帧和/或无效帧的位置,其中,所述有效帧仅包括来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理任务的帧的组合;以及根据所述有效帧和/或所述无效帧的位置,在利用所述神经网络模型进行推理时只使用所述有效帧。根据本发明的方法,可以显著减少无效运算量,从而能够有利于提高神经网络模型的推理速度,并且可以使得神经网络模型能够更好的适应于高吞吐量需求的应用场景中。

权利要求 :

1.一种用于优化神经网络模型推理的方法,包括:根据同一批次中多个待处理任务的组合关系,以及根据所述神经网络模型的重组帧的帧重组规则,确定第一层重组帧中有效帧和/或无效帧的位置,以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位置,其中,所述重组帧包括来自所述神经网络模型中同一层节点的帧的组合,或者包括来自所述神经网络模型中不同层节点的帧的组合,所述有效帧仅包括来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理任务的帧的组合;以及根据所述有效帧和/或所述无效帧的位置,在利用所述神经网络模型进行推理时只使用所述有效帧。

2.根据权利要求1所述的方法,其中,确定第一层重组帧中有效帧和/或无效帧的位置包括:

根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧和/或无效帧的位置。

3.根据权利要求1所述的方法,进一步包括:确定所述重组帧中有效帧的位置偏移量;以及根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。

4.根据权利要求3所述的方法,其中确定有效帧的位置偏移量包括:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧的位置偏移量;以及

根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。

5.根据权利要求4所述的方法,其中,根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量包括:根据上一层重组帧中的相邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。

6.根据权利要求1‑5任一所述的方法,其中所述重组帧包括所述神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的至少一种。

7.根据权利要求1所述的方法,进一步包括,在确定所述重组帧中有效帧和/或无效帧的位置之前,基于如下生成所述重组帧:根据所述帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;

利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵;

以及

基于所述第二节点值矩阵生成所述重组帧。

8.根据权利要求7所述的方法,其中,读取第一节点值矩阵中的帧以形成与所述第一节点值矩阵相关的多个第一节点子矩阵包括:根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。

9.根据权利要求7所述的方法,其中,确定第二节点值矩阵包括:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。

10.根据权利要求8所述的方法,其中,确定第二节点值矩阵包括:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。

11.根据权利要求7所述的方法,其中所述运算包括矩阵乘法运算。

12.根据权利要求7‑11任一所述的方法,其中,确定第二节点值矩阵包括:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。

13.根据权利要求7‑11任一所述的方法,其中所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为SVD节点的节点值矩阵。

14.根据权利要求1‑5任一或者7‑11任一所述的方法,其中所述帧重组规则包括以下任一:

相邻的多个帧进行组合;和

间隔的多个帧进行组合。

15.根据权利要求1‑5任一或者7‑11任一所述的方法,其中所述待处理任务包括语音识别。

16.一种用于优化神经网络模型推理的设备,包括:第一装置,其配置为根据同一批次中多个待处理任务的组合关系,以及根据所述神经网络模型的重组帧的帧重组规则,确定第一层重组帧中有效帧和/或无效帧的位置,以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位置,其中,所述重组帧包括来自所述神经网络模型中同一层节点的帧的组合,或者包括来自所述神经网络模型中不同层节点的帧的组合,所述有效帧仅包括来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理任务的帧的组合;以及第二装置,其配置为根据所述有效帧和/或所述无效帧的位置,在利用所述神经网络模型进行推理时只使用所述有效帧。

17.根据权利要求16所述的设备,其中所述第一装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧和/或无效帧的位置。

18.根据权利要求16所述的设备,其中所述第一装置还配置为:确定所述重组帧中有效帧的位置偏移量;以及所述第二装置还配置为:

根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。

19.根据权利要求18所述的设备,其中所述第一装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧的位置偏移量;以及

根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。

20.根据权利要求19所述的设备,其中所述第一装置还配置为:根据上一层重组帧中的相邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。

21.根据权利要求16‑20任一所述的设备,其中所述重组帧包括所述神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的至少一种。

22.根据权利要求16所述的设备,进一步包括:第三装置,其配置为根据所述帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;

第四装置,其配置为利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵;以及

第五装置,其配置为基于所述第二节点值矩阵生成所述重组帧。

23.根据权利要求22所述的设备,其中所述第三装置还配置为:根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。

24.根据权利要求22所述的设备,其中所述第四装置还配置为:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。

25.根据权利要求23所述的设备,其中所述第四装置还配置为:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。

26.根据权利要求22所述的设备,其中所述运算包括矩阵乘法运算。

27.根据权利要求22‑26任一所述的设备,其中第四装置还配置为:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。

28.根据权利要求22‑26任一所述的设备,其中所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为SVD节点的节点值矩阵。

29.根据权利要求16‑20任一或者22‑26任一所述的设备,其中所述帧重组规则包括以下任一:

相邻的多个帧进行组合;

间隔的多个帧进行组合。

30.根据权利要求16‑20任一或者22‑26任一所述的设备,其中所述待处理任务包括语音识别。

说明书 :

用于优化神经网络模型推理的方法及设备

技术领域

[0001] 本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及用于优化神经网络模型推理的方法及设备。

背景技术

[0002] 本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在
此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技
术,并且并不因为包括在本部分中就承认是现有技术。
[0003] 随着人工智能技术的不断发展,神经网络的应用范围越来越广。例如时延神经网络(TDNN)用作语音识别的声学模型时,凭借着高效低成本的训练过程和不错的识别率,在
实际应用中发挥了重要的作用。然而,由于时延神经网络推理时的计算量较大,导致利用时
延神经网络模型进行推理时的推理速度较慢以及吞吐量较低,这将极大地影响用户的使用
体验,并且在高吞吐量需求的情况下将需要更多的计算设备来进行推理运算,从而增加了
硬件成本和设备损耗。

发明内容

[0004] 由于在时延神经网络模型中,本层节点的帧与其它层或者其他时刻的帧相关,或者是由其他层节点的多个帧计算得出,因此在对时延神经网络模型进行推理时常需要将相
关的帧重组以便进一步地操作。然而,当利用时延神经网络模型处理批次任务时,重组操作
会使得不同任务之间产生无效帧,并且无效帧的后续计算也是无效的。特别是当神经网络
模型的层数较多时,无效帧的数量会随着层数的增加而增加,进而产生大量的无效计算,大
大降低了神经网络模型的推理速度,这是非常令人烦恼的过程。
[0005] 为此,非常需要一种改进的用于优化神经网络模型推理的方法,以至少克服由帧重组操作产生的无效计算问题,从而提高神经网络模型的推理速度以及用户的使用体验。
[0006] 在本上下文中,本发明的实施方式期望提供一种用于优化神经网络模型推理的方法及设备。
[0007] 在本发明实施方式的第一方面中,提供了一种用于优化神经网络模型推理的方法,包括:根据同一批次中多个待处理任务的组合关系,以及根据所述神经网络模型的重组
帧的帧重组规则,确定所述重组帧中有效帧和/或无效帧的位置,其中,所述有效帧仅包括
来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理任务的帧的组合;以及
根据所述有效帧和/或所述无效帧的位置,在利用所述神经网络模型进行推理时只使用所
述有效帧。
[0008] 在本发明的一个实施例中,确定所述重组帧中有效帧和/或无效帧的位置包括:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧和/
或无效帧的位置;以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中
有效帧和/或无效帧的位置。
[0009] 在本发明的另一个实施例中,进一步包括:确定所述重组帧中有效帧的位置偏移量;以及根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。
[0010] 在本发明的又一个实施例中,确定有效帧的位置偏移量包括:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧的位置偏移量;以及
根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
[0011] 在本发明的再一个实施例中,根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量包括:根据上一层重组帧中的相邻位置的有效帧的位置偏
移量是否相同,确定本层重组帧中有效帧的位置偏移量。
[0012] 在本发明的一个实施例中,所述重组帧包括所述神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的至少一种。
[0013] 在本发明的另一个实施例中,进一步包括,在确定所述重组帧中有效帧和/或无效帧的位置之前,基于如下生成所述重组帧:根据所述帧重组规则,读取第一节点值矩阵中的
帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;利用所述多个第一节点子
矩阵分别与相应的权重执行运算,以确定第二节点值矩阵;以及基于所述第二节点值矩阵
生成所述重组帧。
[0014] 在本发明的又一个实施例中,读取第一节点值矩阵中的帧以形成与所述第一节点值矩阵相关的多个第一节点子矩阵包括:根据所述帧重组规则中每个重组帧内的关联帧的
个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个
第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
[0015] 在本发明的再一个实施例中,确定第二节点值矩阵包括:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所
述权重子矩阵的运算结果,确定所述第二节点值矩阵。
[0016] 在本发明的一个实施例中,所述运算包括矩阵乘法运算。
[0017] 在本发明的另一个实施例中,确定第二节点值矩阵包括:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。
[0018] 在本发明的又一个实施例中,所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为SVD节点的节点值矩阵。
[0019] 在本发明的再一个实施例中,所述帧重组规则包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合。
[0020] 在本发明的一个实施例中,所述待处理任务包括语音识别。
[0021] 在本发明实施方式的第二方面中,提供了一种用于优化神经网络模型推理的设备,包括:第一装置,其配置为根据同一批次中多个待处理任务的组合关系,以及根据所述
神经网络模型的重组帧的帧重组规则,确定所述重组帧中有效帧和/或无效帧的位置,其
中,所述有效帧仅包括来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理
任务的帧的组合;以及第二装置,其配置为根据所述有效帧和/或所述无效帧的位置,在利
用所述神经网络模型进行推理时只使用所述有效帧。
[0022] 在本发明的一个实施例中,所述第一装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧和/或无效帧的位置;以及根据
上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位
置。
[0023] 在本发明的另一个实施例中,所述第一装置还配置为:确定所述重组帧中有效帧的位置偏移量;以及所述第二装置还配置为:根据所述位置偏移量,读取所述重组帧中的有
效帧以进行后续运算操作。
[0024] 在本发明的又一个实施例中,所述第一装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定所述第一层重组帧中有效帧的位置偏移量;以及根据上
一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
[0025] 在本发明的再一个实施例中,所述第一装置还配置为:根据上一层重组帧中的相邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。
[0026] 在本发明的一个实施例中,所述重组帧包括所述神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的至少一种。
[0027] 在本发明的另一个实施例中,进一步包括:第三装置,其配置为根据所述帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩
阵;第四装置,其配置为利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定
第二节点值矩阵;以及第五装置,其配置为基于所述第二节点值矩阵生成所述重组帧。
[0028] 在本发明的又一个实施例中,所述第三装置还配置为:根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点
子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
[0029] 在本发明的再一个实施例中,所述第四装置还配置为:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述
权重子矩阵的运算结果,确定所述第二节点值矩阵。
[0030] 在本发明的一个实施例中,所述运算包括矩阵乘法运算。
[0031] 在本发明的另一个实施例中,第四装置还配置为:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。
[0032] 在本发明的又一个实施例中,所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为SVD节点的节点值矩阵。
[0033] 在本发明的再一个实施例中,所述帧重组规则包括以下任一:相邻的多个帧进行组合;间隔的多个帧进行组合。
[0034] 在本发明的一个实施例中,所述待处理任务包括语音识别。
[0035] 根据本发明实施方式的用于优化神经网络模型推理的方法,可以通过确定重组帧中有效帧和/或无效帧的位置,以及在利用神经网络模型进行推理时只使用有效帧而避免
使用无效帧进行后续的无效运算,这样可以显著减少无效运算量,从而能够有利于提高神
经网络模型的推理速度,并且可以使得神经网络模型能够更好的适应于高吞吐量需求的应
用场景中。在一些实施例中,本发明实施方式还可以根据有效帧的位置偏移量来读取有效
帧以进行后续运算操作,由于位置偏移量更容易计算和存储,因此这样的设置将使得对有
效帧的读取操作更加容易和方便。在另一些实施例中,本发明实施方式还可以通过利用多
个第一节点子矩阵与相应的权重执行运算,以得到第二节点值矩阵及其重组帧,能够解决
通过反复读写关联帧生成重组帧导致的计算资源空闲等问题,从而能够有效提高处理器的
工作效率以及有利于进一步提高神经网络模型的推理速度。

附图说明

[0036] 通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若
干实施方式,其中:
[0037] 图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图;
[0038] 图2示意性地示出了通过帧重组得到重组帧的过程示意图;
[0039] 图3示意性地示出了多层节点执行帧重组操作的结果示意图;
[0040] 图4示意性地示出了产生无效帧的情景示意图;
[0041] 图5示意性地示出了多层重组帧产生无效帧的示意图;
[0042] 图6示意性地示出了根据本发明实施方式的应用场景示意图;
[0043] 图7示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的方法流程图;
[0044] 图8a示意性地示出了根据本发明实施方式的相邻的多个帧进行组合的示意图;
[0045] 图8b示意性地示出了根据本发明实施方式的间隔的多个帧进行组合的示意图;
[0046] 图9示意性地示出了根据本发明实施方式的输入节点和SVD节点均执行读取有效帧操作的示意图;
[0047] 图10示意性地示出了根据本发明另一实施方式的用于优化神经网络模型推理的方法流程图;
[0048] 图11示意性地示出了根据本发明实施方式的确定第一层重组帧中有效帧的位置偏移量的示意图;
[0049] 图12示意性地示出了根据本发明实施方式的根据上一层位置偏移量确定本层位置偏移量的示意图;
[0050] 图13示意性地示出了根据本发明实施方式的根据位置偏移量读取有效帧的示意图;
[0051] 图14示意性地示出了根据本发明实施方式的产生重组帧的方法流程图;
[0052] 图15示意性地示出了根据本发明实施方式的生成第二节点值矩阵的过程示意图;以及
[0053] 图16示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的设备的示意图。
[0054] 在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

[0055] 下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何
方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能
够将本公开的范围完整地传达给本领域的技术人员。
[0056] 图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存
储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接
口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显
示器114。这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器
105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控
制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦
合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应
当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些
情况下,可以根据具体情况增加或减少某些设备。例如,在一些应用场景中,计算系统100还
可以包括图形处理器(GPU),其可以与系统总线104耦合,并用于对例如图像、图形、语音等
进行相关运算工作。在另一些应用场景中,GPU还可以执行CPU101的部分工作。
[0057] 本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固
件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系
统”等。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计
算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0058] 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,
电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读
存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便
携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储
器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、
或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程
序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0059] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限
于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可
读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于
由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0060] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0061] 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,
还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以
完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域
网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来
通过因特网连接)。
[0062] 下面将参照本发明实施例的方法的流程图和设备(或装置)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合
都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机
或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计
算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功
能/操作的装置。
[0063] 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一
个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
[0064] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计
算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图
和/或框图中的方框中规定的功能/操作的过程。
[0065] 根据本发明的实施方式,提出了一种用于优化神经网络模型推理的方法及设备。
[0066] 在本文中,需要理解的是,所涉及的术语包括如下:
[0067] 帧,原本的特征值帧(例如语音特征值帧、图像特征值帧)在进入神经网络模型之后,成为了一个个节点值的集合,虽然不再是原本意义的“帧”,但为了叙述方便,仍将由特
征值帧通过运算得到的节点值的集合称为“帧”,以用于描述神经网络模型中某一层的某一
组节点值。
[0068] 此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
[0069] 下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
[0070] 发明概述
[0071] 本发明人发现,在一些神经网络模型中,例如时延神经网络(TDNN)模型,一般分为很多层结构,每一层之间虽然有区别但是基本的结构是类似的。为了减少神经网络模型推
理时的计算量和参数量,可以对于神经网络模型的每一层进行奇异值分解(SVD),使得每层
结构中可以至少包括输入节点、奇异值分解(SVD)节点和输出节点。在一些应用场景中,也
可以将输入节点和输出节点称为普通节点,其中普通节点每一帧的节点值数量较多而SVD
节点每一帧的节点值数量较少。
[0072] 以TDNN模型为例,TDNN模型中每一层节点的节点值都是通过对上一层节点执行运算而得到的,执行运算可以通过例如全连接层来实现。在一些应用场景中,TDNN模型中每一
层节点的节点值都和上一层的前后帧有关,所以在全连接层之前,需要对帧进行重组,例如
可以将相邻多个帧的节点值放置到矩阵的同一行,以便于执行后续的运算。例如图2中所
示,TDNN模型的某一层节点可以包括第一帧、第二帧、第三帧、第四帧和第五帧等,在对该层
节点执行重组操作后,可以得到包括第一帧和第二帧在第一行、第二帧和第三帧在第二行、
第三帧和第四帧在第三行、以及第四帧和第五帧在第四行的矩阵。
[0073] 可以理解的是,例如图3中所示,经过上述重组操作的过程,会使得帧的数量逐层减少。在一些应用场景中,为了能够增加任务的并行度,可以将多个任务请求组合到一起使
用例如图形处理器(GPU)进行计算,例如图4中所示的,可以将第一个请求和第二个请求组
合进行处理。然而来自不同任务的帧在重组的时候会产生无效帧(例如图4中的虚线框所示
的第一个请求的第四帧和第二个请求的第一帧的组合),并且无效帧的后续计算也将是无
效的。特别是当神经网络模型的层数较多时,无效帧的数量将会随着层数的增加而增加(例
如图5中所示),从而产生大量的无效计算。
[0074] 在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
[0075] 应用场景总览
[0076] 首先参考图6详细阐述本发明实施例的用于优化神经网络模型推理的方法及设备的应用场景。
[0077] 图6示意性地示出了根据本发明实施方式的应用场景示意图。需要说明的是,图6仅为可以应用本发明实施方式的应用场景的示例,以帮助本领域技术人员理解本发明的技
术内容,并不意味着本发明实施方式不可以用于其他设备、系统、环境或场景。
[0078] 如图6中所示,为了能够增加任务的并行度,可以将多个任务请求组合到一起形成批次任务进行处理,例如可以将图示中的第一个任务请求、第二个任务请求、第三个任务请
求和第四个任务请求组合为同一个批次的任务进行处理。在利用神经网络模型进行处理
后,第一个任务请求、第二个任务请求、第三个任务请求和第四个任务请求可以分别对应输
出第一输出、第二输出、第三输出和第四输出。
[0079] 然而,在利用神经网络模型进行推理时,相邻任务的重组帧中会产生无效帧,并且无效帧的数量会随着神经网络模型的层数的增加而增加,进而产生大量的无效计算。这些
无效计算不仅会降低神经网络模型的推理速度和效率,还会在最终的输出结果中产生无效
输出,从而影响用户的使用体验。特别是在对一些长度较短的任务请求(例如流式语音识别
任务)进行处理时,由于同一批次的任务数量增多,无效计算的占比将会更大,并且处理效
率也会受到较大影响。
[0080] 本发明实施方式提供的用于优化神经网络模型推理的方法,可以适用于对同一批次中的多个待处理任务组合进行处理,并且能够适用于任意长度的任务请求的组合。本发
明实施方式的方法能够通过确定重组帧中有效帧和/或无效帧的位置,并在利用神经网络
模型进行推理时只使用有效帧,以有效减少或避免推理过程中的无效运算,从而能够显著
提高神经网络模型的推理速度。
[0081] 示例性方法
[0082] 下面结合图6所示的应用场景,参考图7来描述根据本发明示例性实施方式的用于优化神经网络模型推理的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的
精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可
以应用于适用的任何场景。
[0083] 首先参考图7,示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的方法流程图。如图7中所示,方法700可以包括:在步骤710中,可以根据同一批次中多个
待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规则,确定重组帧中有
效帧和/或无效帧的位置,其中,有效帧仅包括来自同一待处理任务的帧的组合,无效帧包
括来自不同待处理任务的帧的组合。
[0084] 上文中所述的组合关系可以包括多个待处理任务的组合顺序和组合任务个数等中的至少一种。在本发明的一个实施例中,待处理任务可以包括语音识别、图像识别等中的
至少一种。
[0085] 上文中所述的重组帧可以包括有效帧和无效帧,在一些实施例中,根据有效帧的位置可以确定无效帧的位置,或者根据无效帧的位置可以确定有效帧的位置。在本发明的
一个实施例中,重组帧可以包括来自同一层节点的帧的组合。在本发明的另一个实施例中,
重组帧可以包括来自不同层节点的帧的组合。在本发明的再一个实施例中,帧重组规则可
以包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合等。
[0086] 在一些实施例中,例如帧重组规则为相邻的多个帧进行组合,可以根据同一批次中多个待处理任务的组合关系,确定相邻任务的边界位置,并且可以根据重组帧的帧重组
规则,确定边界位置在重组帧中的位置,以便于确定重组帧中有效帧和/或无效帧的位置。
[0087] 在又一些实施例中,例如帧重组规则为间隔的多个帧进行组合,可以根据帧重组规则来确定每个帧在重组帧中的位置以及进行组合的多个帧的位置,并且可以根据进行组
合的多个帧来自的待处理任务的关系,来确定无效帧和/或有效帧。例如,当进行组合的多
个帧来自同一个待处理任务时,可以确定该多个帧的组合为有效帧;或当进行组合的多个
帧来自不同待处理任务时,可以确定该多个帧的组合为无效帧。
[0088] 需要理解的是,帧重组规则中进行组合的多个帧可以是两个帧、三个帧或者更多数量的帧。为了便于理解帧重组规则,下面将结合图8a和图8b进行示例性的描述。
[0089] 图8a示意性地示出了根据本发明实施方式的相邻的多个帧进行组合的示意图。在一个实施例中,帧重组规则可以包括相邻的三个帧进行组合,如图8a中所示,以依次相邻的
第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以
得到第一帧、第二帧和第三帧组成第一行、第二帧、第三帧和第四帧组成第二行、以及第三
帧、第四帧和第五帧组成第三行的重组帧矩阵。可以理解的是,相邻的多个帧进行组合可以
不限于图示中的相邻的三个帧,也可以是相邻的两个帧(例如图2中所示)或者更多帧进行
组合。
[0090] 图8b示意性地示出了根据本发明实施方式的间隔的多个帧进行组合的示意图。在一个实施例中,帧重组规则可以包括间隔的两个帧进行组合,如图8b中所示,以依次相邻的
第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以
得到第一帧和第三帧组成第一行、第二帧和第四帧组成第二行以及第三帧和第五帧组成第
三行的重组帧矩阵。可以理解的是,间隔的多个帧进行组合可以不限于图示中的间隔的两
个帧,也可以是间隔的三个帧或者更多帧进行组合。
[0091] 下面返回图7继续进行描述,如图7中进一步示出的,在步骤720中,可以根据有效帧和/或无效帧的位置,在利用神经网络模型进行推理时只使用有效帧。在一些实施例中,
只使用有效帧可以包括只读取有效帧的位置上的数据进行后续运算,而不读取无效帧的位
置上的数据。在一些应用场景中,只使用有效帧相当于在无效帧产生无效运算之前,从待运
算矩阵中移除无效帧的操作。
[0092] 根据这样的设置,可以有效避免使用无效帧进行后续运算,从而可以显著减少或者消除在利用神经网络模型进行推理时可能产生的无效计算,进而可以有利于减少神经网
络模型进行推理时的数据处理量以提高推理效率和推理速度等。
[0093] 以上结合图7对根据本发明实施方式的用于优化神经网络模型推理的方法进行了描述,本领域技术人员可以理解的是,上面的描述是示例性的而非限制性的,例如,步骤710
和步骤720可以不限于对神经网络模型的一层节点的重组帧执行操作,可以根据需要对神
经网络模型的多层节点的重组帧执行上述操作。在本发明的一个实施例中,重组帧可以包
括神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的
至少一种。在本发明的另一个实施例中,确定重组帧中有效帧和/或无效帧的位置可以包
括:根据每个待处理任务的起始位置以及帧重组规则,确定第一层重组帧中有效帧和/或无
效帧的位置;以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效
帧和/或无效帧的位置。下面将结合图9进行示例性的说明。
[0094] 图9示意性地示出了根据本发明实施方式的输入节点和SVD节点均执行读取有效帧操作的示意图。如图9中所示,以神经网络模型的一层网络结构为例,其输入节点可以包
括来自三个待处理任务的帧(相邻待处理任务的边界位置以图示中的虚线示出),输入节点
的帧经过重组操作后可以得到图示中输入节点的重组帧,其中来自不同待处理任务的帧的
组合产生无效帧。在一些实施例中,每个待处理任务的起始位置可以为每个待处理任务的
第一帧,并且可以根据每个待处理任务的第一帧的位置来确定第一层重组帧(例如图示中
的输入节点的重组帧)中无效帧的位置。
[0095] 接着,如图9中进一步示出的,根据确定的输入节点的重组帧中无效帧和/或有效帧的位置,在利用神经网络模型进行推理时可以只读取有效帧来进行后续运算操作,以得
到SVD节点的帧。在一些实施例中,可以根据上一层重组帧(例如图示中的输入节点的重组
帧)中无效帧的位置,确定本层节点(例如图示中的SVD节点)中来自不同任务的相邻帧的边
界位置(图中以虚线示出),从而可以确定本层节点的重组帧(例如图示中的SVD节点的重组
帧)中无效帧的位置。在另一些实施例中,根据本层重组帧(例如图示中的SVD节点的重组
帧)中无效帧的位置,可以确定本层重组帧(例如图示中的SVD节点的重组帧)中除无效帧以
外的其他重组帧的位置,即为有效帧的位置。
[0096] 进一步地,根据确定的SVD节点的重组帧中无效帧和/或有效帧的位置,在利用神经网络模型进行推理时可以只读取有效帧来进行后续运算操作,以得到输出节点的帧。在
一些实施例中,该输出节点的帧可以作为下一层网络结构的输入节点的帧。在另一些实施
例中,该输出节点的帧可以根据需要执行偏差(bias)、批归一化(BN)、修正线性单元
(Relu)、加权求和等操作后作为下一层网络结构的输入节点的帧。
[0097] 根据本发明的一个测试例,在每个请求长度为1000帧的整句语音识别请求中,基于Kaldi平台的开源语音识别系统对TDNN模型进行推理需要耗时126ms,而根据本发明实施
方式的在对TDNN模型进行推理时采用对输入节点和SVD节点均执行仅读取有效帧的操作
时,则需要耗时124ms,推理速度提高了1.6%。
[0098] 根据本发明的另一个测试例,在每个请求长度为21帧的流式语音识别请求中,基于Kaldi平台的开源语音识别系统进行TDNN模型进行推理需要耗时126ms,而根据本发明实
施方式的在对TDNN模型进行推理时采用对输入节点和SVD节点均执行仅读取有效帧的操作
时,则需要耗时103ms,推理速度提高了22%。
[0099] 通过上述多个测试例可以看出,通过对神经网络模型进行推理时使用根据本发明的读取有效帧进行运算的方法,能够提高神经网络模型的推理速度,特别是对于每个请求
长度较短的流式请求,由于产生的无效帧会更多,因此利用本发明的方法优化神经网络模
型的推理过程的效果(例如提高推理速度可达22%)将更加显著。
[0100] 以上结合图9对根据本发明实施方式的重组帧包括输入节点和SVD节点的重组帧的实现方式进行了描述,本领域技术人员可以理解的是,上面的描述是示例性的而非限制
性的,例如,同一批次的待处理任务的个数可以不限于图示中的三个,可以根据需要设置的
更多或者更少。每个待处理任务包含的帧的数量可以不限于图中所示的三个或者四个,可
以根据需要设置的更多或者更少。重组帧可以不限于图示中的包括输入节点的重组帧和
SVD节点的重组帧,还可以根据需要仅包括输入节点的重组帧,或者仅包括SVD节点的重组
帧。
[0101] 还例如,根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位置可以不限于图示中的根据边界位置来确定的方式,由于针对无效帧
进行的后续运算或者组合均是无效的,因此在另一些实施例中,可以根据上一层重组帧中
无效帧的位置,确定本层节点中由上一层无效帧进行无效运算后得到的帧的位置,从而可
以确定本层节点的重组帧中无效帧的位置。
[0102] 进一步地,在本发明的又一个实施例中,根据本发明的确定重组帧中有效帧和/或无效帧的位置,可以根据需要通过确定有效帧的位置偏移量来间接确定有效帧和/或无效
帧的位置。下面将结合图10进行示例性的描述。通过下面的描述,可以理解的是,图10所示
的方法可以是图7所示的方法的一个具体化表现形式,因此前文中结合图7的方法700的描
述也可以适用于下面的描述中。
[0103] 图10示意性地示出了根据本发明另一实施方式的用于优化神经网络模型推理的方法流程图。如图10中所示,方法1000可以包括:在步骤1010中,可以确定重组帧中有效帧
的位置偏移量。位置偏移量可以理解为读取有效帧时需要偏移的位置数。在一些实施例中,
可以将确定的有效帧的位置偏移量存储在显存中。在另一些实施例中,可以根据重组帧中
有效帧和/或无效帧的位置,确定重组帧中有效帧的位置偏移量。在又一些实施例中,可以
根据同一批次中多个待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规
则,直接确定重组帧中有效帧的位置偏移量。
[0104] 在本发明的一个实施例中,如图10中所示,步骤1010可以包括:在步骤1011中(虚线框示出),可以根据每个待处理任务的起始位置以及帧重组规则,确定第一层重组帧中有
效帧的位置偏移量。在一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规
则,确定第一层重组帧中有效帧的位置,然后根据有效帧的位置来确定有效帧的位置偏移
量。在另一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规则,确定符合帧
重组规则的帧(例如相邻位置的帧)是否来自于同一待处理任务,以确定第一层重组帧中有
效帧的位置偏移量。为了便于理解,下面将结合图11进行示例性的说明。
[0105] 图11示意性地示出了根据本发明实施方式的确定第一层重组帧中有效帧的位置偏移量的示意图。如图11中所示,以输入神经网络模型的同一批次的三个待处理任务为例,
其中每个待处理任务可以包括多个帧,根据每个待处理任务的起始位置(图示中以虚线示
出)以及帧重组规则(例如本实施例中的帧重组规则为相邻两个帧进行组合),可以确定第
一层重组帧中有效帧的位置偏移量(例如图示中的0、0、0、1、1、2、2、2)。具体地,可以定义第
一层重组帧中有效帧的位置偏移量的初始值为0,并且当相邻位置(图中以弧形连接线示
出)的帧来自于同一待处理任务时,相应位置(如图中箭头所示)的位置偏移量不增加;当相
邻位置的帧来自于不同待处理任务时(即在本实施例中可以是每个待处理任务的起始位置
与前一待处理任务的帧的组合),相应位置的位置偏移量可以增加1,并且在跳转两帧(如图
中虚线箭头所示)的位置上继续执行下一次对比操作。
[0106] 可以理解的是,图11所示的实施方式是示例性的而非限制性的,例如同一批次的任务个数、每个任务包含的帧数、相邻两帧进行组合的帧重组规则等均是示例性的,本领域
技术人员可以根据需要进行设置和调整。下面返回图10继续进行描述。
[0107] 根据本发明的实施方式,对于包括多层重组帧的神经网络模型而言,可以在确定了第一层重组帧中有效帧的位置偏移量之后,确定其他层的位置偏移量。如图10中所示,在
步骤1012中(虚线框示出),可以根据上一层重组帧中有效帧的位置偏移量,确定本层重组
帧中有效帧的位置偏移量。例如,在本发明的一个实施例中,根据上一层重组帧中有效帧的
位置偏移量,确定本层重组帧中有效帧的位置偏移量可以包括:根据上一层重组帧中的相
邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。为了便
于理解,下面将结合图12的一个具体实施例进行示例性的说明。
[0108] 图12示意性地示出了根据本发明实施方式的根据上一层位置偏移量确定本层位置偏移量的示意图。如图12中所示,以上一层重组帧中有效帧的位置偏移量(简称上一层位
置偏移量)为0、0、0、1、1、2、2、2为例,可以首先定义本层重组帧中有效帧的位置偏移量(简
称本层位置偏移量)的初始值为0,然后依次扫描上一层位置偏移量。当上一层相邻位置(图
中以弧形连接线示出)的位置偏移量相同时,本层相应位置(如图中箭头所示)的位置偏移
量不增加;而当上一层相邻位置的位置偏移量不相同时,本层相应位置的位置偏移量可以
增加1,并且对上一层位置偏移量可以执行跳转两帧(如图中虚线箭头所示)的操作后,再继
续执行判断相邻位置的位置偏移量是否相同的操作。以此类推,可以在无需事先确定本层
有效帧的位置的情况下,获得本层有效帧的位置偏移量。类似地,根据这样的操作,可以得
到每层重组帧中有效帧的位置偏移量。
[0109] 下面返回图10继续描述,流程可以前进到步骤1020中,可以根据位置偏移量,读取重组帧中的有效帧以进行后续运算操作。根据位置偏移量的设置,在利用神经网络模型进
行推理时可以更加准确和方便的执行仅使用有效帧的操作。在一些实施例中,本层位置偏
移量的位置地址可以与下一层节点的帧的位置地址相同。在另一些实施例中,可以将位置
偏移量和重组帧存储在例如显存中,在需要读取本层重组帧中的有效帧时,可以用下一层
节点的帧的位置加上位置偏移量作为本层重组帧的位置来读取本层重组帧中的有效帧,从
而可以实现跳过无效帧且仅使用有效帧执行后续运算的目的。为了更加形象的展示有效帧
的读取过程,下面将结合图13进行示例性的描述。
[0110] 图13示意性地示出了根据本发明实施方式的根据位置偏移量读取有效帧的示意图。如图13中所示,重组帧中的帧0、帧1、帧2、帧3、帧4、帧5、帧6、帧7、帧8、帧9中的数字表示
位置序号,例如帧0表示位置0处的帧,帧1表示位置1处的帧,以此类推,帧2、帧3等中的数字
含义类似,此处不再赘述。以重组帧中的帧3和帧6为无效帧(虚线框示出)为例,有效帧的位
置偏移量可以为图示中的0、0、0、1、1、2、2、2,通过对重组帧中有效帧执行运算可以得到下
一层节点中每个位置的帧。下一层节点中的帧0’、帧1’、帧2’、帧3’、帧4’、帧5’、帧6’、帧7’
中的数字表示位置序号,例如帧0’表示位置0’处的帧,帧1’表示位置1’处的帧,以此类推。
并且为了与重组帧区别,下一层节点中的位置序号用“’”表示,但是“’”不改变位置顺序。
[0111] 具体地过程可以描述为,在执行运算的过程中,可以用下一层节点中的位置加上对应位置的位置偏移量作为重组帧的位置来读取有效帧。例如,帧0’的位置0’可以与位置
偏移量0相加的结果为0,即去读取重组帧中位置0处的帧(即帧0);帧1’的位置1’可以与位
置偏移量0相加的结果为1,即去读取重组帧中位置1处的帧(即帧1);帧3’的位置3’可以与
位置偏移量1相加的结果为4,即去读取重组帧中位置4处的帧(即帧4);帧5’的位置5’可以
与位置偏移量2相加的结果为7,即去读取重组帧中位置7处的帧(即帧7)。通过这一过程,可
以利用位置偏移量准确的读取到重组帧中的有效帧,而无需判断重组帧中的帧是有效帧还
是无效帧。
[0112] 在一些应用场景中,例如使用GPU对多个并行待处理任务进行处理时,GPU的每个核心可以处理一帧,虽然每个核心能够判断自己正在处理的帧是否为有效帧,但是由于很
多帧可以是同时进行处理的,因此每个核心无法判断同时处理的或者之前已经处理了多少
个有效帧,因此每个核心无法确定自己正在处理的帧应该写到哪个地址中,这就为准确存
储每个有效帧和/或无效帧的地址信息造成了很大的困难。根据本发明的确定位置偏移量
的实施方式,可以很好的适用于基于GPU处理任务的场景中,以解决直接存储有效帧和/或
无效帧的地址存在困难的问题,并可以通过确定和存储位置偏移量的方式实现读取有效帧
的目的。
[0113] 通过上面的描述,本领域技术人员可以理解的是,在本发明的一些实施例中,通过在利用神经网络模型进行推理时只使用有效帧的方式,能够显著减少后续运算中的无效运
算,使得整个批次任务的推理结果直接就是各个待处理任务的推理运算结果的合集,而不
再有无效输出,从而有效的提高了神经网络模型的推理速度和效率,为满足更多应用场景
需求以及用户体验提供了可靠的解决方案。
[0114] 进一步地,本发明人还发现,在神经网络模型的重组帧的产生过程中并不需要计算,只是对关联帧的节点值进行反复复制和移位,特别是对于节点数量较多的网络结构,重
组帧的操作会消耗大量的时间。例如,帧重组规则为相邻的两个帧进行组合,在进行帧重组
操作时则需要对每个节点值进行至少一次读和两次写的操作。而且由于两层网络结构之间
存在直接的加权求和等运算操作,所以每一层网络结构中的重组帧操作难以和上一层的重
组帧操作合并到一起以便利用一次显存的读写操作,因此每层网络结构中的重组帧操作只
能单独进行。然而,显存读写带宽是有限的,而且相对于计算单元来说速度很慢,重组帧操
作对显存的反复读写将会导致例如GPU的计算资源一直处于空闲等待状态,使得GPU的工作
效率大大降低。为了在解决无效计算问题的同时,还能解决重组帧反复读写耗时等问题,下
面将结合图14对根据本发明实施方式的产生重组帧的方法进行示例性的说明。
[0115] 图14示意性地示出了根据本发明实施方式的产生重组帧的方法流程图。如图14中所示,方法1400可以包括:在步骤1410中,根据帧重组规则,读取第一节点值矩阵中的帧,以
形成与第一节点值矩阵相关的多个第一节点子矩阵。第一节点值矩阵可以由第一节点包含
的多个帧组成。第一节点子矩阵可以是第一节点值矩阵的一部分。在一些实施例中,第一节
点值矩阵可以为一维矩阵或多维矩阵。在另一些实施例中,多个第一节点子矩阵相应位置
上的帧的组合符合帧重组规则。在本发明的一个实施例中,第一节点值矩阵可以为神经网
络模型的每层结构中输入节点的节点值矩阵和SVD节点的节点值矩阵中的至少一种。
[0116] 在本发明的另一个实施例中,步骤1410可以包括:在步骤1411(虚线框示出)中,可以根据帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧
以形成N个第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于
相应的重组帧。在一些实施例中,N可以为大于1的正整数。关联帧可以是用于组成同一重组
帧的帧,即用于组成不同重组帧的帧不是关联帧。例如,在一些实施例中,帧重组规则为相
邻的两个帧进行组合,则每个重组帧内的关联帧的个数N为2,且关联帧的位置关系为相邻。
第一节点子矩阵的个数与每个重组帧内的关联帧的个数相同,且每个重组帧内的N个关联
帧分别位于N个第一节点子矩阵的相应位置上。
[0117] 接着,在步骤1420中,可以利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。第一节点子矩阵相应的权重可以包括第一节点子矩阵的帧相对应
的权重。在本发明的一个实施例中,运算可以包括矩阵乘法运算。在本发明的另一个实施例
中,确定第二节点值矩阵可以包括:根据多个第一节点子矩阵运算结果的求和结果,确定第
二节点值矩阵。在本发明的又一个实施例中,多个第一节点子矩阵运算结果可以包括对多
个第一节点子矩阵分别执行矩阵乘法运算得到的运算结果。第二节点值矩阵可以是由第一
节点的下一层节点的帧组成的矩阵。
[0118] 如图14中进一步示出的,在本发明的一个实施例中,步骤1420可以包括:在步骤1421(虚线框示出)中,可以根据第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩
阵。权重子矩阵的个数与第一节点子矩阵的个数相同。在一些实施例中,权重矩阵可以包括
对根据帧重组规则形成的重组帧执行运算所需的相应权重。根据重组帧中每个关联帧相应
的权重以及每个关联帧在第一节点子矩阵中的位置,将权重矩阵拆分为相应的权重子矩
阵,使得每个权重子矩阵中的每个权重值能够与相应的第一节点子矩阵中的关联帧对应。
[0119] 然后,流程可以前进到步骤1422(虚线框示出)中,可以根据每个第一节点子矩阵与相应的权重子矩阵的运算结果,确定第二节点值矩阵。在一些实施例中,可以根据多个第
一节点子矩阵分别与相应的权重子矩阵的运算结果的求和结果,确定第二节点值矩阵。
[0120] 进一步地,在步骤1430中,可以基于第二节点值矩阵生成重组帧。生成重组帧的操作可以是通过将第二节点值矩阵中的帧根据帧重组规则进行组合而实现。然后,可以根据
重组帧中关联帧是否来自于同一待处理任务,执行例如前文中结合图7‑图13所描述的确定
有效帧和/或无效帧的位置以及在后续运算中只使用有效帧等操作。
[0121] 在本发明的又一个实施例中,第一节点值矩阵可以为神经网络模型的每层结构中输入节点的节点值矩阵,第二节点值矩阵可以为SVD节点的节点值矩阵。根据这样的设置,
由于输入节点每一帧的节点值数量较多而SVD节点每一帧的节点值数量较少,因此针对节
点值数量较多的输入节点的节点值矩阵执行读取多个第一节点子矩阵并分别执行运算来
获得SVD节点的方法,能够有效减少显存读写次数以减少耗时,而针对节点值数量较少的
SVD节点的节点值矩阵执行帧重组以及只读取有效帧的操作,能够消除SVD节点中无效帧将
会产生的无效运算,从而能够有利于提高神经网络模型中每层网络结构的推理速度和运算
效率。
[0122] 根据本发明的一个测试例,在每个请求长度为1000帧的整句语音识别请求中,基于Kaldi平台的开源语音识别系统对TDNN模型进行推理需要耗时126ms,而根据本发明实施
方式的在对TDNN模型进行推理时采用区分处理(即针对输入节点执行读取多个节点子矩阵
分别运算的方法,以及针对SVD节点执行仅读取有效帧的方法)的操作方式,则仅需要耗时
85ms,推理速度提高了48%。
[0123] 根据本发明的另一个测试例,在每个请求长度为21帧的流式语音识别请求中,基于Kaldi平台的开源语音识别系统进行TDNN模型进行推理需要耗时126ms,而根据本发明实
施方式的在对TDNN模型进行推理时采用区分处理的操作方式,则仅需要耗时64ms,推理速
度提高了97%。
[0124] 通过上述多个测试例可以看出,通过对神经网络模型进行推理时使用根据本发明的区分处理的操作方式,无论是对于每个请求较长的整句请求还是对于每个请求长度较短
的流式请求的应用场景,利用本发明的方法均能够显著提高神经网络模型的推理速度。为
了更形象的展示读取多个第一节点子矩阵执行运算的过程以便于理解,下面将结合图15进
行说明。
[0125] 图15示意性地示出了根据本发明实施方式的生成第二节点值矩阵的过程示意图。如图15中所示,首先可以参考通过帧重组操作和运算生成第二节点值矩阵1514的过程1510
(虚线框示出),该过程可以将第一节点值矩阵1511中相邻多个帧的节点值放置到重组帧矩
阵1512的同一行,并使用同一行的相邻多个帧和权重矩阵1513的一列相乘,以得到第二节
点值矩阵1514的一帧。
[0126] 具体地,以由帧1、帧2、帧3、帧4、帧5、帧6、帧7组成的第一节点值矩阵1511以及帧重组规则为相邻的两个帧进行组合为例,通过重组操作可以得到包括帧1和帧2进行组合、
帧2和帧3进行组合、帧3和帧4进行组合、帧4和帧5进行组合、帧5和帧6进行组合以及帧6和
帧7进行组合的重组帧矩阵1512,其中同一行的帧1和帧2互为关联帧、同一行的帧2和帧3互
为关联帧,同一行的帧3和帧4、同一行的帧4和帧5等情况类似,此处不再赘述。在这个过程
中,需要对存储在例如显存中的第一节点值矩阵1511中的每个帧读取至少一次,并且需要
至少两次将读取的每个帧写入显存中的相应地址内,特别是对于节点值数量较多的第一节
点值矩阵而言,这样的反复读写过程将占用大量的读写带宽,并且计算资源在这个过程中
始终处于闲置状态。
[0127] 接着,通过对重组帧矩阵1512与相应的权重矩阵1513执行运算,可以得到第二节点值矩阵1514,其中为了便于观察对应关系,权重矩阵1513可以包括同一列的权重a和权重
b,第二节点值矩阵1514中的每个帧均由重组帧矩阵1512中同一行的重组帧与权重矩阵
1513执行运算而得到。例如,第二节点值矩阵1514中的a1+b2表示权重a与帧1执行运算的运
算结果和权重b与帧2执行运算的运算结果的求和结果,类似地,a2+b3、a3+b4等表示的含义
不再赘述。
[0128] 如图15中进一步示出的,根据本发明的实施方式,可以根据帧重组规则,例如相邻两个帧进行组合,读取第一节点值矩阵1511中的帧以形成与第一节点值矩阵1511相关的两
个第一节点子矩阵1521、1522,并且使得两个第一节点子矩阵1521、1522相应位置(例如同
一行)上的帧的组合对应于相应的重组帧。例如,第一节点子矩阵1521中第一行的帧1与第
一节点子矩阵1522中第一行的帧2的组合,可以对应于符合帧重组规则(例如重组帧矩阵
1512中第一行)的帧1和帧2组成的重组帧。
[0129] 接着,可以根据两个第一节点子矩阵1521、1522,将权重矩阵1513拆分为两个权重子矩阵1523、1524。然后,可以将第一节点子矩阵1521与相应的权重子矩阵1523(图示中的
权重a)执行运算以得到包括a1、a2、a3、a4、a5、a6的运算结果1525,以及可以将第一节点子
矩阵1522与相应的权重子矩阵1524(图示中的权重b)执行运算以得到包括b2、b3、b4、b5、
b6、b7的运算结果1526。在一些实施例中,可以在对两个第一节点子矩阵1521、1522分别执
行运算的过程中,同时将运算结果1525和运算结果1526中相应的节点值进行求和,以得到
第二节点值矩阵1514。
[0130] 根据以上结合图15的描述,可以理解的是,在一些应用场景中,相比于通过帧重组操作和运算生成第二节点值矩阵1514的过程1510,通过对多个第一节点子矩阵1521、1522
分别执行运算的方式可以利用计算过程代替反复读写过程,以充分利用处理器的计算资源
并加快生成第二节点值矩阵1514的速度。
[0131] 示例性设备
[0132] 在介绍了本发明示例性实施方式的方法之后,接下来,参考图16对本发明示例性实施方式的用于优化神经网络模型推理的设备进行描述。
[0133] 图16示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的设备的示意图。如图16中所示,设备1600可以包括:第一装置1610,其可以配置为根据同一批次
中多个待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规则,确定重组
帧中有效帧和/或无效帧的位置,其中,有效帧仅包括来自同一待处理任务的帧的组合,无
效帧包括来自不同待处理任务的帧的组合;以及第二装置1620,其可以配置为根据有效帧
和/或所述无效帧的位置,在利用神经网络模型进行推理时只使用有效帧。
[0134] 在本发明的一个实施例中,第一装置1610还可以配置为:根据每个待处理任务的起始位置以及帧重组规则,确定第一层重组帧中有效帧和/或无效帧的位置;以及根据上一
层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位置。
[0135] 在本发明的另一个实施例中,第一装置1610还可以配置为:确定重组帧中有效帧的位置偏移量;以及第二装置1620还可以配置为:根据位置偏移量,读取重组帧中的有效帧
以进行后续运算操作。
[0136] 在本发明的又一个实施例中,第一装置1610还可以配置为:根据每个待处理任务的起始位置以及帧重组规则,确定第一层重组帧中有效帧的位置偏移量;以及根据上一层
重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
[0137] 在本发明的再一个实施例中,第一装置1610还可以配置为:根据上一层重组帧中的相邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。
[0138] 在本发明的一个实施例中,重组帧包括神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的至少一种。
[0139] 在本发明的另一个实施例中,进一步包括:第三装置,其可以配置为根据帧重组规则,读取第一节点值矩阵中的帧,以形成与第一节点值矩阵相关的多个第一节点子矩阵;第
四装置,其可以配置为利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二
节点值矩阵;以及第五装置,其可以配置为基于第二节点值矩阵生成重组帧。
[0140] 在本发明的又一个实施例中,第三装置还可以配置为:根据帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩
阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
[0141] 在本发明的再一个实施例中,第四装置还可以配置为:根据第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的权重子矩
阵的运算结果,确定第二节点值矩阵。
[0142] 在本发明的一个实施例中,运算可以包括矩阵乘法运算。
[0143] 在本发明的另一个实施例中,第四装置还可以配置为:根据多个第一节点子矩阵运算结果的求和结果,确定第二节点值矩阵。
[0144] 在本发明的又一个实施例中,第一节点值矩阵可以为神经网络模型的每层结构中输入节点的节点值矩阵,第二节点值矩阵可以为SVD节点的节点值矩阵。
[0145] 在本发明的再一个实施例中,帧重组规则可以包括以下任一:相邻的多个帧进行组合;间隔的多个帧进行组合。
[0146] 在本发明的一个实施例中,待处理任务可以包括语音识别。
[0147] 本发明的设备在上文中已经结合方法进行了详细的描述和解释,这里将不再赘述。
[0148] 通过上面对根据本发明的用于优化神经网络模型推理的方法和设备的技术方案及其多个实施例的描述,可以理解的是,本发明的方法可以在利用神经网络模型进行推理
时只使用重组帧中的有效帧,以减少无效运算量和无效输出,从而显著提高神经网络模型
的推理速度。在一些实施例中,本发明的实施方式还可以通过确定有效帧的位置偏移量来
实现读取有效帧的操作,以解决例如基于GPU进行帧重组操作过程中难以确定有效帧地址
的问题。在另一些实施例中,本发明的实施方式还可以在神经网络模型的每层结构中使用
读取多个第一节点子矩阵执行运算的方式来生成第二节点值矩阵的重组帧,能够有效利用
处理器(例如GPU)的计算资源,以解决帧重组操作耗时以及降低处理器工作效率的问题,并
且通过对每层网络结构中不同节点的区分处理有利于进一步地提高推理速度。
[0149] 应当注意,尽管在上文详细描述中提及了设备的若干模块或装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和
功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分
为由多个装置来具体化。
[0150] 此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的
结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,
将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0151] 申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多
个这种元素的存在。
[0152] 虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能
组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和
范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含
所有这样的修改及等同结构和功能。