用于优化神经网络模型推理的方法及设备转让专利
申请号 : CN202110128162.3
文献号 : CN112862101B
文献日 : 2022-02-08
发明人 : 蒲永杰 , 高飞 , 王玉龙 , 张广勇 , 段亦涛
申请人 : 网易有道信息技术(北京)有限公司
摘要 :
权利要求 :
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任一所述的设备,其中所述待处理任务包括语音识别。
说明书 :
用于优化神经网络模型推理的方法及设备
技术领域
背景技术
此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技
术,并且并不因为包括在本部分中就承认是现有技术。
实际应用中发挥了重要的作用。然而,由于时延神经网络推理时的计算量较大,导致利用时
延神经网络模型进行推理时的推理速度较慢以及吞吐量较低,这将极大地影响用户的使用
体验,并且在高吞吐量需求的情况下将需要更多的计算设备来进行推理运算,从而增加了
硬件成本和设备损耗。
发明内容
关的帧重组以便进一步地操作。然而,当利用时延神经网络模型处理批次任务时,重组操作
会使得不同任务之间产生无效帧,并且无效帧的后续计算也是无效的。特别是当神经网络
模型的层数较多时,无效帧的数量会随着层数的增加而增加,进而产生大量的无效计算,大
大降低了神经网络模型的推理速度,这是非常令人烦恼的过程。
帧的帧重组规则,确定所述重组帧中有效帧和/或无效帧的位置,其中,所述有效帧仅包括
来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理任务的帧的组合;以及
根据所述有效帧和/或所述无效帧的位置,在利用所述神经网络模型进行推理时只使用所
述有效帧。
或无效帧的位置;以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中
有效帧和/或无效帧的位置。
根据上一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
移量是否相同,确定本层重组帧中有效帧的位置偏移量。
帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;利用所述多个第一节点子
矩阵分别与相应的权重执行运算,以确定第二节点值矩阵;以及基于所述第二节点值矩阵
生成所述重组帧。
个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个
第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
述权重子矩阵的运算结果,确定所述第二节点值矩阵。
神经网络模型的重组帧的帧重组规则,确定所述重组帧中有效帧和/或无效帧的位置,其
中,所述有效帧仅包括来自同一待处理任务的帧的组合,所述无效帧包括来自不同待处理
任务的帧的组合;以及第二装置,其配置为根据所述有效帧和/或所述无效帧的位置,在利
用所述神经网络模型进行推理时只使用所述有效帧。
上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位
置。
效帧以进行后续运算操作。
一层重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
阵;第四装置,其配置为利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定
第二节点值矩阵;以及第五装置,其配置为基于所述第二节点值矩阵生成所述重组帧。
子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
权重子矩阵的运算结果,确定所述第二节点值矩阵。
使用无效帧进行后续的无效运算,这样可以显著减少无效运算量,从而能够有利于提高神
经网络模型的推理速度,并且可以使得神经网络模型能够更好的适应于高吞吐量需求的应
用场景中。在一些实施例中,本发明实施方式还可以根据有效帧的位置偏移量来读取有效
帧以进行后续运算操作,由于位置偏移量更容易计算和存储,因此这样的设置将使得对有
效帧的读取操作更加容易和方便。在另一些实施例中,本发明实施方式还可以通过利用多
个第一节点子矩阵与相应的权重执行运算,以得到第二节点值矩阵及其重组帧,能够解决
通过反复读写关联帧生成重组帧导致的计算资源空闲等问题,从而能够有效提高处理器的
工作效率以及有利于进一步提高神经网络模型的推理速度。
附图说明
干实施方式,其中:
具体实施方式
方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能
够将本公开的范围完整地传达给本领域的技术人员。
储器(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的部分工作。
件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系
统”等。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计
算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读
存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便
携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储
器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、
或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程
序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可
读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于
由指令执行系统、装置或者器件使用或者与其结合使用的程序。
还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以
完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域
网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来
通过因特网连接)。
都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机
或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计
算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功
能/操作的装置。
个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图
和/或框图中的方框中规定的功能/操作的过程。
征值帧通过运算得到的节点值的集合称为“帧”,以用于描述神经网络模型中某一层的某一
组节点值。
理时的计算量和参数量,可以对于神经网络模型的每一层进行奇异值分解(SVD),使得每层
结构中可以至少包括输入节点、奇异值分解(SVD)节点和输出节点。在一些应用场景中,也
可以将输入节点和输出节点称为普通节点,其中普通节点每一帧的节点值数量较多而SVD
节点每一帧的节点值数量较少。
层节点的节点值都和上一层的前后帧有关,所以在全连接层之前,需要对帧进行重组,例如
可以将相邻多个帧的节点值放置到矩阵的同一行,以便于执行后续的运算。例如图2中所
示,TDNN模型的某一层节点可以包括第一帧、第二帧、第三帧、第四帧和第五帧等,在对该层
节点执行重组操作后,可以得到包括第一帧和第二帧在第一行、第二帧和第三帧在第二行、
第三帧和第四帧在第三行、以及第四帧和第五帧在第四行的矩阵。
用例如图形处理器(GPU)进行计算,例如图4中所示的,可以将第一个请求和第二个请求组
合进行处理。然而来自不同任务的帧在重组的时候会产生无效帧(例如图4中的虚线框所示
的第一个请求的第四帧和第二个请求的第一帧的组合),并且无效帧的后续计算也将是无
效的。特别是当神经网络模型的层数较多时,无效帧的数量将会随着层数的增加而增加(例
如图5中所示),从而产生大量的无效计算。
术内容,并不意味着本发明实施方式不可以用于其他设备、系统、环境或场景。
求和第四个任务请求组合为同一个批次的任务进行处理。在利用神经网络模型进行处理
后,第一个任务请求、第二个任务请求、第三个任务请求和第四个任务请求可以分别对应输
出第一输出、第二输出、第三输出和第四输出。
无效计算不仅会降低神经网络模型的推理速度和效率,还会在最终的输出结果中产生无效
输出,从而影响用户的使用体验。特别是在对一些长度较短的任务请求(例如流式语音识别
任务)进行处理时,由于同一批次的任务数量增多,无效计算的占比将会更大,并且处理效
率也会受到较大影响。
明实施方式的方法能够通过确定重组帧中有效帧和/或无效帧的位置,并在利用神经网络
模型进行推理时只使用有效帧,以有效减少或避免推理过程中的无效运算,从而能够显著
提高神经网络模型的推理速度。
精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可
以应用于适用的任何场景。
待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规则,确定重组帧中有
效帧和/或无效帧的位置,其中,有效帧仅包括来自同一待处理任务的帧的组合,无效帧包
括来自不同待处理任务的帧的组合。
至少一种。
一个实施例中,重组帧可以包括来自同一层节点的帧的组合。在本发明的另一个实施例中,
重组帧可以包括来自不同层节点的帧的组合。在本发明的再一个实施例中,帧重组规则可
以包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合等。
规则,确定边界位置在重组帧中的位置,以便于确定重组帧中有效帧和/或无效帧的位置。
合的多个帧来自的待处理任务的关系,来确定无效帧和/或有效帧。例如,当进行组合的多
个帧来自同一个待处理任务时,可以确定该多个帧的组合为有效帧;或当进行组合的多个
帧来自不同待处理任务时,可以确定该多个帧的组合为无效帧。
第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以
得到第一帧、第二帧和第三帧组成第一行、第二帧、第三帧和第四帧组成第二行、以及第三
帧、第四帧和第五帧组成第三行的重组帧矩阵。可以理解的是,相邻的多个帧进行组合可以
不限于图示中的相邻的三个帧,也可以是相邻的两个帧(例如图2中所示)或者更多帧进行
组合。
第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以
得到第一帧和第三帧组成第一行、第二帧和第四帧组成第二行以及第三帧和第五帧组成第
三行的重组帧矩阵。可以理解的是,间隔的多个帧进行组合可以不限于图示中的间隔的两
个帧,也可以是间隔的三个帧或者更多帧进行组合。
只使用有效帧可以包括只读取有效帧的位置上的数据进行后续运算,而不读取无效帧的位
置上的数据。在一些应用场景中,只使用有效帧相当于在无效帧产生无效运算之前,从待运
算矩阵中移除无效帧的操作。
络模型进行推理时的数据处理量以提高推理效率和推理速度等。
和步骤720可以不限于对神经网络模型的一层节点的重组帧执行操作,可以根据需要对神
经网络模型的多层节点的重组帧执行上述操作。在本发明的一个实施例中,重组帧可以包
括神经网络模型的每层结构中输入节点的重组帧和奇异值分解SVD节点的重组帧二者中的
至少一种。在本发明的另一个实施例中,确定重组帧中有效帧和/或无效帧的位置可以包
括:根据每个待处理任务的起始位置以及帧重组规则,确定第一层重组帧中有效帧和/或无
效帧的位置;以及根据上一层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效
帧和/或无效帧的位置。下面将结合图9进行示例性的说明。
括来自三个待处理任务的帧(相邻待处理任务的边界位置以图示中的虚线示出),输入节点
的帧经过重组操作后可以得到图示中输入节点的重组帧,其中来自不同待处理任务的帧的
组合产生无效帧。在一些实施例中,每个待处理任务的起始位置可以为每个待处理任务的
第一帧,并且可以根据每个待处理任务的第一帧的位置来确定第一层重组帧(例如图示中
的输入节点的重组帧)中无效帧的位置。
到SVD节点的帧。在一些实施例中,可以根据上一层重组帧(例如图示中的输入节点的重组
帧)中无效帧的位置,确定本层节点(例如图示中的SVD节点)中来自不同任务的相邻帧的边
界位置(图中以虚线示出),从而可以确定本层节点的重组帧(例如图示中的SVD节点的重组
帧)中无效帧的位置。在另一些实施例中,根据本层重组帧(例如图示中的SVD节点的重组
帧)中无效帧的位置,可以确定本层重组帧(例如图示中的SVD节点的重组帧)中除无效帧以
外的其他重组帧的位置,即为有效帧的位置。
一些实施例中,该输出节点的帧可以作为下一层网络结构的输入节点的帧。在另一些实施
例中,该输出节点的帧可以根据需要执行偏差(bias)、批归一化(BN)、修正线性单元
(Relu)、加权求和等操作后作为下一层网络结构的输入节点的帧。
方式的在对TDNN模型进行推理时采用对输入节点和SVD节点均执行仅读取有效帧的操作
时,则需要耗时124ms,推理速度提高了1.6%。
施方式的在对TDNN模型进行推理时采用对输入节点和SVD节点均执行仅读取有效帧的操作
时,则需要耗时103ms,推理速度提高了22%。
长度较短的流式请求,由于产生的无效帧会更多,因此利用本发明的方法优化神经网络模
型的推理过程的效果(例如提高推理速度可达22%)将更加显著。
性的,例如,同一批次的待处理任务的个数可以不限于图示中的三个,可以根据需要设置的
更多或者更少。每个待处理任务包含的帧的数量可以不限于图中所示的三个或者四个,可
以根据需要设置的更多或者更少。重组帧可以不限于图示中的包括输入节点的重组帧和
SVD节点的重组帧,还可以根据需要仅包括输入节点的重组帧,或者仅包括SVD节点的重组
帧。
进行的后续运算或者组合均是无效的,因此在另一些实施例中,可以根据上一层重组帧中
无效帧的位置,确定本层节点中由上一层无效帧进行无效运算后得到的帧的位置,从而可
以确定本层节点的重组帧中无效帧的位置。
帧的位置。下面将结合图10进行示例性的描述。通过下面的描述,可以理解的是,图10所示
的方法可以是图7所示的方法的一个具体化表现形式,因此前文中结合图7的方法700的描
述也可以适用于下面的描述中。
的位置偏移量。位置偏移量可以理解为读取有效帧时需要偏移的位置数。在一些实施例中,
可以将确定的有效帧的位置偏移量存储在显存中。在另一些实施例中,可以根据重组帧中
有效帧和/或无效帧的位置,确定重组帧中有效帧的位置偏移量。在又一些实施例中,可以
根据同一批次中多个待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规
则,直接确定重组帧中有效帧的位置偏移量。
效帧的位置偏移量。在一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规
则,确定第一层重组帧中有效帧的位置,然后根据有效帧的位置来确定有效帧的位置偏移
量。在另一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规则,确定符合帧
重组规则的帧(例如相邻位置的帧)是否来自于同一待处理任务,以确定第一层重组帧中有
效帧的位置偏移量。为了便于理解,下面将结合图11进行示例性的说明。
其中每个待处理任务可以包括多个帧,根据每个待处理任务的起始位置(图示中以虚线示
出)以及帧重组规则(例如本实施例中的帧重组规则为相邻两个帧进行组合),可以确定第
一层重组帧中有效帧的位置偏移量(例如图示中的0、0、0、1、1、2、2、2)。具体地,可以定义第
一层重组帧中有效帧的位置偏移量的初始值为0,并且当相邻位置(图中以弧形连接线示
出)的帧来自于同一待处理任务时,相应位置(如图中箭头所示)的位置偏移量不增加;当相
邻位置的帧来自于不同待处理任务时(即在本实施例中可以是每个待处理任务的起始位置
与前一待处理任务的帧的组合),相应位置的位置偏移量可以增加1,并且在跳转两帧(如图
中虚线箭头所示)的位置上继续执行下一次对比操作。
技术人员可以根据需要进行设置和调整。下面返回图10继续进行描述。
步骤1012中(虚线框示出),可以根据上一层重组帧中有效帧的位置偏移量,确定本层重组
帧中有效帧的位置偏移量。例如,在本发明的一个实施例中,根据上一层重组帧中有效帧的
位置偏移量,确定本层重组帧中有效帧的位置偏移量可以包括:根据上一层重组帧中的相
邻位置的有效帧的位置偏移量是否相同,确定本层重组帧中有效帧的位置偏移量。为了便
于理解,下面将结合图12的一个具体实施例进行示例性的说明。
置偏移量)为0、0、0、1、1、2、2、2为例,可以首先定义本层重组帧中有效帧的位置偏移量(简
称本层位置偏移量)的初始值为0,然后依次扫描上一层位置偏移量。当上一层相邻位置(图
中以弧形连接线示出)的位置偏移量相同时,本层相应位置(如图中箭头所示)的位置偏移
量不增加;而当上一层相邻位置的位置偏移量不相同时,本层相应位置的位置偏移量可以
增加1,并且对上一层位置偏移量可以执行跳转两帧(如图中虚线箭头所示)的操作后,再继
续执行判断相邻位置的位置偏移量是否相同的操作。以此类推,可以在无需事先确定本层
有效帧的位置的情况下,获得本层有效帧的位置偏移量。类似地,根据这样的操作,可以得
到每层重组帧中有效帧的位置偏移量。
行推理时可以更加准确和方便的执行仅使用有效帧的操作。在一些实施例中,本层位置偏
移量的位置地址可以与下一层节点的帧的位置地址相同。在另一些实施例中,可以将位置
偏移量和重组帧存储在例如显存中,在需要读取本层重组帧中的有效帧时,可以用下一层
节点的帧的位置加上位置偏移量作为本层重组帧的位置来读取本层重组帧中的有效帧,从
而可以实现跳过无效帧且仅使用有效帧执行后续运算的目的。为了更加形象的展示有效帧
的读取过程,下面将结合图13进行示例性的描述。
位置序号,例如帧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’处的帧,以此类推。
并且为了与重组帧区别,下一层节点中的位置序号用“’”表示,但是“’”不改变位置顺序。
偏移量0相加的结果为0,即去读取重组帧中位置0处的帧(即帧0);帧1’的位置1’可以与位
置偏移量0相加的结果为1,即去读取重组帧中位置1处的帧(即帧1);帧3’的位置3’可以与
位置偏移量1相加的结果为4,即去读取重组帧中位置4处的帧(即帧4);帧5’的位置5’可以
与位置偏移量2相加的结果为7,即去读取重组帧中位置7处的帧(即帧7)。通过这一过程,可
以利用位置偏移量准确的读取到重组帧中的有效帧,而无需判断重组帧中的帧是有效帧还
是无效帧。
多帧可以是同时进行处理的,因此每个核心无法判断同时处理的或者之前已经处理了多少
个有效帧,因此每个核心无法确定自己正在处理的帧应该写到哪个地址中,这就为准确存
储每个有效帧和/或无效帧的地址信息造成了很大的困难。根据本发明的确定位置偏移量
的实施方式,可以很好的适用于基于GPU处理任务的场景中,以解决直接存储有效帧和/或
无效帧的地址存在困难的问题,并可以通过确定和存储位置偏移量的方式实现读取有效帧
的目的。
算,使得整个批次任务的推理结果直接就是各个待处理任务的推理运算结果的合集,而不
再有无效输出,从而有效的提高了神经网络模型的推理速度和效率,为满足更多应用场景
需求以及用户体验提供了可靠的解决方案。
组帧的操作会消耗大量的时间。例如,帧重组规则为相邻的两个帧进行组合,在进行帧重组
操作时则需要对每个节点值进行至少一次读和两次写的操作。而且由于两层网络结构之间
存在直接的加权求和等运算操作,所以每一层网络结构中的重组帧操作难以和上一层的重
组帧操作合并到一起以便利用一次显存的读写操作,因此每层网络结构中的重组帧操作只
能单独进行。然而,显存读写带宽是有限的,而且相对于计算单元来说速度很慢,重组帧操
作对显存的反复读写将会导致例如GPU的计算资源一直处于空闲等待状态,使得GPU的工作
效率大大降低。为了在解决无效计算问题的同时,还能解决重组帧反复读写耗时等问题,下
面将结合图14对根据本发明实施方式的产生重组帧的方法进行示例性的说明。
形成与第一节点值矩阵相关的多个第一节点子矩阵。第一节点值矩阵可以由第一节点包含
的多个帧组成。第一节点子矩阵可以是第一节点值矩阵的一部分。在一些实施例中,第一节
点值矩阵可以为一维矩阵或多维矩阵。在另一些实施例中,多个第一节点子矩阵相应位置
上的帧的组合符合帧重组规则。在本发明的一个实施例中,第一节点值矩阵可以为神经网
络模型的每层结构中输入节点的节点值矩阵和SVD节点的节点值矩阵中的至少一种。
以形成N个第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于
相应的重组帧。在一些实施例中,N可以为大于1的正整数。关联帧可以是用于组成同一重组
帧的帧,即用于组成不同重组帧的帧不是关联帧。例如,在一些实施例中,帧重组规则为相
邻的两个帧进行组合,则每个重组帧内的关联帧的个数N为2,且关联帧的位置关系为相邻。
第一节点子矩阵的个数与每个重组帧内的关联帧的个数相同,且每个重组帧内的N个关联
帧分别位于N个第一节点子矩阵的相应位置上。
的权重。在本发明的一个实施例中,运算可以包括矩阵乘法运算。在本发明的另一个实施例
中,确定第二节点值矩阵可以包括:根据多个第一节点子矩阵运算结果的求和结果,确定第
二节点值矩阵。在本发明的又一个实施例中,多个第一节点子矩阵运算结果可以包括对多
个第一节点子矩阵分别执行矩阵乘法运算得到的运算结果。第二节点值矩阵可以是由第一
节点的下一层节点的帧组成的矩阵。
阵。权重子矩阵的个数与第一节点子矩阵的个数相同。在一些实施例中,权重矩阵可以包括
对根据帧重组规则形成的重组帧执行运算所需的相应权重。根据重组帧中每个关联帧相应
的权重以及每个关联帧在第一节点子矩阵中的位置,将权重矩阵拆分为相应的权重子矩
阵,使得每个权重子矩阵中的每个权重值能够与相应的第一节点子矩阵中的关联帧对应。
一节点子矩阵分别与相应的权重子矩阵的运算结果的求和结果,确定第二节点值矩阵。
重组帧中关联帧是否来自于同一待处理任务,执行例如前文中结合图7‑图13所描述的确定
有效帧和/或无效帧的位置以及在后续运算中只使用有效帧等操作。
由于输入节点每一帧的节点值数量较多而SVD节点每一帧的节点值数量较少,因此针对节
点值数量较多的输入节点的节点值矩阵执行读取多个第一节点子矩阵并分别执行运算来
获得SVD节点的方法,能够有效减少显存读写次数以减少耗时,而针对节点值数量较少的
SVD节点的节点值矩阵执行帧重组以及只读取有效帧的操作,能够消除SVD节点中无效帧将
会产生的无效运算,从而能够有利于提高神经网络模型中每层网络结构的推理速度和运算
效率。
方式的在对TDNN模型进行推理时采用区分处理(即针对输入节点执行读取多个节点子矩阵
分别运算的方法,以及针对SVD节点执行仅读取有效帧的方法)的操作方式,则仅需要耗时
85ms,推理速度提高了48%。
施方式的在对TDNN模型进行推理时采用区分处理的操作方式,则仅需要耗时64ms,推理速
度提高了97%。
的流式请求的应用场景,利用本发明的方法均能够显著提高神经网络模型的推理速度。为
了更形象的展示读取多个第一节点子矩阵执行运算的过程以便于理解,下面将结合图15进
行说明。
(虚线框示出),该过程可以将第一节点值矩阵1511中相邻多个帧的节点值放置到重组帧矩
阵1512的同一行,并使用同一行的相邻多个帧和权重矩阵1513的一列相乘,以得到第二节
点值矩阵1514的一帧。
帧2和帧3进行组合、帧3和帧4进行组合、帧4和帧5进行组合、帧5和帧6进行组合以及帧6和
帧7进行组合的重组帧矩阵1512,其中同一行的帧1和帧2互为关联帧、同一行的帧2和帧3互
为关联帧,同一行的帧3和帧4、同一行的帧4和帧5等情况类似,此处不再赘述。在这个过程
中,需要对存储在例如显存中的第一节点值矩阵1511中的每个帧读取至少一次,并且需要
至少两次将读取的每个帧写入显存中的相应地址内,特别是对于节点值数量较多的第一节
点值矩阵而言,这样的反复读写过程将占用大量的读写带宽,并且计算资源在这个过程中
始终处于闲置状态。
b,第二节点值矩阵1514中的每个帧均由重组帧矩阵1512中同一行的重组帧与权重矩阵
1513执行运算而得到。例如,第二节点值矩阵1514中的a1+b2表示权重a与帧1执行运算的运
算结果和权重b与帧2执行运算的运算结果的求和结果,类似地,a2+b3、a3+b4等表示的含义
不再赘述。
个第一节点子矩阵1521、1522,并且使得两个第一节点子矩阵1521、1522相应位置(例如同
一行)上的帧的组合对应于相应的重组帧。例如,第一节点子矩阵1521中第一行的帧1与第
一节点子矩阵1522中第一行的帧2的组合,可以对应于符合帧重组规则(例如重组帧矩阵
1512中第一行)的帧1和帧2组成的重组帧。
权重a)执行运算以得到包括a1、a2、a3、a4、a5、a6的运算结果1525,以及可以将第一节点子
矩阵1522与相应的权重子矩阵1524(图示中的权重b)执行运算以得到包括b2、b3、b4、b5、
b6、b7的运算结果1526。在一些实施例中,可以在对两个第一节点子矩阵1521、1522分别执
行运算的过程中,同时将运算结果1525和运算结果1526中相应的节点值进行求和,以得到
第二节点值矩阵1514。
分别执行运算的方式可以利用计算过程代替反复读写过程,以充分利用处理器的计算资源
并加快生成第二节点值矩阵1514的速度。
中多个待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规则,确定重组
帧中有效帧和/或无效帧的位置,其中,有效帧仅包括来自同一待处理任务的帧的组合,无
效帧包括来自不同待处理任务的帧的组合;以及第二装置1620,其可以配置为根据有效帧
和/或所述无效帧的位置,在利用神经网络模型进行推理时只使用有效帧。
层重组帧中有效帧和/或无效帧的位置,确定本层重组帧中有效帧和/或无效帧的位置。
以进行后续运算操作。
重组帧中有效帧的位置偏移量,确定本层重组帧中有效帧的位置偏移量。
四装置,其可以配置为利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二
节点值矩阵;以及第五装置,其可以配置为基于第二节点值矩阵生成重组帧。
阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
阵的运算结果,确定第二节点值矩阵。
时只使用重组帧中的有效帧,以减少无效运算量和无效输出,从而显著提高神经网络模型
的推理速度。在一些实施例中,本发明的实施方式还可以通过确定有效帧的位置偏移量来
实现读取有效帧的操作,以解决例如基于GPU进行帧重组操作过程中难以确定有效帧地址
的问题。在另一些实施例中,本发明的实施方式还可以在神经网络模型的每层结构中使用
读取多个第一节点子矩阵执行运算的方式来生成第二节点值矩阵的重组帧,能够有效利用
处理器(例如GPU)的计算资源,以解决帧重组操作耗时以及降低处理器工作效率的问题,并
且通过对每层网络结构中不同节点的区分处理有利于进一步地提高推理速度。
功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分
为由多个装置来具体化。
结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,
将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
个这种元素的存在。
组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和
范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含
所有这样的修改及等同结构和功能。