CN112862100A - 用于优化神经网络模型推理的方法及设备 - Google Patents
用于优化神经网络模型推理的方法及设备 Download PDFInfo
- Publication number
- CN112862100A CN112862100A CN202110128127.1A CN202110128127A CN112862100A CN 112862100 A CN112862100 A CN 112862100A CN 202110128127 A CN202110128127 A CN 202110128127A CN 112862100 A CN112862100 A CN 112862100A
- Authority
- CN
- China
- Prior art keywords
- frames
- frame
- node
- value matrix
- node value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的实施方式提供了一种用于优化神经网络模型推理的方法及设备,其中所述方法包括:在利用所述神经网络模型进行推理时,根据所述神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;以及利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。根据本发明的方法,可以有效利用计算资源并解决帧重组操作耗时的问题,从而能够有利于提高神经网络模型的推理速度和效率,并且可以使得神经网络模型能够更好的适应于高吞吐量需求的应用场景中。
Description
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及用于优化神经网络模型推理的方法及设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
随着人工智能技术的不断发展,神经网络的应用范围越来越广。例如时延神经网络(TDNN)用作语音识别的声学模型时,凭借着高效低成本的训练过程和不错的识别率,在实际应用中发挥了重要的作用。然而,由于时延神经网络推理时的计算量较大,导致利用时延神经网络模型进行推理时的推理速度较慢以及吞吐量较低,这将极大地影响用户的使用体验,并且在高吞吐量需求的情况下将需要更多的计算设备来进行推理运算,从而增加了硬件成本和设备损耗。
发明内容
由于在时延神经网络模型中,本层节点的帧与其它层或者其他时刻的帧相关,或者是由其他层节点的多个帧计算得出,因此在对时延神经网络模型进行推理时常需要将相关的帧重组以便进一步地操作。然而,在时延神经网络模型的重组帧的产生过程中并不需要计算,只是对关联帧的节点值进行反复复制和移位,特别是对于节点数量较多的网络结构,重组帧的操作会消耗大量的时间,大大降低了时延神经网络模型的推理速度,这是非常令人烦恼的过程。
为此,非常需要一种改进的用于优化神经网络模型推理的方法,以至少克服由帧重组操作产生的耗时问题,从而提高神经网络模型的推理速度以及用户的使用体验。
在本上下文中,本发明的实施方式期望提供一种用于优化神经网络模型推理的方法及设备。
在本发明实施方式的第一方面中,提供了一种用于优化神经网络模型推理的方法,包括:在利用所述神经网络模型进行推理时,根据所述神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;以及利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。
在本发明的一个实施例中,读取第一节点值矩阵中的帧以形成与所述第一节点值矩阵相关的多个第一节点子矩阵包括:根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
在本发明的另一个实施例中,确定第二节点值矩阵包括:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。
在本发明的又一个实施例中,所述运算包括矩阵乘法运算。
在本发明的再一个实施例中,确定第二节点值矩阵包括:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。
在本发明的一个实施例中,所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为奇异值分解SVD节点的节点值矩阵;和/或所述第一节点值矩阵为所述SVD节点的节点值矩阵,所述第二节点值矩阵为每层结构中输出节点的节点值矩阵。
在本发明的另一个实施例中,还包括:根据同一批次中多个待处理任务的组合关系,以及根据所述帧重组规则,确定基于所述第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,所述重组帧中有效帧仅包括来自同一待处理任务的帧的组合,所述重组帧中无效帧包括来自不同所述待处理任务的帧的组合;以及根据所述重组帧中有效帧和/或无效帧的位置,在基于所述第二节点值矩阵执行后续运算时只使用所述有效帧。
在本发明的又一个实施例中,确定所述重组帧中有效帧和/或无效帧的位置包括:根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及根据所述第二节点值矩阵中有效帧和/或无效帧的位置,确定基于所述第二节点值矩阵重组的所述重组帧中有效帧和/或无效帧的位置。
在本发明的再一个实施例中,进一步包括:确定所述重组帧中有效帧的位置偏移量;以及根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。
在本发明的一个实施例中,确定重组帧中有效帧的位置偏移量包括:根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧的位置偏移量;以及根据所述第二节点值矩阵中有效帧的位置偏移量,确定所述重组帧中有效帧的位置偏移量。
在本发明的另一个实施例中,根据第二节点值矩阵中有效帧的位置偏移量,确定重组帧中有效帧的位置偏移量包括:根据第二节点值矩阵中的相邻位置的有效帧的位置偏移量是否相同,确定所述重组帧中有效帧的位置偏移量。
在本发明的又一个实施例中,所述第二节点值矩阵为SVD节点的节点值矩阵。
在本发明的再一个实施例中,所述待处理任务包括语音识别。
在本发明的一个实施例中,所述帧重组规则包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合。
在本发明实施方式的第二方面中,提供了一种用于优化神经网络模型推理的设备,包括:第一装置,其配置为在利用所述神经网络模型进行推理时,根据所述神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;以及第二装置,其配置为利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。
在本发明的一个实施例中,所述第一装置还配置为:根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
在本发明的另一个实施例中,所述第二装置还配置为:根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。
在本发明的又一个实施例中,所述运算包括矩阵乘法运算。
在本发明的再一个实施例中,所述第二装置还配置为:根据所述多个第一节点子矩阵运算结果的求和结果,确定所述第二节点值矩阵。
在本发明的一个实施例中,所述第一节点值矩阵为所述神经网络模型的每层结构中输入节点的节点值矩阵,所述第二节点值矩阵为奇异值分解SVD节点的节点值矩阵;和/或所述第一节点值矩阵为所述SVD节点的节点值矩阵,所述第二节点值矩阵为每层结构中输出节点的节点值矩阵。
在本发明的另一个实施例中,还包括:第三装置,其配置为根据同一批次中多个待处理任务的组合关系,以及根据所述帧重组规则,确定基于所述第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,所述重组帧中有效帧仅包括来自同一待处理任务的帧的组合,所述重组帧中无效帧包括来自不同所述待处理任务的帧的组合;以及第四装置,其配置为根据所述重组帧中有效帧和/或无效帧的位置,在基于所述第二节点值矩阵执行后续运算时只使用所述有效帧。
在本发明的又一个实施例中,所述第三装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及根据所述第二节点值矩阵中有效帧和/或无效帧的位置,确定基于所述第二节点值矩阵重组的所述重组帧中有效帧和/或无效帧的位置。
在本发明的再一个实施例中,所述第三装置还配置为:确定所述重组帧中有效帧的位置偏移量;以及所述第四装置还配置为:根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。
在本发明的一个实施例中,所述第三装置还配置为:根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧的位置偏移量;以及根据所述第二节点值矩阵中有效帧的位置偏移量,确定所述重组帧中有效帧的位置偏移量。
在本发明的另一个实施例中,所述第三装置还配置为:根据第二节点值矩阵中的相邻位置的有效帧的位置偏移量是否相同,确定所述重组帧中有效帧的位置偏移量。
在本发明的又一个实施例中,所述第二节点值矩阵为SVD节点的节点值矩阵。
在本发明的再一个实施例中,所述待处理任务包括语音识别。
在本发明的一个实施例中,所述帧重组规则包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合。
根据本发明实施方式的用于优化神经网络模型推理的方法,可以通过读取多个第一节点子矩阵并分别执行运算,以有效利用计算资源并解决帧重组操作耗时的问题,从而能够有利于提高神经网络模型的推理速度和效率,并且可以使得神经网络模型能够更好的适应于高吞吐量需求的应用场景中。在一些实施例中,本发明实施方式可以通过确定第二节点值矩阵的重组帧中有效帧和/或无效帧的位置,以及在执行后续运算时只使用有效帧而避免使用无效帧进行后续的无效运算,可以显著减少无效运算量,从而能够进一步提高神经网络模型的推理速度。在另一些实施例中,本发明实施方式还可以根据有效帧的位置偏移量来读取有效帧以进行后续运算操作,由于位置偏移量更容易计算和存储,因此这样的设置将使得对有效帧的读取操作更加容易和方便。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图;
图2示意性地示出了通过帧重组得到重组帧的过程示意图;
图3示意性地示出了利用神经网络模型进行推理时的一层网络结构的示意图;
图4示意性地示出了根据本发明实施方式的应用场景示意图;
图5示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的方法流程图;
图6示意性地示出了根据本发明另一实施例的用于优化神经网络模型推理的方法流程图;
图7示意性地示出了根据帧重组和根据本发明实施方式的生成第二节点值矩阵的过程对比的示意图;
图8示意性地示出了产生无效帧的情景示意图;
图9示意性地示出了多层重组帧产生无效帧的示意图;
图10示意性地示出了现有技术中对于多个任务请求组合的批次任务处理结果的示意图;
图11示意性地示出了根据本发明又一实施方式的用于优化神经网络模型的方法流程图;
图12a示意性地示出了根据本发明实施方式的相邻的多个帧进行组合的示意图;
图12b示意性地示出了根据本发明实施方式的间隔的多个帧进行组合的示意图;
图13示意性地示出了根据本发明实施方式的第二节点值矩阵为SVD节点的节点值矩阵的推理过程示意图;
图14示意性地示出了根据本发明再一个实施方式的用于优化神经网络模型的方法流程图;
图15示意性地示出了根据本发明实施方式的确定第二节点值矩阵中有效帧的位置偏移量的示意图;
图16示意性地示出了根据本发明实施方式的确定重组帧中有效帧的位置偏移量的示意图;
图17示意性地示出了根据本发明实施方式的根据位置偏移量读取有效帧的示意图;以及
图18示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的设备的示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图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的部分工作。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”等。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法的流程图和设备(或装置)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本发明的实施方式,提出了一种用于优化神经网络模型推理的方法及设备。
在本文中,需要理解的是,所涉及的术语包括如下:
帧,原本的特征值帧(例如语音特征值帧、图像特征值帧)在进入神经网络模型之后,成为了一个个节点值的集合,虽然不再是原本意义的“帧”,但为了叙述方便,仍将由特征值帧通过运算得到的节点值的集合称为“帧”,以用于描述神经网络模型中某一层的某一组节点值。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在一些神经网络模型中,例如时延神经网络(TDNN)模型,一般分为很多层结构,每一层之间虽然有区别但是基本的结构是类似的。为了减少神经网络模型推理时的计算量和参数量,可以对于神经网络模型的每一层进行奇异值分解(SVD),使得每层结构中可以至少包括输入节点、奇异值分解(SVD)节点和输出节点。在一些应用场景中,也可以将输入节点和输出节点称为普通节点,其中普通节点每一帧的节点值数量较多而SVD节点每一帧的节点值数量较少。
以TDNN模型为例,TDNN模型中每一层节点的节点值都是通过对上一层节点执行运算而得到的,执行运算可以通过例如全连接层来实现。在一些应用场景中,TDNN模型中每一层节点的节点值都和上一层的前后帧有关,所以在全连接层之前,需要对帧进行重组,例如可以将相邻多个帧的节点值放置到矩阵的同一行,以便于执行后续的运算。例如图2中所示,TDNN模型的某一层节点可以包括第一帧、第二帧、第三帧、第四帧和第五帧等,在对该层节点执行重组操作后,可以得到包括第一帧和第二帧在第一行、第二帧和第三帧在第二行、第三帧和第四帧在第三行、以及第四帧和第五帧在第四行的矩阵,在进行帧重组操作时则需要对每个节点值进行至少一次读和两次写的操作。
特别是当神经网络模型的层数较多时,例如图3中所示,由于两层网络结构之间存在直接的加权求和等运算操作,每一层网络结构中的重组帧操作难以和上一层的重组帧操作合并到一起以便利用一次显存的读写操作,因此每层网络结构中的重组帧操作只能单独进行,从而在利用神经网络模型推理时将会执行大量的帧重组操作。然而,显存读写带宽是有限的,而且相对于计算单元来说速度很慢,帧重组操作对显存的反复读写将会导致例如GPU的计算资源一直处于空闲等待状态,使得GPU的工作效率大大降低。
因此,本发明旨在提供一种能够利用计算资源代替帧重组操作的方法,从而解决帧重组耗时和计算效率低等问题。在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图4详细阐述本发明实施例的用于优化神经网络模型推理的方法及设备的应用场景。
图4示意性地示出了根据本发明实施方式的应用场景示意图。需要说明的是,图4仅为可以应用本发明实施方式的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,并不意味着本发明实施方式不可以用于其他设备、系统、环境或场景。
在一些应用场景中,Kaldi作为一个重要的开源语音识别平台,提供了一个基于GPU进行TDNN模型推理的语音识别系统,被业界广泛使用。以基于TDNN模型的语音识别推理过程为例,其主要包括如图4中所示的三个步骤:预处理与特征提取、TDNN模型推理、HCLG图解码,其中TDNN模型推理的计算量最大,HCLG图包括隐马尔可夫模型(“Hidden MarkovModel”)图、上下文相关性(“contextx”)图、词典(“lexicon”)图和语言模型(“grammer”)图经过计算合并而成。因此,在基于Kaldi平台的开源语音识别系统中,TDNN模型推理这一步是整个系统的吞吐量瓶颈,从而影响了整个系统的推理速度。然而,在利用TDNN模型进行推理时需要对每层结构中的普通节点和SVD节点执行帧重组操作,特别是对于节点值数量较多的普通节点,将会因产生大量的读写操作而消耗推理时间。
本发明实施方式提供的用于优化神经网络模型推理的方法,可以适用于需要帧重组操作的神经网络模型推理过程中,并且能够适用于处理例如整句语音任务或者流式语音任务的应用场景中。根据本发明的方法可以通过读取多个第一节点子矩阵分别执行运算的方式代替帧重组和全连接层的操作,以消除或者减少重组耗时对神经网络模型推理速度的影响,从而能够显著提高神经网络模型的推理速度和处理器的工作效率等。
示例性方法
下面结合图4所示的应用场景,参考图5来描述根据本发明示例性实施方式的用于优化神经网络模型推理的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
首先参考图5,示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的方法流程图。如图5中所示,方法500可以包括:在步骤510中,可以在利用神经网络模型进行推理时,根据神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与第一节点值矩阵相关的多个第一节点子矩阵。第一节点值矩阵可以由第一节点包含的多个帧组成。第一节点子矩阵可以是第一节点值矩阵的一部分。在一些实施例中,第一节点值矩阵可以为一维矩阵或多维矩阵。在另一些实施例中,多个第一节点子矩阵相应位置上的帧的组合符合帧重组规则。在本发明的一个实施例中,第一节点值矩阵可以为神经网络模型的每层结构中输入节点的节点值矩阵和SVD节点的节点值矩阵中的至少一种。
接着,在步骤520中,可以利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。第一节点子矩阵相应的权重可以包括第一节点子矩阵的帧相对应的权重。在本发明的一个实施例中,运算可以包括矩阵乘法运算。在本发明的另一个实施例中,确定第二节点值矩阵可以包括:根据多个第一节点子矩阵运算结果的求和结果,确定第二节点值矩阵。在本发明的又一个实施例中,多个第一节点子矩阵运算结果可以包括对多个第一节点子矩阵分别执行矩阵乘法运算得到的运算结果。第二节点值矩阵可以是由第一节点的下一层节点的帧组成的矩阵。
在本发明的一个实施例中,第一节点值矩阵可以为神经网络模型的每层结构中输入节点的节点值矩阵,第二节点值矩阵可以为奇异值分解SVD节点的节点值矩阵;和/或第一节点值矩阵可以为SVD节点的节点值矩阵,第二节点值矩阵可以为每层结构中输出节点的节点值矩阵。
根据本发明的一个测试例,在每个请求长度为1000帧的整句语音识别请求中,基于Kaldi平台的开源语音识别系统对TDNN模型进行推理需要耗时126ms,而根据本发明实施方式的在对TDNN模型的每层节点均执行读取多个第一节点子矩阵并分别执行运算(即第一节点值矩阵为输入节点的节点值矩阵和SVD节点的节点值矩阵)的操作方式,则仅需要耗时87ms,推理速度提高了45%。
根据本发明的另一个测试例,在每个请求长度为21帧的流式语音识别请求中,基于Kaldi平台的开源语音识别系统进行TDNN模型进行推理需要耗时126ms,而根据本发明实施方式的在对TDNN模型的每层节点均执行读取多个第一节点子矩阵并分别执行运算(即第一节点值矩阵为输入节点的节点值矩阵和SVD节点的节点值矩阵)的操作方式,则仅需要耗时87ms,推理速度提高了45%。
通过上述多个测试例可以看出,通过对神经网络模型的多个节点值矩阵执行多个节点子矩阵分别运算的实施方式,能够显著提高神经网络模型的推理速度。并且根据本发明的方法可以不受限于输入的请求任务的数量或者类型等,无论是对于每个请求较长的整句请求还是对于每个请求长度较短的流式请求的应用场景,均能够实现较好的提速效果。
以上结合图5对根据本发明实施方式的用于优化神经网络模型推理的方法进行了描述,本领域技术人员可以理解的是,上面的描述是示例性的而非限制性的,例如,多个第一节点子矩阵的数量可以根据帧重组规则进行设置。下面将结合图6进行示例性的说明。
图6示意性地示出了根据本发明另一实施例的用于优化神经网络模型推理的方法流程图。通过下面的描述,可以理解的是,图6所示的方法600是图5所示的方法500的一个具体化表现形式,因此前文中结合图5的描述也可以同样适用于图6中。
如图6中所示,方法600可以包括:在步骤610中,可以根据帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。可以理解的是,步骤610可以是前文中结合图5所示的步骤510的一个具体实施方式。在一些实施例中,N可以为大于1的正整数。关联帧可以是用于组成同一重组帧的帧,即用于组成不同重组帧的帧不是关联帧。例如,在一些实施例中,帧重组规则为相邻的两个帧进行组合,则每个重组帧内的关联帧的个数N为2,且关联帧的位置关系为相邻。第一节点子矩阵的个数与每个重组帧内的关联帧的个数相同,且每个重组帧内的N个关联帧分别位于N个第一节点子矩阵的相应位置上。
接着,在步骤620中,可以根据第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵。权重子矩阵的个数与第一节点子矩阵的个数相同。在一些实施例中,权重矩阵可以包括对根据帧重组规则形成的重组帧执行运算所需的相应权重。根据重组帧中每个关联帧相应的权重以及每个关联帧在第一节点子矩阵中的位置,将权重矩阵拆分为相应的权重子矩阵,使得每个权重子矩阵中的每个权重值能够与相应的第一节点子矩阵中的关联帧对应。
然后,流程可以前进到步骤630中,可以根据每个第一节点子矩阵与相应的权重子矩阵的运算结果,确定第二节点值矩阵。在一些实施例中,可以根据多个第一节点子矩阵分别与相应的权重子矩阵的运算结果的求和结果,确定第二节点值矩阵。可以理解的是,步骤620和步骤630可以是前文中结合图5所示的步骤520的一个具体实施方式。
为了更形象的展示读取多个第一节点子矩阵执行运算的过程以便于理解,下面将结合图7对通过本发明的方法和通过帧重组的方法生成第二节点值矩阵的过程进行对比和说明。
图7示意性地示出了根据帧重组和根据本发明实施方式的生成第二节点值矩阵的过程对比的示意图。如图7中所示,首先可以参考通过帧重组操作和运算生成第二节点值矩阵714的过程710(虚线框示出),该过程可以将第一节点值矩阵711中相邻多个帧的节点值放置到重组帧矩阵712的同一行,并使用同一行的相邻多个帧和权重矩阵713的一列相乘,以得到第二节点值矩阵714的一帧。
具体地,以由帧1、帧2、帧3、帧4、帧5、帧6、帧7组成的第一节点值矩阵711以及帧重组规则为相邻的两个帧进行组合为例,通过重组操作可以得到包括帧1和帧2进行组合、帧2和帧3进行组合、帧3和帧4进行组合、帧4和帧5进行组合、帧5和帧6进行组合以及帧6和帧7进行组合的重组帧矩阵712,其中同一行的帧1和帧2互为关联帧、同一行的帧2和帧3互为关联帧,同一行的帧3和帧4、同一行的帧4和帧5等情况类似,此处不再赘述。在这个过程中,需要对存储在例如显存中的第一节点值矩阵711中的每个帧读取至少一次,并且需要至少两次将读取的每个帧写入显存中的相应地址内,特别是对于节点值数量较多的第一节点值矩阵而言,这样的反复读写过程将占用大量的读写带宽,并且计算资源在这个过程中始终处于闲置状态。
接着,通过对重组帧矩阵712与相应的权重矩阵713执行运算,可以得到第二节点值矩阵714,其中为了便于观察对应关系,权重矩阵713可以包括同一列的权重a和权重b,第二节点值矩阵714中的每个帧均由重组帧矩阵712中同一行的重组帧与权重矩阵713执行运算而得到。例如,第二节点值矩阵714中的a1+b2表示权重a与帧1执行运算的运算结果和权重b与帧2执行运算的运算结果的求和结果,类似地,a2+b3、a3+b4等表示的含义不再赘述。
如图7中进一步示出的,根据本发明的实施方式,可以根据帧重组规则,例如相邻两个帧进行组合,读取第一节点值矩阵711中的帧以形成与第一节点值矩阵711相关的两个第一节点子矩阵721、722,并且使得两个第一节点子矩阵721、722相应位置(例如同一行)上的帧的组合对应于相应的重组帧。例如,第一节点子矩阵721中第一行的帧1与第一节点子矩阵722中第一行的帧2的组合,可以对应于符合帧重组规则(例如重组帧矩阵712中第一行)的帧1和帧2组成的重组帧。
接着,可以根据两个第一节点子矩阵721、722,将权重矩阵713拆分为两个权重子矩阵723、724。然后,可以将第一节点子矩阵721与相应的权重子矩阵723(图示中的权重a)执行运算以得到包括a1、a2、a3、a4、a5、a6的运算结果725,以及可以将第一节点子矩阵722与相应的权重子矩阵724(图示中的权重b)执行运算以得到包括b2、b3、b4、b5、b6、b7的运算结果726。在一些实施例中,可以在对两个第一节点子矩阵721、722分别执行运算的过程中,同时将运算结果725和运算结果726中相应的节点值进行求和,以得到第二节点值矩阵714。
根据以上结合图7的描述,可以理解的是,在一些应用场景中,相比于通过帧重组操作和运算生成第二节点值矩阵714的过程710,通过对多个第一节点子矩阵721、722分别执行运算的方式可以利用计算过程代替反复读写过程,以充分利用处理器的计算资源并加快生成第二节点值矩阵714的速度。
进一步地,本发明人还发现,在一些应用场景中,为了能够增加任务的并行度,可以将多个任务请求组合到一起使用例如图形处理器(GPU)进行计算,例如图8中所示的,可以将第一个请求和第二个请求组合进行处理。然而来自不同任务的帧在重组的时候会产生无效帧(例如图8中的虚线框所示的第一个请求的第四帧和第二个请求的第一帧的组合),并且无效帧的后续计算也将是无效的。特别是当神经网络模型的层数较多时,例如图9中所示,虽然帧的数量会逐层减少,但是无效帧的数量将会随着层数的增加而增加,从而产生大量的无效计算。
图10示意性地示出了现有技术中对于多个任务请求组合的批次任务处理结果的示意图。如图10中所示,以图示中的第一个任务请求、第二个任务请求、第三个任务请求和第四个任务请求组合为同一个批次的任务进行处理为例,在利用神经网络模型进行处理后,第一个任务请求、第二个任务请求、第三个任务请求和第四个任务请求可以分别对应输出第一输出、第二输出、第三输出和第四输出的有效输出。然而,在利用神经网络模型进行推理时,相邻任务的重组帧中会产生无效帧,并且无效帧的数量会随着神经网络模型的层数的增加而增加,进而产生大量的无效计算。这些无效计算不仅会降低神经网络模型的推理速度和效率,还会在最终的输出结果中产生无效输出,从而影响用户的使用体验。特别是在对一些长度较短的任务请求(例如流式语音识别任务)进行处理时,由于同一批次的任务数量增多,无效计算的占比将会更大,并且处理效率也会受到较大影响。
可以理解的是,本发明的读取多个节点子矩阵的方法可以解决重组帧反复读写耗时的问题,但是难以避免一些应用场景中产生无效帧以及无效计算的问题。为了能够在减少重组耗时的基础上,还能解决无效计算的问题,以便进一步优化神经网络模型的推理过程,下面将结合图11对根据本发明又一个实施方式的用于优化神经网络模型的方法进行示例性的说明。
图11示意性地示出了根据本发明又一实施方式的用于优化神经网络模型的方法流程图。如图11中所示,方法1100可以包括:在步骤1110中,可以在利用神经网络模型进行推理时,根据神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与第一节点值矩阵相关的多个第一节点子矩阵。接着,在步骤1120中,可以利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。步骤1110和步骤1120已经在前文中结合图5中的步骤510和520进行了详细的描述,此处不再赘述。
然后,流程可以前进到步骤1130中,可以根据同一批次中多个待处理任务的组合关系,以及根据帧重组规则,确定基于第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,重组帧中有效帧仅包括来自同一待处理任务的帧的组合,重组帧中无效帧包括来自不同待处理任务的帧的组合。
上文中所述的组合关系可以包括多个待处理任务的组合顺序和组合任务个数等中的至少一种。在本发明的一个实施例中,待处理任务可以包括语音识别、图像识别等中的至少一种。
上文中所述的重组帧可以包括有效帧和无效帧,在一些实施例中,根据有效帧的位置可以确定无效帧的位置,或者根据无效帧的位置可以确定有效帧的位置。在本发明的一个实施例中,重组帧可以包括来自同一层节点的帧的组合。在本发明的另一个实施例中,重组帧可以包括来自不同层节点的帧的组合。在本发明的再一个实施例中,帧重组规则可以包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合等。
在一些实施例中,例如帧重组规则为相邻的多个帧进行组合,可以根据同一批次中多个待处理任务的组合关系,确定相邻任务的边界位置,并且可以根据重组帧的帧重组规则,确定边界位置在重组帧中的位置,以便于确定重组帧中有效帧和/或无效帧的位置。
在又一些实施例中,例如帧重组规则为间隔的多个帧进行组合,可以根据帧重组规则来确定每个帧在重组帧中的位置以及进行组合的多个帧的位置,并且可以根据进行组合的多个帧来自的待处理任务的关系,来确定无效帧和/或有效帧。例如,当进行组合的多个帧来自同一个待处理任务时,可以确定该多个帧的组合为有效帧;或当进行组合的多个帧来自不同待处理任务时,可以确定该多个帧的组合为无效帧。
需要理解的是,帧重组规则中进行组合的多个帧可以是两个帧、三个帧或者更多数量的帧。为了便于理解帧重组规则,下面将结合图12a和图12b进行示例性的描述。
图12a示意性地示出了根据本发明实施方式的相邻的多个帧进行组合的示意图。在一个实施例中,帧重组规则可以包括相邻的三个帧进行组合,如图12a中所示,以依次相邻的第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以得到第一帧、第二帧和第三帧组成第一行、第二帧、第三帧和第四帧组成第二行、以及第三帧、第四帧和第五帧组成第三行的重组帧矩阵。可以理解的是,相邻的多个帧进行组合可以不限于图示中的相邻的三个帧,也可以是相邻的两个帧(例如图2中所示)或者更多帧进行组合。
图12b示意性地示出了根据本发明实施方式的间隔的多个帧进行组合的示意图。在一个实施例中,帧重组规则可以包括间隔的两个帧进行组合,如图12b中所示,以依次相邻的第一帧、第二帧、第三帧、第四帧和第五帧为例,经过重组(如图中箭头所示)操作之后,可以得到第一帧和第三帧组成第一行、第二帧和第四帧组成第二行以及第三帧和第五帧组成第三行的重组帧矩阵。可以理解的是,间隔的多个帧进行组合可以不限于图示中的间隔的两个帧,也可以是间隔的三个帧或者更多帧进行组合。
下面返回图11继续进行描述,如图11中进一步示出的,在步骤1140中,可以根据重组帧中有效帧和/或无效帧的位置,在基于第二节点值矩阵执行后续运算时只使用有效帧。在一些实施例中,只使用有效帧可以包括只读取有效帧的位置上的数据进行后续运算,而不读取无效帧的位置上的数据。在一些应用场景中,只使用有效帧相当于在无效帧产生无效运算之前,从待运算矩阵中移除无效帧的操作。
根据这样的设置,可以有效避免使用无效帧进行后续运算,从而可以显著减少或者消除在基于第二节点值矩阵执行后续运算时可能产生的无效计算,进而可以有利于减少神经网络模型进行推理时的数据处理量以提高推理效率和推理速度等。
在本发明的一个实施例中,第一节点值矩阵可以为神经网络模型的每层网络结构中的输入节点的节点值矩阵,第二节点值矩阵可以为SVD节点的节点值矩阵。在本发明的另一个实施例中,确定重组帧中有效帧和/或无效帧的位置可以包括:根据每个待处理任务的起始位置以及帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及根据第二节点值矩阵中有效帧和/或无效帧的位置,确定基于所述第二节点值矩阵重组的所述重组帧中有效帧和/或无效帧的位置。为了便于理解,下面将结合图13进行示例性的描述。
图13示意性地示出了根据本发明实施方式的第二节点值矩阵为SVD节点的节点值矩阵的推理过程示意图。如图13中所示,以神经网络模型的一层网络结构为例,其输入节点(即第一节点值矩阵)可以包括来自三个待处理任务的帧(相邻待处理任务的边界位置以图示中的虚线示出),通过读取输入节点的帧以形成多个第一节点子矩阵,并利用多个第一节点子矩阵分别与相应的权重执行运算,可以得到SVD节点的帧(即第二节点值矩阵)。在一些实施例中,每个待处理任务的起始位置可以为每个待处理任务的第一帧,并且可以根据每个待处理任务的第一帧的位置来确定SVD节点中无效帧的位置。SVD节点中无效帧可以为输入节点经过无效运算得到的帧,SVD节点中除无效帧以外的帧可以为输入节点经过有效运算得到的帧,可以称为SVD节点的有效帧。
接着,如图13中进一步示出的,根据确定的SVD节点中无效帧和/或有效帧的位置,可以确定基于SVD节点重组的重组帧(即图示中的SVD节点的重组帧)中有效帧和/或无效帧的位置,其中SVD节点的重组帧中的无效帧来自SVD节点中无效帧与其他帧的组合,或者来自SVD节点中无效帧和无效帧的组合。在基于SVD节点执行后续运算时可以只读取有效帧来进行后续运算操作,以消除SVD节点中无效帧对后续运算速率的影响,并可以得到仅包含有效帧的输出节点。在一些实施例中,该输出节点的帧可以作为下一层网络结构的输入节点的帧。在另一些实施例中,该输出节点的帧可以根据需要执行偏差(bias)、批归一化(BN)、修正线性单元(Relu)、加权求和等操作后作为下一层网络结构的输入节点的帧。
在一些实施例中,可以根据SVD节点的重组帧中无效帧的位置,确定输出节点中来自不同任务的相邻帧的边界位置(图中以虚线示出),从而可以确定下一层网络结构中无效帧的位置。在另一些实施例中,根据本层重组帧(例如图示中的SVD节点的重组帧)中无效帧的位置,可以确定本层重组帧(例如图示中的SVD节点的重组帧)中除无效帧以外的其他重组帧的位置,即为有效帧的位置。
需要理解的是,由于输入节点每一帧的节点值数量较多而SVD节点每一帧的节点值数量较少,因此针对节点值数量较多的输入节点的节点值矩阵执行读取多个第一节点子矩阵并分别执行运算来获得SVD节点的方法,能够有效减少显存读写次数以减少耗时,而针对节点值数量较少的SVD节点的节点值矩阵执行帧重组以及只读取有效帧的操作,能够消除SVD节点中无效帧将会产生的无效运算,从而能够有利于提高神经网络模型中每层网络结构的推理速度和运算效率。基于这样的原理,下面将通过几个测试例进一步说明本发明实施方式的有益效果。
根据本发明的一个测试例,在每个请求长度为1000帧的整句语音识别请求中,基于Kaldi平台的开源语音识别系统对TDNN模型进行推理需要耗时126ms,而根据本发明实施方式的在对TDNN模型进行推理时采用区分处理(即针对输入节点执行读取多个节点子矩阵分别运算的方法,以及针对SVD节点执行仅读取有效帧的方法)的操作方式,则仅需要耗时85ms,推理速度提高了48%。
根据本发明的另一个测试例,在每个请求长度为21帧的流式语音识别请求中,基于Kaldi平台的开源语音识别系统进行TDNN模型进行推理需要耗时126ms,而根据本发明实施方式的在对TDNN模型进行推理时采用区分处理的操作方式,则仅需要耗时64ms,推理速度提高了97%。
通过上述多个测试例可以看出,通过对神经网络模型进行推理时使用根据本发明的区分处理的操作方式,能够有效提高神经网络模型的推理速度,特别是对于每个请求长度较短的流式语音识别请求,由于产生的无效帧会更多,因此利用本发明的方法优化神经网络模型的推理过程的效果(例如推理速度提高97%)将更加显著。
以上结合图13对根据本发明实施方式的第二节点值矩阵为SVD节点的节点值矩阵的实现方式进行了描述,本领域技术人员可以理解的是,上面的描述是示例性的而非限制性的,例如,同一批次的待处理任务的个数可以不限于图示中的三个,可以根据需要设置的更多或者更少。每个待处理任务包含的帧的数量可以不限于图中所示的三个或者四个,可以根据需要设置的更多或者更少。
进一步地,在本发明的又一个实施例中,根据本发明的确定基于第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,可以根据需要通过确定有效帧的位置偏移量来间接确定有效帧和/或无效帧的位置。下面将结合图14进行示例性的描述。通过下面的描述,可以理解的是,图14所示的方法可以是图11所示的方法的一个具体化表现形式,因此前文中结合图11的方法1100的描述也可以适用于下面的描述中。
图14示意性地示出了根据本发明再一个实施方式的用于优化神经网络模型的方法流程图。如图14中所示,方法1400可以包括:在步骤1410中,可以在利用神经网络模型进行推理时,根据神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与第一节点值矩阵相关的多个第一节点子矩阵。接着,在步骤1420中,可以利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。步骤1410和步骤1420已经在前文中结合图5中的步骤510和520进行了详细的描述,此处不再赘述。
然后,流程可以前进到步骤1430中,可以确定重组帧中有效帧的位置偏移量。位置偏移量可以理解为读取有效帧时需要偏移的位置数。在一些实施例中,可以将确定的有效帧的位置偏移量存储在显存中。在另一些实施例中,可以根据重组帧中有效帧和/或无效帧的位置,确定重组帧中有效帧的位置偏移量。在又一些实施例中,可以根据同一批次中多个待处理任务的组合关系,以及根据神经网络模型的重组帧的帧重组规则,直接确定重组帧中有效帧的位置偏移量。
在本发明的一个实施例中,如图14中所示,步骤1430可以包括:在步骤1431中(虚线框示出),可以根据每个待处理任务的起始位置以及帧重组规则,确定第二节点值矩阵中有效帧的位置偏移量。在一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规则,确定第二节点值矩阵中有效帧的位置,然后根据有效帧的位置来确定有效帧的位置偏移量。在另一些实施例中,可以根据每个待处理任务的起始位置以及帧重组规则,确定符合帧重组规则的帧(例如相邻位置的帧)是否来自于同一待处理任务,以确定第二节点值矩阵中有效帧的位置偏移量。为了便于理解,下面将结合图15进行示例性的说明。
图15示意性地示出了根据本发明实施方式的确定第二节点值矩阵中有效帧的位置偏移量的示意图。如图15中所示,以输入神经网络模型的同一批次1501的三个待处理任务为例,其中每个待处理任务可以包括多个帧,根据每个待处理任务的起始位置(图示中以虚线示出)以及帧重组规则(例如本实施例中的帧重组规则为相邻两个帧进行组合),可以确定第二节点值矩阵中有效帧的位置偏移量1502(例如图示中的0、0、0、1、1、2、2、2)。具体地,可以定义第二节点值矩阵中有效帧的位置偏移量的初始值为0,并且当输入的相邻位置(图中以弧形连接线示出)的帧来自于同一待处理任务时,相应位置(如图中箭头所示)的位置偏移量不增加;当相邻位置的帧来自于不同待处理任务时(即在本实施例中可以是每个待处理任务的起始位置与前一待处理任务的帧的组合),相应位置的位置偏移量可以增加1,并且在跳转两帧(如图中虚线箭头所示)的位置上继续执行下一次对比操作。
可以理解的是,图15所示的实施方式是示例性的而非限制性的,例如同一批次1501的任务个数、每个任务包含的帧数、相邻两帧进行组合的帧重组规则等均是示例性的,本领域技术人员可以根据需要进行设置和调整。下面返回图14继续进行描述。
如图14中所示,在步骤1432中(虚线框示出),可以根据第二节点值矩阵中有效帧的位置偏移量,确定重组帧中有效帧的位置偏移量。例如,在本发明的一个实施例中,根据第二节点值矩阵中有效帧的位置偏移量,确定重组帧中有效帧的位置偏移量可以包括:根据第二节点值矩阵中的相邻位置的有效帧的位置偏移量是否相同,确定重组帧中有效帧的位置偏移量。为了便于理解,下面将结合图16的一个具体实施例进行示例性的说明。
图16示意性地示出了根据本发明实施方式的确定重组帧中有效帧的位置偏移量的示意图。如图16中所示,以第二节点值矩阵中有效帧的位置偏移量1601为0、0、0、1、1、2、2、2为例,可以首先定义重组帧中有效帧的位置偏移量1602的初始值为0,然后依次扫描第二节点值矩阵中有效帧的位置偏移量1601。当第二节点值矩阵中有效帧的位置偏移量1601中相邻位置(图中以弧形连接线示出)的位置偏移量相同时,相应位置(如图中箭头所示)的重组帧中有效帧的位置偏移量1602不增加;而当第二节点值矩阵中有效帧的位置偏移量1601中相邻位置的位置偏移量不相同时,相应位置的重组帧中有效帧的位置偏移量1602可以增加1,并且对第二节点值矩阵中有效帧的位置偏移量1601可以执行跳转两帧(如图中虚线箭头所示)的操作后,再继续执行判断相邻位置的位置偏移量是否相同的操作。以此类推,可以在无需事先确定第二节点值矩阵中有效帧的位置的情况下,获得重组帧中有效帧的位置偏移量。
下面返回图14继续描述,流程可以前进到步骤1440中,可以根据位置偏移量,读取重组帧中的有效帧以进行后续运算操作。根据位置偏移量的设置,在基于第二节点值矩阵执行后续运算时可以更加准确和方便的执行仅使用有效帧的操作。在一些实施例中,可以将位置偏移量和重组帧存储在例如显存中,在需要读取重组帧中的有效帧时,可以用下一层节点(例如输出节点)的帧的位置加上位置偏移量作为第二节点值矩阵的重组帧的位置来读取重组帧中的有效帧,从而可以实现跳过无效帧且仅使用有效帧执行后续运算的目的。为了更加形象的展示有效帧的读取过程,下面将结合图17进行示例性的描述。
图17示意性地示出了根据本发明实施方式的根据位置偏移量读取有效帧的示意图。如图17中所示,重组帧中的帧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’处的帧,以此类推。并且为了与重组帧区别,下一层节点中的位置序号用“’”表示,但是“’”不改变位置顺序。
具体地过程可以描述为,在执行运算的过程中,可以用下一层节点中的位置加上对应位置的位置偏移量作为重组帧的位置来读取有效帧。例如,帧0’的位置0’可以与位置偏移量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处理任务的场景中,以解决直接存储有效帧和/或无效帧的地址存在困难的问题,并可以通过确定和存储位置偏移量的方式实现读取有效帧的目的。
通过上面的描述,本领域技术人员可以理解的是,在本发明的一些实施例中,通过在基于第二节点值矩阵执行后续运算时只使用有效帧的方式,能够显著减少后续运算中的无效运算,使得整个批次任务的推理结果直接就是各个待处理任务的推理运算结果的合集,而不再有无效输出,从而有效的提高了神经网络模型的推理速度和效率,为满足更多应用场景需求以及用户体验提供了可靠的解决方案。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图18对本发明示例性实施方式的用于优化神经网络模型推理的设备进行描述。
图18示意性地示出了根据本发明实施方式的用于优化神经网络模型推理的设备的示意图。如图18中所示,设备1800可以包括:第一装置1810,其配置为在利用神经网络模型进行推理时,根据神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与第一节点值矩阵相关的多个第一节点子矩阵;以及第二装置1820,其配置为利用多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。
在本发明的一个实施例中,第一装置1810还可以配置为:根据帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
在本发明的另一个实施例中,第二装置1820还可以配置为:根据第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及根据每个第一节点子矩阵与相应的权重子矩阵的运算结果,确定第二节点值矩阵。
在本发明的又一个实施例中,运算可以包括矩阵乘法运算。
在本发明的再一个实施例中,第二装置1820还可以配置为:根据多个第一节点子矩阵运算结果的求和结果,确定第二节点值矩阵。
在本发明的一个实施例中,第一节点值矩阵为神经网络模型的每层结构中输入节点的节点值矩阵,第二节点值矩阵为奇异值分解SVD节点的节点值矩阵;和/或第一节点值矩阵为SVD节点的节点值矩阵,第二节点值矩阵为每层结构中输出节点的节点值矩阵。
在本发明的另一个实施例中,还可以包括:第三装置,其可以配置为根据同一批次中多个待处理任务的组合关系,以及根据帧重组规则,确定基于第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,重组帧中有效帧仅包括来自同一待处理任务的帧的组合,重组帧中无效帧包括来自不同待处理任务的帧的组合;以及第四装置,其可以配置为根据重组帧中有效帧和/或无效帧的位置,在基于第二节点值矩阵执行后续运算时只使用有效帧。
在本发明的又一个实施例中,第三装置还可以配置为:根据每个待处理任务的起始位置以及帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及根据第二节点值矩阵中有效帧和/或无效帧的位置,确定基于第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置。
在本发明的再一个实施例中,第三装置还可以配置为:确定重组帧中有效帧的位置偏移量;以及第四装置还可以配置为:根据位置偏移量,读取重组帧中的有效帧以进行后续运算操作。
在本发明的一个实施例中,第三装置还可以配置为:根据每个待处理任务的起始位置以及帧重组规则,确定第二节点值矩阵中有效帧的位置偏移量;以及根据第二节点值矩阵中有效帧的位置偏移量,确定重组帧中有效帧的位置偏移量。
在本发明的另一个实施例中,第三装置还可以配置为:根据第二节点值矩阵中的相邻位置的有效帧的位置偏移量是否相同,确定重组帧中有效帧的位置偏移量。
在本发明的又一个实施例中,第二节点值矩阵可以为SVD节点的节点值矩阵。
在本发明的再一个实施例中,待处理任务可以包括语音识别。
在本发明的一个实施例中,帧重组规则可以包括以下任一:相邻的多个帧进行组合;和间隔的多个帧进行组合。
本发明的设备在上文中已经结合方法进行了详细的描述和解释,这里将不再赘述。
通过上面对根据本发明的用于优化神经网络模型推理的方法和设备的技术方案及其多个实施例的描述,可以理解的是,本发明的方法可以在利用神经网络模型进行推理时通过读取多个第一节点子矩阵并分别执行运算的方式来代替帧重组的操作,以减少显存读写次数并提高处理器的计算效率,从而有利于提高神经网络模型的推理速度。在一些实施例中,本发明的实施方式还可以基于第二节点值矩阵执行后续运算时只读取有效帧,以显著减少后续运算中的无效运算,并且根据每层网络结构中不同节点的节点值数量特点执行区分处理,可以从减少重组耗时和无效计算两个方面来进一步提高推理速度。在另一些实施例中,本发明的实施方式还可以通过确定有效帧的位置偏移量来实现读取有效帧的操作,以解决例如基于GPU进行帧重组操作过程中难以确定有效帧地址的问题。
应当注意,尽管在上文详细描述中提及了设备的若干模块或装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (10)
1.一种用于优化神经网络模型推理的方法,包括:
在利用所述神经网络模型进行推理时,根据所述神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;以及
利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。
2.根据权利要求1所述的方法,其中,读取第一节点值矩阵中的帧以形成与所述第一节点值矩阵相关的多个第一节点子矩阵包括:
根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
3.根据权利要求1或2所述的方法,其中,确定第二节点值矩阵包括:
根据所述第一节点子矩阵的个数N,将权重矩阵拆分为N个权重子矩阵;以及
根据每个第一节点子矩阵与相应的所述权重子矩阵的运算结果,确定所述第二节点值矩阵。
4.根据权利要求1所述的方法,还包括:
根据同一批次中多个待处理任务的组合关系,以及根据所述帧重组规则,确定基于所述第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,所述重组帧中有效帧仅包括来自同一待处理任务的帧的组合,所述重组帧中无效帧包括来自不同所述待处理任务的帧的组合;以及
根据所述重组帧中有效帧和/或无效帧的位置,在基于所述第二节点值矩阵执行后续运算时只使用所述有效帧。
5.根据权利要求4所述的方法,其中,确定所述重组帧中有效帧和/或无效帧的位置包括:
根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及
根据所述第二节点值矩阵中有效帧和/或无效帧的位置,确定基于所述第二节点值矩阵重组的所述重组帧中有效帧和/或无效帧的位置。
6.根据权利要求4或5所述的方法,进一步包括:
确定所述重组帧中有效帧的位置偏移量;以及
根据所述位置偏移量,读取所述重组帧中的有效帧以进行后续运算操作。
7.一种用于优化神经网络模型推理的设备,包括:
第一装置,其配置为在利用所述神经网络模型进行推理时,根据所述神经网络模型的帧重组规则,读取第一节点值矩阵中的帧,以形成与所述第一节点值矩阵相关的多个第一节点子矩阵;以及
第二装置,其配置为利用所述多个第一节点子矩阵分别与相应的权重执行运算,以确定第二节点值矩阵。
8.根据权利要求7所述的设备,其中所述第一装置还配置为:
根据所述帧重组规则中每个重组帧内的关联帧的个数N和位置,读取第一节点值矩阵中的帧以形成N个所述第一节点子矩阵,并且使得各个第一节点子矩阵相应位置上的帧的组合对应于相应的重组帧。
9.根据权利要求7所述的设备,还包括:
第三装置,其配置为根据同一批次中多个待处理任务的组合关系,以及根据所述帧重组规则,确定基于所述第二节点值矩阵重组的重组帧中有效帧和/或无效帧的位置,其中,所述重组帧中有效帧仅包括来自同一待处理任务的帧的组合,所述重组帧中无效帧包括来自不同所述待处理任务的帧的组合;以及
第四装置,其配置为根据所述重组帧中有效帧和/或无效帧的位置,在基于所述第二节点值矩阵执行后续运算时只使用所述有效帧。
10.根据权利要求9所述的设备,其中所述第三装置还配置为:
根据每个待处理任务的起始位置以及所述帧重组规则,确定第二节点值矩阵中有效帧和/或无效帧的位置;以及
根据所述第二节点值矩阵中有效帧和/或无效帧的位置,确定基于所述第二节点值矩阵重组的所述重组帧中有效帧和/或无效帧的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110128127.1A CN112862100B (zh) | 2021-01-29 | 2021-01-29 | 用于优化神经网络模型推理的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110128127.1A CN112862100B (zh) | 2021-01-29 | 2021-01-29 | 用于优化神经网络模型推理的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112862100A true CN112862100A (zh) | 2021-05-28 |
CN112862100B CN112862100B (zh) | 2022-02-08 |
Family
ID=75986885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110128127.1A Active CN112862100B (zh) | 2021-01-29 | 2021-01-29 | 用于优化神经网络模型推理的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862100B (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026358A (en) * | 1994-12-22 | 2000-02-15 | Justsystem Corporation | Neural network, a method of learning of a neural network and phoneme recognition apparatus utilizing a neural network |
US20120166194A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Method and apparatus for recognizing speech |
CN105095961A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 一种人工神经网络和脉冲神经网络的混合系统 |
US9299042B2 (en) * | 2013-08-09 | 2016-03-29 | Raytheon Company | Predicting edges in temporal network graphs described by near-bipartite data sets |
CN107145977A (zh) * | 2017-04-28 | 2017-09-08 | 电子科技大学 | 一种对在线社交网络用户进行结构化属性推断的方法 |
CN107451654A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 卷积神经网络的加速运算方法、服务器及存储介质 |
CN108492820A (zh) * | 2018-03-20 | 2018-09-04 | 华南理工大学 | 基于循环神经网络语言模型和深度神经网络声学模型的中文语音识别方法 |
CN109065033A (zh) * | 2018-09-19 | 2018-12-21 | 华南理工大学 | 一种基于随机深度时延神经网络模型的自动语音识别方法 |
CN109635934A (zh) * | 2018-12-27 | 2019-04-16 | 深圳云天励飞技术有限公司 | 一种神经网络推理结构优化方法及装置 |
CN109784481A (zh) * | 2017-11-13 | 2019-05-21 | 杭州海康威视数字技术股份有限公司 | 一种基于神经网络的调整方法、装置及设备 |
US10460722B1 (en) * | 2017-06-30 | 2019-10-29 | Amazon Technologies, Inc. | Acoustic trigger detection |
US10460729B1 (en) * | 2017-06-30 | 2019-10-29 | Amazon Technologies, Inc. | Binary target acoustic trigger detecton |
CN110517663A (zh) * | 2019-08-01 | 2019-11-29 | 北京语言大学 | 一种语种识别方法及识别系统 |
CN110689114A (zh) * | 2019-09-24 | 2020-01-14 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
US20200125933A1 (en) * | 2018-10-19 | 2020-04-23 | Fujitsu Limited | Method, apparatus and computer program to carry out a training procedure in a convolutional neural network |
CN111149115A (zh) * | 2017-12-19 | 2020-05-12 | 英特尔公司 | 用于利用脉冲神经网络的相位差来改变突触权重的设备、系统和方法 |
CN112101534A (zh) * | 2019-06-17 | 2020-12-18 | 英特尔公司 | 用于深度神经网络的可重新配置存储器压缩技术 |
-
2021
- 2021-01-29 CN CN202110128127.1A patent/CN112862100B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026358A (en) * | 1994-12-22 | 2000-02-15 | Justsystem Corporation | Neural network, a method of learning of a neural network and phoneme recognition apparatus utilizing a neural network |
US20120166194A1 (en) * | 2010-12-23 | 2012-06-28 | Electronics And Telecommunications Research Institute | Method and apparatus for recognizing speech |
US9299042B2 (en) * | 2013-08-09 | 2016-03-29 | Raytheon Company | Predicting edges in temporal network graphs described by near-bipartite data sets |
CN105095961A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 一种人工神经网络和脉冲神经网络的混合系统 |
CN107145977A (zh) * | 2017-04-28 | 2017-09-08 | 电子科技大学 | 一种对在线社交网络用户进行结构化属性推断的方法 |
US10460729B1 (en) * | 2017-06-30 | 2019-10-29 | Amazon Technologies, Inc. | Binary target acoustic trigger detecton |
US10460722B1 (en) * | 2017-06-30 | 2019-10-29 | Amazon Technologies, Inc. | Acoustic trigger detection |
CN107451654A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 卷积神经网络的加速运算方法、服务器及存储介质 |
CN109784481A (zh) * | 2017-11-13 | 2019-05-21 | 杭州海康威视数字技术股份有限公司 | 一种基于神经网络的调整方法、装置及设备 |
CN111149115A (zh) * | 2017-12-19 | 2020-05-12 | 英特尔公司 | 用于利用脉冲神经网络的相位差来改变突触权重的设备、系统和方法 |
CN108492820A (zh) * | 2018-03-20 | 2018-09-04 | 华南理工大学 | 基于循环神经网络语言模型和深度神经网络声学模型的中文语音识别方法 |
CN109065033A (zh) * | 2018-09-19 | 2018-12-21 | 华南理工大学 | 一种基于随机深度时延神经网络模型的自动语音识别方法 |
US20200125933A1 (en) * | 2018-10-19 | 2020-04-23 | Fujitsu Limited | Method, apparatus and computer program to carry out a training procedure in a convolutional neural network |
CN109635934A (zh) * | 2018-12-27 | 2019-04-16 | 深圳云天励飞技术有限公司 | 一种神经网络推理结构优化方法及装置 |
CN112101534A (zh) * | 2019-06-17 | 2020-12-18 | 英特尔公司 | 用于深度神经网络的可重新配置存储器压缩技术 |
CN110517663A (zh) * | 2019-08-01 | 2019-11-29 | 北京语言大学 | 一种语种识别方法及识别系统 |
CN110689114A (zh) * | 2019-09-24 | 2020-01-14 | Oppo广东移动通信有限公司 | 网络节点处理方法、装置、存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
JI MING ET AL.: "A space-perturbance/time-delay neural network for speechrecognition", 《PROCEEDINGS OF THE 1991 IEEE WORKSHOP》 * |
PEDDINTI, V ET AL.: "A time delay neural network architecture for efficient modeling of long temporal contexts", 《 PROC. INTERSPEECH 2015》 * |
毛振苏: "基于时延神经网络的语音分离的研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112862100B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489703B2 (en) | Memory efficiency for convolutional neural networks operating on graphics processing units | |
EP3979143A1 (en) | Method of performing splitting in neural network model by means of multi-core processor, and related product | |
US10181320B2 (en) | Computer-implemented method and apparatus for generating grapheme-to-phoneme model | |
US20220245928A1 (en) | Systems and methods for progressive learning for machine-learned models to optimize training speed | |
US20190138922A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data | |
CN111695671A (zh) | 训练神经网络的方法及装置、电子设备 | |
CN114503125A (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
US20230113318A1 (en) | Data augmentation method, method of training supervised learning system and computer devices | |
CN113590761A (zh) | 文本处理模型的训练方法、文本处理方法及相关设备 | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
US20210089904A1 (en) | Learning method of neural network model for language generation and apparatus for performing the learning method | |
Huai et al. | Zerobn: Learning compact neural networks for latency-critical edge systems | |
CN114492781A (zh) | 一种硬件加速器及数据处理方法、系统、设备、介质 | |
CN111667069A (zh) | 预训练模型压缩方法、装置和电子设备 | |
CN111401514A (zh) | 基于改进图卷积网络的半监督符号网络嵌入方法及系统 | |
CN110308909B (zh) | 针对神经网络处理器的可执行程序生成装置和方法 | |
Huai et al. | Latency-constrained DNN architecture learning for edge systems using zerorized batch normalization | |
CN112862100B (zh) | 用于优化神经网络模型推理的方法及设备 | |
SairaBanu et al. | Parallel implementation of Singular Value Decomposition (SVD) in image compression using open Mp and sparse matrix representation | |
CN117057414B (zh) | 一种面向文本生成的多步协作式提示学习的黑盒知识蒸馏方法及系统 | |
CN112132281B (zh) | 一种基于人工智能的模型训练方法、装置、服务器及介质 | |
CN112862101B (zh) | 用于优化神经网络模型推理的方法及设备 | |
JP2023157833A (ja) | 機械学習推論用のグラフィックス処理の最適化のためのシステムおよび方法 | |
CN115879480A (zh) | 语义约束机器翻译方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |