深度神经网络计算加速的方法和装置与流程

文档序号:16001164发布日期:2018-11-20 19:28阅读:236来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种深度神经网络计算加速的方法、装置、终端和计算机可读存储介质。



背景技术:

现有技术中提速深度神经网络的方法包括矩阵运算、pruning(剪支)算法和二值网络。其中,矩阵运算中的矩阵向量乘法是内存受限的,因此在计算过程中限制了深度神经网络的预测速度。而二值网络精度损失较大。pruning剪支算法需要较高的矩阵稀疏程度,重训过程繁杂。因此现有的计算方法均不能够很好的实现神经网络的计算加速。

在背景技术中公开的上述信息仅用于加强对本发明的背景的理解,因此其可能包含没有形成为本领域普通技术人员所知晓的现有技术的信息。



技术实现要素:

本发明实施例提供一种深度神经网络计算加速的方法、装置、终端和计算机可读存储介质,以解决现有技术中的一个或多个技术问题。

第一方面,本发明实施例提供了一种深度神经网络计算加速的方法,包括:

对需要输入到矩阵模型中的各输入向量进行采样,获得多个采样向量;

根据预设的量化参数对各所述采样向量进行乘积量化,获得多个量化点;

根据所述量化参数将所述矩阵模型切分为多个矩阵块;

各所述量化点与各所述矩阵块计算得到多个预计算表;

通过各所述预计算表对各所述输入向量进行计算,得到所述矩阵模型的计算结果。

结合第一方面,本发明实施例在第一方面的第一种实现方式中,根据预设的量化参数对各所述采样向量进行乘积量化,获得多个量化点,包括:

根据量化维数对各所述采样向量进行切分;

根据量化类数对切分后的各所述采样向量进行聚类,得到多个所述量化点。

结合第一方面,本发明实施例在第一方面的第二种实现方式中,根据所述量化参数将所述矩阵模型切分为多个矩阵块,包括:

根据量化维数将所述矩阵模型切分为多个矩阵块。

结合第一方面,本发明实施例在第一方面的第三种实现方式中,各所述量化点与各所述矩阵块计算得到多个预计算表,包括:

将每一个所述量化点分别与所有的所述矩阵块相乘,得到与所述量化点对应的所述预计算表。

结合第一方面,本发明实施例在第一方面的第四种实现方式中,通过各所述预计算表对各所述输入向量进行计算,得到所述矩阵模型的计算结果,包括:

根据量化维度将各所述输入向量切分为多个输入向量块;

获取各所述输入向量块在所述输入向量中的位置以及对应的所述量化点;

根据各所述输入向量块的位置和对应的所述量化点,在所述预计算表中查找出各所述输入向量块对应的预计算向量;

将各所述预计算向量相加,得到所述矩阵模型与各所述输入向量的计算结果。

结合第一方面的第四种实现方式,本发明实施例在第一方面的第五种实现方式中,获取各所述输入向量块在所述输入向量中的位置以及对应的所述量化点,包括:

将所述输入向量块分别与所有的所述量化点按照预设度量规则进行计算;

根据与各所述量化点的计算结果,选择符合所述预设度量规则的计算结果对应的所述量化点,作为所述输入向量块对应的所述量化点。

第二方面,本发明实施例提供了一种深度神经网络计算加速的装置,包括:

采样模块,用于对需要输入到矩阵模型中的各输入向量进行采样,获得多个采样向量;

乘积量化模块,用于根据预设的量化参数对各所述采样向量进行乘积量化,获得多个量化点;

矩阵切分模块,用于根据所述量化参数将所述矩阵模型切分为多个矩阵块;

预计算表生成模块,用于根据各所述量化点与各所述矩阵块计算得到多个预计算表;

计算模块,用于通过各所述预计算表对各所述输入向量进行计算,得到所述矩阵模型的计算结果。

在一个可能的设计中,所述乘积量化模块包括:

第一切分子模块,用于根据量化维数对各所述采样向量进行切分;

聚类子模块,用于根据量化类数对切分后的各所述采样向量进行聚类,得到多个所述量化点。

在一个可能的设计中,所述矩阵切分模块包括:

第二切分子模块,用于根据量化维数将所述矩阵模型切分为多个矩阵块。

在一个可能的设计中,所述计算模块包括:

第二切分子模块,用于根据量化维度将各所述输入向量切分为多个输入向量块;

获取子模块,用于获取各所述输入向量块在所述输入向量中的位置以及对应的所述量化点;

查表子模块,用于根据各所述输入向量块的位置和对应的所述量化点,在所述预计算表中查找出各所述输入向量块对应的预计算向量;

计算子模块,用于将各所述预计算向量相加,得到所述矩阵模型与各所述输入向量的计算结果。

在一个可能的设计中,所述获取子模块包括:

量化点选择子模块,用于将所述输入向量块分别与所有的所述量化点按照预设度量规则进行计算;根据与各所述量化点的计算结果,选择符合所述预设度量规则的计算结果对应的所述量化点,作为所述输入向量块对应的所述量化点。

第三方面,本发明实施例提供了一种深度神经网络计算加速的终端,包括:

所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,深度神经网络计算加速的终端的结构中包括处理器和存储器,所述存储器用于存储支持深度神经网络计算加速的终端执行上述第一方面中深度神经网络计算加速的方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。深度神经网络计算加速的终端还可以包括通信接口,用于深度神经网络计算加速的终端与其他设备或通信网络通信。

第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储深度神经网络计算加速的终端所用的计算机软件指令,其包括用于执行上述第一方面中深度神经网络计算加速的方法为深度神经网络计算加速的终端所涉及的程序。

上述技术方案中的一个技术方案具有如下优点或有益效果:同一个矩阵模型的预计算表只需要建立一次,所有需要通过该矩阵模型进行计算的输入向量均可使用该预计算表进行查表计算,有效节省了输入向量与矩阵模型的计算过程,同时还能够保持矩阵模型原有的计算效果。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1为本发明实施方式提供的深度神经网络计算加速的方法的流程图。

图2为本发明实施方式提供的采样向量乘积量化的示意图。

图3为本发明另一实施方式提供的采样向量乘积量化的示意图。

图4为本发明实施方式提供的预计算表生成的流程示意图。

图5为本发明实施方式提供的深度神经网络计算加速的具体流程图。

图6为本发明实施方式提供的深度神经网络计算加速的装置结构示意图。

图7为本发明实施方式提供的深度神经网络计算加速的终端结构示意图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

本发明实施例提供了一种深度神经网络计算加速的方法,如图1所示,包括以下步骤:

S100:对需要输入到矩阵模型中的各输入向量进行采样,获得多个采样向量。

S200:根据预设的量化参数对各采样向量进行乘积(product)量化,获得多个量化点。

S300:根据量化参数将矩阵模型切分为多个矩阵块。

S400:各量化点与各矩阵块计算得到多个预计算表。

S500:通过各预计算表对各输入向量进行计算,得到矩阵模型的计算结果。

在一个实施例中,根据预设的量化参数对各采样向量进行乘积量化,获得多个量化点,包括:

根据量化维数对各采样向量进行切分。以及

根据量化类数对切分后的各采样向量进行聚类,得到多个量化点。

在一个具体实施方式中,如图2所示,将各采样向量并排排列,每一行为一个采样向量,按照预设的量化维数对采样向量进行切分。然后按照预设的量化类数按列进行聚类,得到与量化类数相同数量的量化点。例如,每一个采样向量包括256个数,设定量化维数为2,将每一个采样向量切分为128个空间,设定量化类数为1600类,因此对每个空间按列进行聚类,得到1600个量化点。

在一个可变化的实施方式中,如图3所示,将各采样向量并排排列,每一列为一个采样向量,按照预设的量化维数对采样向量进行切分。然后按照预设的量化类数按行进行聚类,得到与量化类数相同数量的量化点。例如,每一个采样向量包括256个数,设定量化维数为2,将每一个采样向量切分为128个空间,设定量化类数为1600类,因此对每个空间按行进行聚类,得到1600个量化点。

在一个实施例中,根据量化参数将矩阵模型切分为多个矩阵块,包括:根据量化维数将矩阵模型切分为多个矩阵块。其中,当采样向量按行进行聚类时,矩阵模型按列切分。当采样向量按列进行聚类时,矩阵模型按行切分。

在一个实施例中,如图4所示,各量化点与各矩阵块计算得到多个预计算表,包括:

将每一个量化点分别与所有的矩阵块相乘,形成与该量化点对应的预计算表。例如,若矩阵模型为256×256的矩阵,量化维数为2,按列进行切分,每两列为一组,则矩阵模型被切分为128个矩阵块。一个量化点分别与各矩阵块相乘,形成一个256×128的预计算表。

需要说明的是,同一个矩阵模型的预计算表只需要建立一次,由于同一个矩阵模型处理的输入向量分布是有规律性的,所以通过采样方式获取采样向量进行乘积量化所建立的预计算表是具备适用性的,可以满足同一个矩阵模型所有输入向量的计算要求。

在一个实施例中,通过各预计算表对各输入向量进行计算,得到矩阵模型的计算结果,包括:

根据量化维度将各输入向量切分为多个输入向量块。

获取各输入向量块在输入向量中的位置以及对应的量化点。

根据各输入向量块的位置和对应的量化点,在预计算表中查找出各输入向量块对应的预计算向量。

将各预计算向量相加,得到矩阵模型与各输入向量的计算结果。

由于量化点的数量远小于输入向量的个数,通过对有限数量的量化点到预计算表中进行查表得到的计算结果,远比所有输入向量分别与未切分的矩阵模型进行乘法运算快很多,有效提高了输入向量与矩阵模型的乘法计算速度,进而提高了深度神经网络的整体数据处理计算速度。

在一个实施例中,获取各输入向量块在输入向量中的位置以及对应的量化点,包括:

将输入向量块分别与所有的量化点按照预设度量规则进行计算。

根据与各量化点的计算结果,选择符合预设度量规则的计算结果对应的量化点,作为输入向量块对应的量化点。

需要说明的是,预设度量规则可根据需要进行选择和设定。例如,度量规则可为量化点的平方与输入向量块的平方差最小距离,或是量化点与输入向量块之间差值的绝对值最小。

在一个具体实施方式中,如图5所示,该深度神经网络计算加速的方法包括以下步骤:

对需要输入到256×256矩阵模型中的各输入向量进行采样,获得多个256×1的采样向量。

设定量化参数的量化维数为2,量化类数为1600。各采样向量并排排列,每一列为一个采样向量。对每一个采样向量按2维进行切分,切分为128个空间,然后按行对每个空间进行聚类,得到1600各量化点。

根据量化维数,按列将矩阵模型切分为多个矩阵块。由于矩阵模型为256×256的矩阵,量化维数为2,按列进行切分,每两列为一组,则矩阵模型被切分为128各矩阵块。

1600个量化点分别与各矩阵块相乘,形成1600个256×128的预计算表。

根据量化维数对每一个256×1的输入向量进行切分,由于量化维数为2,因此每一个输入向量被切分为128个输入向量块。

获取每一个输入向量块在输入向量中的位置,以及根据预设度量规则计算出与每一个输入向量块对应的量化点。

根据各输入向量块的位置和对应的量化点,在预计算表中查找出各输入向量块对应的预计算向量。

最后将所有的预计算向量相加,得到了该矩阵模型与输入向量组(即所有输入向量)乘积运算的最终计算结果。

在一个实施例中,根据度量规则的不同,可以存在多个输入向量块对应相同量化点的情况。

在上述各实施例中,矩阵模型、输入向量、采样向量、量化维数和量化类数的具体数值仅用于举例说明,不应当理解为仅能采用上述具体数值实现本发明实施例的技术方案。具体的数值可根据矩阵模型的不同进行调整。矩阵模型可以是包括但不限于深度神经网络中卷积层、池化层或全连接层中的矩阵。

本发明实施例提供了一种深度神经网络计算加速的装置,如图6所示,包括:

采样模块10,用于对需要输入到矩阵模型中的各输入向量进行采样,获得多个采样向量。

乘积量化模块20,用于根据预设的量化参数对各采样向量进行乘积量化,获得多个量化点。

矩阵切分模块30,用于根据量化参数将矩阵模型切分为多个矩阵块。

预计算表生成模块40,用于根据各量化点与各矩阵块计算得到多个预计算表。

计算模块50,用于通过各预计算表对各输入向量进行计算,得到矩阵模型的计算结果。

在一个实施例中,乘积量化模块20包括:

第一切分子模块,用于根据量化维数对各采样向量进行切分。

聚类子模块,用于根据量化类数对切分后的各采样向量进行聚类,得到多个量化点。

在一个实施例中,矩阵切分模块30包括:

第二切分子模块,用于根据量化维数将矩阵模型切分为多个矩阵块。

在一个实施例中,计算模块50包括:

第二切分子模块,用于根据量化维度将各输入向量切分为多个输入向量块。

获取子模块,用于获取各输入向量块在输入向量中的位置以及对应的量化点。

查表子模块,用于根据各输入向量块的位置和对应的量化点,在预计算表中查找出各输入向量块对应的预计算向量。

计算子模块,用于将各预计算向量相加,得到矩阵模型与各输入向量的计算结果。

在一个实施例中,获取子模块包括:

量化点选择子模块,用于将输入向量块分别与所有的量化点按照预设度量规则进行计算。根据与各量化点的计算结果,选择符合预设度量规则的计算结果对应的量化点,作为输入向量块对应的量化点。

本发明实施例提供了一种深度神经网络计算加速的终端,如图7所示,包括:

存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。处理器920执行计算机程序时实现上述实施例中的深度神经网络计算加速的方法。存储器910和处理器920的数量可以为一个或多个。

通信接口930,用于存储器910和处理器920与外部进行通信。

存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

如果存储器910、处理器920、以及通信接口930独立实现,则存储器910、处理器920以及通信接口930可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,Peripheral Component)总线或扩展工业标准体系结构(EISA,Extended Industry Standard Component)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器910、处理器920以及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。

本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现如实施例一包括的任一所述的深度神经网络计算加速的方法。

本发明实施例通过对采样向量进行乘积量化得到量化点,通过量化点与矩阵模型生成预计算表,并通过预计算表对输入向量进行计算的方式,显著提高了输入向量与矩阵模型乘积计算的过程,且能够保持矩阵模型原有的计算效果。

本发明实施例中,同一个矩阵模型的预计算表只需要建立一次,所有需要通过该矩阵模型进行计算的输入向量均可使用该预计算表进行查表计算,有效节省了输入向量与矩阵模型的计算过程。需要说明的是,同一个矩阵模型处理的输入向量分布是有规律性的,所以通过采样方式获取采样向量进行乘积量化所建立的预计算表是具备适用性的,可以满足同一个矩阵模型所有输入向量的计算要求。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行装置、装置或设备(如基于计算机的装置、包括处理器的装置或其他可以从指令执行装置、装置或设备取指令并执行指令的装置)使用,或结合这些指令执行装置、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行装置、装置或设备或结合这些指令执行装置、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行装置执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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