掌桥专利:专业的专利平台
掌桥专利
首页

处理单元、处理器核、神经网络训练机及方法

文献发布时间:2023-06-19 11:32:36


处理单元、处理器核、神经网络训练机及方法

技术领域

本发明涉及神经网络领域,更具体而言,涉及一种处理单元、处理器核、神经网络训练机及方法。

背景技术

在训练神经网络(NN)的过程中,需要反复求解更新神经网络节点的权重,求解权重时需要先确定权重梯度,并基于权重梯度和其它操作数应用梯度下降法求解权重。权重梯度的计算占了整个神经网络的很大一部分计算和存储资源。如果逐个神经网络节点地求解权重梯度,占用大量资源。因此,可以在训练的早期阶段进行修剪,将一些对计算结果影响不大的神经网络节点在计算权重梯度时不考虑。通过训练早期的修剪,就能够使大多数权重在神经网络训练的早期被排除考虑,也就是说,大多数神经网络节点的权重梯度的计算可以省去,而不会太影响精确性,从而节省了神经网络训练的功耗,加速了神经网络训练。

现有的早期修剪算法一般由软件实现。在软件实现时,修剪掉的权重梯度仍然被计算,实际上不节省计算开销和存储器访问开销。因此,需要能够真正节省处理器计算开销和存储器访问开销的技术。

发明内容

有鉴于此,本发明实施例旨在减少确定神经网络的权重梯度时处理器的计算开销和存储器的访问开销。

为了达到这个目的,第一方面,本发明提供一种处理单元,包括:

计算单元,用于执行神经网络节点的权重梯度计算;

解压缩单元,将获取的压缩权重信号解压缩成权重信号和修剪信号,其中,所述权重信号指示各神经网络节点的权重,所述修剪信号指示各神经网络节点的权重是否在权重梯度计算中使用,所述修剪信号被用于控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,所述修剪信号还被用于控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算。

可选地,所述权重信号包括多个权重位,每个权重位表示一个神经网络节点的权重;所述修剪信号包括与所述权重信号位数相同的多个指示位,其中,当指示位取第一值时,表示相应神经网络节点的权重在权重梯度计算中使用;当指示位取第二值时,表示相应神经网络节点的权重在权重梯度计算中不使用。

可选地,所述处理单元还包括:计算启用单元,耦接至所述解压缩单元,用于接收解压缩单元输出的修剪信号,并基于所述修剪信号,控制是否允许计算单元利用所述权重信号和所述操作数执行权重梯度计算。

可选地,所述计算单元为多个计算单元,每个计算单元对应于一个神经网络节点,所述多个计算单元分别通过各自的时钟开关连接至时钟端,所述计算启用单元基于所述修剪信号,控制所述多个计算单元的时钟开关的接通和断开。

可选地,所述计算单元为多个计算单元,每个计算单元对应于一个神经网络节点,所述多个计算单元分别通过各自的电源开关连接至电源端,所述计算启用单元基于所述修剪信号,控制所述多个计算单元的电源开关的接通和断开。

可选地,所述解压缩单元耦接至所述处理单元外部的第一存储控制单元,所述第一存储控制单元基于所述修剪信号,控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器。

可选地,所述操作数存储器为多个操作数存储器,每个操作数存储器对应于一个神经网络节点,每个操作数存储器具有读有效端口,所述第一存储控制单元耦接到各操作数存储器的读有效端口,基于所述修剪信号,控制是否置位各操作数存储器的读有效端口。

可选地,所述解压缩单元耦接至所述计算单元,用于将解压缩成的权重信号输出给所述计算单元,用于权重梯度计算。

可选地,所述解压缩单元耦接至多个权重存储器,用于将解压缩成的权重信号输出给所述所述多个权重存储器,每个权重存储器对应于一个神经网络节点,每个权重存储器具有读有效端口;所述解压缩单元还耦接至所述处理单元外部的第二存储控制单元,所述第二存储控制单元耦接到各权重存储器的读有效端口,基于所述修剪信号,控制是否置位各权重存储器的读有效端口。

可选地,所述解压缩单元耦接至多个权重存储器,用于将解压缩成的权重信号输出给所述所述多个权重存储器,每个权重存储器对应于一个神经网络节点,每个权重存储器具有读有效端口;所述解压缩单元还耦接至所述第一存储控制单元,所述第一存储控制单元还耦接到各权重存储器的读有效端口,并基于所述修剪信号,控制是否置位各权重存储器的读有效端口。

可选地,还包括:权重信号生成单元,用于基于各神经网络节点的权重,生成权重信号;修剪信号生成单元,用于基于各神经网络节点的权重是否在权重梯度计算中使用的指示,生成修剪信号;压缩单元,用于将生成的权重信号和修剪信号压缩成压缩权重信号。

第二方面,本发明提供了一种处理器核,所述处理器核包括如上所述的处理单元。

第三方面,本发明提供了一种神经网络训练机,包括:如上所述的处理单元;存储器,与所述存储单元耦接,所述存储器至少包括操作数存储器。

第四方面,本发明提供了一种权重梯度计算处理方法,包括:

获取压缩权重信号,其中,所述压缩权重信号由权重信号和修剪信号压缩而成,所述修剪信号指示各神经网络节点的权重是否在权重梯度计算中使用;

将所述压缩权重信号解压缩成权重信号和修剪信号,所述修剪信号被用于控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,所述修剪信号还被用于控制是否允许计算单元利用所述权重信号和所述操作数执行权重梯度计算。

可选地,所述权重信号包括多个权重位,每个权重位表示一个神经网络节点的权重;所述修剪信号包括与所述权重信号位数相同的多个指示位,其中,当指示位取第一值时,表示相应神经网络节点的权重在权重梯度计算中使用;当指示位取第二值时,表示相应神经网络节点的权重在权重梯度计算中不使用。

可选地,所述计算单元为多个计算单元,每个计算单元对应于一个神经网络节点,所述多个计算单元分别通过各自的时钟开关连接至时钟端,所述控制是否允许计算单元利用所述权重信号和所述操作数执行权重梯度计算,通过基于所述修剪信号,控制所述多个计算单元的时钟开关的接通和断开来实现。

可选地,所述计算单元为多个计算单元,每个计算单元对应于一个神经网络节点,所述多个计算单元分别通过各自的电源开关连接至电源端,所述控制是否允许计算单元利用所述权重信号和所述操作数执行权重梯度计算,通过基于所述修剪信号,控制所述多个计算单元的电源开关的接通和断开来实现。

可选地,所述操作数存储器为多个操作数存储器,每个操作数存储器对应于一个神经网络节点,每个操作数存储器具有读有效端口,所述第一存储控制单元耦接到各操作数存储器的读有效端口,所述控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,基于所述修剪信号,控制是否置位各操作数存储器的读有效端口来实现。

可选地,在将所述压缩权重信号解压缩成权重信号和修剪信号之后,所述方法还包括:基于所述修剪信号,利用解压缩得到的所述权重信号、和访问所述操作数存储器得到的操作数执行权重梯度计算。

可选地,所述修剪信号还被用于控制是否允许访问存储各神经网络节点的权重的权重存储器。在将所述压缩权重信号解压缩成权重信号和修剪信号之后,所述方法还包括:基于所述修剪信号,利用访问所述权重存储器得到的权重、和访问所述操作数存储器得到的操作数执行权重梯度计算。

可选地,在获取压缩权重信号之前,所述方法还包括:

基于各神经网络节点的权重,生成所述权重信号;

基于各神经网络节点的权重是否在权重梯度计算中使用的指示,生成所述修剪信号;

将生成的权重信号和修剪信号压缩成所述压缩权重信号。

本公开实施例中,权重信号和指示各神经网络节点的权重是否在权重梯度计算中使用(即该神经网络节点是否被修剪掉)的修剪信号以压缩的形式存储。当需要计算权重梯度时,从压缩权重信号中解压缩出修剪信号,该修剪信号一方面控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,另一方面控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算。在控制是否允许访问操作数存储器时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就控制不允许访问这个神经网络节点对应的操作数存储器,反之则允许,这样,如果这个权重不能被使用,就没有相应的访问开销,达到降低存储器访问开销的目的。在控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就不允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算,从而减少了确定神经网络的权重梯度时处理器的计算开销。

附图说明

通过参考以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1示出本发明实施例所应用的神经网络训练和使用环境的体系构架图;

图2是本发明一个实施例中神经网络训练机的框图;

图3是本发明另一个实施例中神经网络训练机的框图;

图4是本发明一个实施例中神经网络训练机中的存储器内部的示意图框图;

图5是根据本发明一个实施例的神经网络训练机中处理单元的示意性框图;

图6是根据本发明另一个实施例的神经网络训练机中处理单元的示意性框图;

图7是根据本发明另一个实施例的神经网络训练机中处理单元的示意性框图;

图8是根据本发明另一个实施例的神经网络训练机中处理单元的示意性框图;

图9是根据本发明一个实施例由计算启用单元控制计算单元的控制方式示意图;

图10是根据本发明另一个实施例由计算启用单元控制计算单元的控制方式示意图;

图11是根据本发明一个实施例由第一存储控制单元控制操作数存储器的控制方式示意图;

图12是根据本发明另一个实施例由第一存储控制单元控制操作数存储器的控制方式示意图;

图13是根据本发明的一个实施例的权重信号和对应的修剪信号的示意图;

图14是根据本发明的一个实施例的处理方法的流程图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

在本文中使用以下术语。

神经网络:一般指人工神经网络(Artificial Neural Network,简写为ANN),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

神经网络节点:人工神经网络是由大量处理单元互联组成的非线性、自适应信息处理系统,每个处理单元称为神经网络节点。每个神经网络节点接收输入,处理它,并产生输出。这个输出发送到其它神经网络节点进行进一步处理,或者作为最终结果进行输出。

神经网络执行机:包含上述神经网络节点组成的神经网络,从而利用神经网络进行信息处理的系统。它可以是单个设备,在单个设备上运行所有神经网络节点,也可以是多个设备组成的集群,多个设备中每个设备各运行一部分神经网络节点,多个设备协同组成神经网络,进行信息处理。

神经网络训练机:训练上述神经网络的机器。在训练神经网络时,要用大量样本来训练神经网络,调节神经网络中各神经网络节点的权重等。当训练好神经网络后,才能用该神经网络进行信息处理。神经网络训练机就是用于进行上述训练的机器。它可以是单个设备,也可以是多个设备组成的集群,多个设备中每个设备各进行一部分训练,多个设备协同完成所有训练。

权重:当输入进入神经网络节点时,它会乘以一个权重。例如,如果一个神经元有两个输入,则每个输入将具有分配给它的一个关联权重。我们随机初始化权重,并在模型训练过程中更新这些权重。为零的权重标识特定的特征是微不足道的。假设输入为a,且与其关联的权重为W1,那么通过神经网络节点后,输出变为a·W1。

权重梯度:神经网络节点的权重的梯度。在训练神经网络时,需要反复求解更新神经网络节点的权重,求解权重时需要先确定权重梯度,并基于权重梯度和其它操作数应用梯度下降法求解权重。

修剪:在训练神经网络时,如果逐个神经网络节点地求解权重梯度,占用大量存储和处理资源。因此,可以在训练的早期阶段将一些对计算结果影响不大的神经网络节点在计算权重梯度时去除,这种去除就是修剪。

权重信号:神经网络中,每个神经网络节点具有一个权重值,这些权重值往往不是单独存储的,而是多个(例如8个)神经网络节点的权重值凑成一个信号统一存储,其中,权重信号的每一位代表一个神经网络节点的权重。

修剪信号:在训练神经网络时,对每个神经网络节点对计算结果的影响大小做出判断,并去除影响不大的神经网络节点,即修剪。为了表示每个神经网络节点是否需要修剪,可以用于权重信号对应的修剪信号来表示。修剪信号的每个位表示权重信号中相应位对应的神经网络节点是否被修剪。如果权重信号有8位,对应的修剪信号也是8位。

操作数:操作数是运算符作用于的实体,是表达式中的一个组成部分,它规定了指令中进行数字运算的量。

权重计算中使用的操作数:权重计算中首先要使用权重,但计算过程也涉及其它操作数,将这些涉及的其它操作数称为权重计算中使用的操作数。

耦接:直接连接或通过其它部件连接。

计算机系统:通用嵌入式系统、台式机、服务器、片上系统或其他具备信息处理能力的系统。

存储器:位于计算机系统内,用于存储信息的物理结构。按照用途的不同,存储器可以分为主存储器(也可称为内部存储器,或简称为内存/主存)和辅助存储器(也可称为外部存储器,或简称为辅存/外存)。主存用于存储由数据信号表示的指令信息和/或数据信息,例如用于存放处理器提供的数据,也可用于实现处理器与外存之间的信息交换。外存提供的信息需要被调入主存中才能被处理器访问,因此本文提到的存储器一般是指主存,本文提到的存储设备一般是指外存。

图1示出本发明实施例所应用的神经网络训练和使用环境的体系构架图。图1示出的体系构架包括客户端4、神经网络执行机6、神经网络训练机10,其中,神经网络执行机6、神经网络训练机10都是在数据中心一方。本发明后续实施方式的展开描述都是应用在数据中心的场景下。

数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而神经网络作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。在训练这些神经网络时,需要反复求解更新神经网络节点的权重,求解权重时需要先确定权重梯度。权重梯度的计算占了整个神经网络的很大一部分计算和存储资源。因此,这也成了目前数据中心节省资源消耗、提高处理速度的重要瓶颈。

如果逐个神经网络节点地求解权重梯度,占用大量资源。因此,可以在训练的早期阶段进行修剪,将一些对计算结果影响不大的神经网络节点在计算权重梯度时不考虑。目前的早期修剪算法一般由软件实现。在软件实现时,修剪掉的权重梯度仍然被计算,实际上不节省计算开销和存储器访问开销。因此,本发明就是在数据中心需要进一步减少资源消耗、提高处理效率的场景下应运而生的。

客户端4是有信息处理需要的一方,它向神经网络执行机6输入信息处理需要的数据,接收神经网络执行机6输出的信息处理结果。向神经网络执行机6输入数据的客户端4和接收信息处理结果的客户端4可以是同一客户端,也可以是不同的客户端。客户端4可以是一个独立的设备,也可以是一个设备中的一个虚拟的模块,如虚拟机。一个设备上可以运行多个虚拟机,从而具有多个客户端4。

神经网络执行机6是包含神经网络节点61组成的神经网络并利用神经网络进行信息处理的系统。它可以是单个设备,在单个设备上运行所有神经网络节点61,也可以是多个设备组成的集群,多个设备中每个设备各运行一部分神经网络节点61。

神经网络训练机10是训练上述神经网络的机器。神经网络执行机6能够利用神经网络进行信息处理,但神经网络初始化时需要训练,神经网络训练机10就是利用大量样本来训练神经网络,调节神经网络中各神经网络节点的权重等的机器。它可以是单个设备,也可以是多个设备组成的集群,多个设备中每个设备各进行一部分训练。本发明实施例主要在神经网络训练机10上实现。

在神经网络的训练过程中,需要反复求解更新神经网络节点的权重,而求解权重时需要先确定权重梯度。权重梯度的计算带来的计算和存储开销占了整个神经网络训练的计算和存储开销的一大部分。在神经网络训练的早期进行修剪,修剪掉对计算结果影响不大的神经网络节点,使得在计算权重梯度时不考虑这些节点。这样,在权重梯度计算时,就可以只考虑未被修剪掉的神经网络节点,从而节省了神经网络训练的功耗。

现有的早期修剪算法一般由软件实现。在软件实现时,修剪掉的权重梯度仍然被计算,因此并不节省计算开销和存储器访问开销。本公开实施例通过硬件来实现。权重信号和指示各神经网络节点的权重是否在权重梯度计算中使用的修剪信号以压缩的形式存储。当需要计算权重梯度时,解压缩单元从压缩权重信号中解压缩出修剪信号,该修剪信号一方面控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,另一方面控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算。在控制是否允许访问操作数存储器时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就控制不允许访问这个神经网络节点对应的操作数存储器,反之则允许,达到降低存储器访问开销的目的。在控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就不允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算,反之则允许,达到减少计算开销的目的。

图1示出本发明实施例中的神经网络训练机的示意性框图。该神经网络训练机10是“中心”系统架构的示例。如图1所示,神经网络训练机10包含存储器14和处理器12。为了避免模糊本发明的关键部分,在该示意性框图中省略了一些对本发明实施例的实现无关紧要的单元,例如显示器、输入输出设备等。

在一些实施例中,处理器12可以包括用于处理指令的一个或多个处理器核120,指令的处理和执行是可以被管理员(例如通过应用程序)和/或系统平台控制的。在一些实施例中,每个处理器核120可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(ReducedInstruction Set Computing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。不同的处理器核120可以各自处理不同或相同的指令集。在一些实施例中,处理器核120还可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。

在一些实施例中,处理器12具有高速缓冲存储器18。且根据不同架构,高速缓冲存储器18可以是位于各个处理器核101之内和/或之外的单个或多级的内部高速高速缓冲存储器(如图2示出的3级高速高速缓冲存储器L1至L3,图2中统一标识为18),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器12中的各个部件可以共享至少一部分的高速缓冲存储器,如图2所示,处理器核1至m例如共用第三级高速高速缓冲存储器L3。处理器12还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器12的外部高速缓存。

在一些实施例中,如图2所示,处理器12可以包括寄存器堆126(Register File),寄存器堆126可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆126可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆126中的寄存器可以选用通用寄存器来实现,也可以根据处理器12的实际需求采用特定的设计。

处理器12用于执行指令序列(即程序)。处理器12执行每个指令的过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令。

为了实现上述过程,处理器12可以包含取指令单元124、指令译码单元125、指令发射单元130、处理单元121和指令引退单元131等。

取指令单元124作为处理器12的启动引擎,用于将指令从存储器14中搬运到指令寄存器(可以是图2示出的寄存器堆26中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。

取出指令后,处理器12进入指令译码阶段,指令译码单元125按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元121的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。

指令发射单元130通常存在于高性能的处理器12中,位于指令译码单元125与处理单元121之间,用于指令的调度和控制,以将各个指令高效地分配至不同的处理单元121。指令经取指、译码并被调度到相应的处理单元121之后,相应的处理单元121开始执行该指令,即执行该指令所指示的操作、实现相应的功能。

指令引退单元131主要用于负责将处理单元121产生的执行结果写回到相应的存储位置(例如为处理器12内部的寄存器)中,以使后续指令能够从该存储位置处快速获取相应的执行结果。

对于不同类别的指令,可以在处理器12中相应地设置不同的处理单元121。处理单元121可以是运算单元(例如包含算术逻辑单元,矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。

处理单元121在执行某类指令(例如访存指令)时,需要访问存储器14,以获取存储器14中存储的信息或提供需要写入存储器14中的数据。

在神经网络训练过程中,会将神经网络训练算法编成指令执行。如上所述,在神经网络的训练过程中,经常需要计算神经网络节点的权重梯度。该神经网络训练算法编成的指令中会含有神经网络节点权重梯度计算指令。

首先,取指令单元124从神经网络训练算法编成的指令中顺次一条条取出指令,其中包含神经网络节点权重梯度计算指令。然后,指令译码单元125可以一条条对这些指令进行译码处理,发现该指令是权重梯度计算指令,该指令中具有指示权重梯度计算所需要的权重和操作数存放的存储地址(在存储器14或高速缓冲存储器18中)。本发明实施例中,权重携带在权重信号中,而权重信号和修剪信号压缩成了压缩权重信号,因此,权重存放的存储地址实际上是压缩权重信号存放在存储器14或高速缓冲存储器18中的存储地址。操作数存放的存储地址是指操作数在存储器14或高速缓冲存储器18中的存储地址。

译码后的带有压缩权重信号的存储地址和操作数的存储地址的权重梯度计算指令被提供至图2的处理单元121中,该处理单元121可以不一定要对每个神经网络节点都基于权重和操作数计算权重梯度,而是按照压缩权重信号的存储地址取出压缩权重信号,并将压缩权重信号解压缩成权重信号和修剪信号。修剪信号指示了哪些神经网络节点可以被修剪,即可以在权重梯度计算中不考虑。这样,处理单元121可以只针对没有被修剪的神经网络节点,控制允许为这些神经网络节点进行权重梯度计算,并控制允许按照操作数的存储地址访问相应操作数存储器142,减少了处理器的计算开销和存储器的访问开销。如图4所示,存储器14中包含各种类型的存储器,其中,操作数存储器142是存储权重梯度计算中所需的除权重之外的其它操作数的存储器。本领域技术人员应当理解,替代地,操作数也可以存储在高速缓冲存储器18中。

如上所述,处理单元121基于神经网络节点是否被修剪,来控制是否允许按照操作数的存储地址访问相应操作数存储器,该控制过程是通过第一存储控制单元122实现的。处理单元121解压缩得到的修剪信号会馈送给第一存储控制单元122。第一存储控制单元122根据该修剪信号指示的哪些神经网络节点被修剪,控制不允许访问这些被修剪的神经网络节点对应的操作数存储器142,允许访问没被修剪的神经网络节点对应的操作数存储器142。

图3示出了根据本发明另一个实施例的神经网络训练机10的示意性框图。与图2相比,图3的神经网络训练10在处理器12中增加了第二存储控制单元123,该第二存储控制单元123根据修剪信号指示的各神经网络节点是否被修剪,确定是否允许访问相应神经网络节点对应的权重存储器,获得相应权重。

该实施例中,权重放置在权重信号中,权重信号存储在图4的存储器14包含的权重存储器141中。本领域技术人员应当理解,替代地,权重信号也可以存储在高速缓冲存储器18中。

指令被取指令单元124获取后,指令译码单元125可以对该指令进行译码处理,发现该指令是权重梯度计算指令,该指令中具有压缩权重信号的存储地址、和操作数的存储地址。处理单元121可以按照压缩权重信号的存储地址取出压缩权重信号,并将压缩权重信号解压缩成权重信号和修剪信号。处理单元121可以只针对没有被修剪的神经网络节点,控制允许为这些神经网络节点进行权重梯度计算,通过第一存储控制单元122控制允许按照操作数的存储地址访问相应操作数存储器142,通过第二存储控制单元123控制允许按照事先已知的与各神经网络节点对应的权重存储地址,访问相应权重存储器141,从而减少了处理器的计算开销和存储器的访问开销。在这种情况下,如果神经网络节点被修剪,不但不允许访问相应操作数,连相应权重也不允许访问。

下面结合图5-8对处理单元121的具体结构展开描述。

图5所示的实施例中,处理单元121包括解压缩单元12113、计算启用单元12112、计算单元12111。

计算单元12111是执行神经网络节点的权重梯度计算的单元。在一个实施例中,可以有多个计算单元12111,每个计算单元12111对应一个神经网络节点,基于该神经网络节点的权重和其它操作数来计算该神经网络节点的权重梯度。

解压缩单元12113是获取压缩权重信号,并将所述压缩权重信号解压缩成权重信号和修剪信号的单元。如上所述,解压缩单元12113从指令译码单元125获取译码后的权重梯度计算指令,该指令中具有压缩权重信号的存储地址、和操作数的存储地址。解压缩单元12113按照压缩权重信号的存储地址,到存储器14或高速缓冲存储器18中对应的存储位置,读出压缩权重信号。

压缩权重信号是由权重信号和修剪信号压缩而成的信号。

权重信号是联合表达多个神经网络节点的权重的信号。将一个神经网络节点的权重放在一个权重信号中,会造成资源浪费。可以在一个权重信号中放置多个权重位,每一位表达一个神经网络节点的权重。一个权重信号的位数可以等于神经网络节点的个数,在这种情况下,可以将神经网络中全部神经网络节点的权重值放在一个权重信号中。一个权重信号的位数也可以小于神经网络节点的个数,在这种情况下,可以将神经网络中全部神经网络节点的权重值分别放在多个权重信号中。例如,每个权重信号可以有8个权重位,分别表达8个神经网络节点的权重值。一共有36个神经网络节点,可以用4个权重信号来表达所有神经网络节点的权重值。

修剪信号是指示各神经网络节点的权重是否在权重梯度计算中使用(是否未被修剪)的信号。修剪信号可以包括与所述权重信号位数相同的多个指示位,每个指示位表示权重信号中相应权重位的神经网络节点是否被修剪。例如,如果权重信号有8位,对应的修剪信号也是8位,修剪信号的第一位代表权重信号第一位对应的神经网络节点是否被修剪,修剪信号的第二位代表权重信号第二位对应的神经网络节点是否被修剪,等等。可以用指示位1表示相应神经网络节点未被修剪,即相应神经网络节点的权重可以在权重梯度计算中使用;用指示位0表示相应神经网络节点被修剪,即相应神经网络节点的权重不能在权重梯度计算中使用。如图14的例子中,修剪信号的第一位是0,表示权重信号第一位的权重值0.2在权重梯度计算中不使用;修剪信号的第二位是1,表示权重信号第二位的权重值0在权重梯度计算中使用,等等。反之,也可以可以用指示位0表示相应神经网络节点未被修剪,用指示位1表示相应神经网络节点被修剪。也可以用其它的不同数值区分表示相应神经网络节点是否被修剪。

将权重信号和修剪信号压缩可以采用现有的数据压缩方法。按照现有数据压缩方法,将权重信号和修剪信号压缩后,产生一个权重信号压缩版和数字矩阵,权重信号压缩版包含了权重信号的所有信息,但占用的存储空间少很多(例如原来8位,压缩版变成2位),数字矩阵代表了修剪信号所含的信息。这样,压缩产生的权重信号压缩版和数字矩阵的总大小远远小于原来的权重信号和修剪信息的总大小,大大减小了存储占用的空间。

解压缩单元12113解压缩的方法可以采用已有的数据解压缩方法。按照现有数据解压缩方法,将压缩产生的权重信号压缩版和数字矩阵转换回之前的权重信号和修剪信号。该权重信号发送给各计算单元12111,以便相应计算单元12111利用权重和操作数计算权重梯度时,从权重信号中获取该计算单元12111对应神经网络节点的权重,用于权重梯度计算。

解压缩产生的修剪信号输到计算启用单元12112,用于控制是否允许所述计算单元12111利用所述权重信号和所述操作数执行权重梯度计算。另外,修剪信号还输到图2的第一存储控制单元122,用于控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器142。

计算启用单元12112是基于所述修剪信号,控制是否允许计算单元12111利用权重信号和所述操作数执行权重梯度计算的单元。具体地,当计算单元12111有多个,每个计算单元12111分别对应于一个神经网络节点时,由于修剪信号的不同位表示不同的神经网络节点是否被修剪,当修剪信号的某个位表示相应神经网络节点被修剪时,控制相应计算单元12111不工作,即不利用所述权重信号和所述操作数执行权重梯度计算;当修剪信号的某个位表示相应神经网络节点未被修剪时,控制相应计算单元12111工作,即利用所述权重信号和所述操作数执行权重梯度计算。如图14的例子中,修剪信号的第一位是0,表示其对应的神经网络节点被修剪,控制该神经网络节点对应的计算单元12111不工作;修剪信号的第二位是1,表示其对应的神经网络节点未被修剪,控制该神经网络节点对应的计算单元12111工作。

计算启用单元12112可以采用多种方式控制是否允许计算单元12111执行权重梯度计算。

在一个实施例中,如图9所示,所述多个计算单元12111分别通过各自的时钟开关K1连接至时钟端,计算启用单元12112根据所述修剪信号表示的每个神经网络节点是否被修剪,来决定是接通还是断开该神经网络节点相应的计算单元12111连接的时钟开关。具体地,如果该修剪信号的某一位表示相应的神经网络节点应被修剪,则让该神经网络节点相应的计算单元12111连接的时钟开关断开。这样,不再给该计算单元12111提供时钟,该计算单元12111无法正常工作,达到了不执行该神经网络节点的权重梯度计算的目的。如果该修剪信号的某一位表示相应的神经网络节点不被修剪,则让该神经网络节点相应的计算单元12111连接的时钟开关接通。这样,给该计算单元12111提供时钟,该计算单元12111正常工作,执行该神经网络节点的权重梯度计算。在图13的例子中,修剪信号的第一位为0,表示相应的神经网络节点应被修剪,则让该神经网络节点相应的计算单元12111连接的时钟开关断开,该计算单元12111无法正常工作,不执行该神经网络节点的权重梯度计算;修剪信号的第二位为1,表示相应的神经网络节点不被修剪,则让该神经网络节点相应的计算单元12111连接的时钟开关接通,该计算单元12111正常工作,执行该神经网络节点的权重梯度计算。

在另一个实施例中,如图10所示,所述多个计算单元12111分别通过各自的电源开关K2连接至电源端,计算启用单元12112根据所述修剪信号表示的每个神经网络节点是否被修剪,来决定是接通还是断开该神经网络节点相应的计算单元12111连接的电源开关。具体地,如果该修剪信号的某一位表示相应的神经网络节点应被修剪,则让该神经网络节点相应的计算单元12111连接的电源开关断开。这样,不再给该计算单元12111提供电源功率,该计算单元12111无法正常工作,达到了不执行该神经网络节点的权重梯度计算的目的。如果该修剪信号的某一位表示相应的神经网络节点不被修剪,则让该神经网络节点相应的计算单元12111连接的电源开关接通。这样,给该计算单元12111提供电源功率,该计算单元12111正常工作,执行该神经网络节点的权重梯度计算。在图14的例子中,修剪信号的第一位为0,表示相应的神经网络节点应被修剪,则让该神经网络节点相应的计算单元12111连接的电源开关断开,该计算单元12111无法正常工作,不执行该神经网络节点的权重梯度计算;修剪信号的第二位为1,表示相应的神经网络节点不被修剪,则让该神经网络节点相应的计算单元12111连接的电源开关接通,该计算单元12111正常工作,执行该神经网络节点的权重梯度计算。

虽然上文描述了通过时钟开关和电源开关的方式对是否允许计算单元12111利用权重信号和操作数执行权重梯度计算进行控制,但本领域技术人员应该理解,也可以采用其它方式进行控制。采用时钟开关和电源开关,提供了两种简便易行的控制方式,而且硬件化的控制方式有利于减少对存储空间的占用,降低处理器处理负担。

虽然上文中,基于所述修剪信号,控制是否允许计算单元12111利用权重信号和操作数执行权重梯度计算是通过计算启用单元12112实现的,本领域技术人员应当理解,也可以不设置这样的计算启用单元12112。例如,可以将压缩产生的修剪信号输送给每一个计算单元12111,由各计算单元12111根据修剪信号表示的自己所对应的神经网络节点是否被修剪,来自行断开或接通与自己相连的时钟开关或电源开关。

第一存储控制单元122是基于所述修剪信号,控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器142的单元。存储器14中,操作数存储器142可以有多个。每个操作数存储器142分别对应于一个神经网络节点。由于修剪信号的不同位表示不同的神经网络节点是否被修剪,当修剪信号的某个位表示相应神经网络节点被修剪时,控制相应操作数存储器142不能被访问,也就无法获得所述操作数执行权重梯度计算。当修剪信号的某个位表示相应神经网络节点未被修剪时,控制相应操作数存储器142可以被访问,即可以获得所述操作数执行权重梯度计算。如图13的例子中,修剪信号的第一位是0,表示其对应的神经网络节点被修剪,控制该神经网络节点对应的操作数存储器142不能被访问;修剪信号的第二位是1,表示其对应的神经网络节点未被修剪,控制该神经网络节点对应的操作数存储器142能够被访问。

第一存储控制单元122可以采用多种方式控制是否允许访问存储所述权重计算中使用的操作数。

在一个实施例中,如图11所示,所述多个操作数存储器142各自对应于一个神经网络节点,具有各自的读有效端口和写有效端口。读有效端口是控制是否允许从操作数存储器读取操作数的控制端口,例如,当读有效端口输入高电平信号“1”时意味着读有效,即允许从操作数存储器读取操作数;当读有效端口输入低电平信号“0”时意味着读无效,即不允许从操作数存储器读取操作数。也可以相反设置。写有效端口是控制是否允许向操作数存储器写入操作数的控制端口,例如,当写有效端口输入高电平信号“1”时意味着写有效,即允许向操作数存储器写入操作数;当写有效端口输入低电平信号“0”时意味着写无效,即不允许从操作数存储器写入操作数。也可以相反设置。

如图11所示,第一存储控制单元122连接到各操作数存储器的读有效端口。因为本发明实施例仅需要在某个神经网络节点被修剪时,不让其相应的操作数存储器中的操作数被读出用于权重梯度计算,是否禁止向操作数存储器写入并不是本发明实施例关心的,因此,第一存储控制单元122不连接写有效端口。第一存储控制单元122根据所述修剪信号表示的每个神经网络节点是否被修剪,来决定给相应操作数存储器的读有效端口通高电平信号,即置“1”,还是通低电平信号,即置“0”。具体地,如果置“1”意味着读有效,置“0”意味着读无效,该修剪信号的某一位表示相应的神经网络节点应被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口置“0”。该操作数存储器142无法被访问,减少存储空间占用。如果该修剪信号的某一位表示相应的神经网络节点不应被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口置“1”。该操作数存储器142可以被访问。在图14的例子中,修剪信号的第一位为0,表示相应的神经网络节点应被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口置“0”;修剪信号的第二位为1,表示相应的神经网络节点不被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口置“1”。

在另一个实施例中,如图12所示,第一存储控制单元122同时连接到各操作数存储器的读有效端口和写有效端口。这样,如果该修剪信号的某一位表示相应的神经网络节点不应被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口和写有效端口同时置“1”。如果该修剪信号的某一位表示相应的神经网络节点应被修剪,则让该神经网络节点相应的操作数存储器142的读有效端口和写有效端口置“0”。虽然,我们只关心读有效端口是否被置位,但将读有效端口和写有效端口同时置位也不会影响本发明实施例的效果。

虽然上文描述了通过给操作数存储器的读有效端口置位的方式控制是否允许对操作数存储器142进行访问,但本领域技术人员应该理解,也可以采用其它方式进行控制。但上述方式简便易行,且硬件化的实现方式有利于减少对存储空间的占用,降低处理器处理负担。

虽然上文中,基于所述修剪信号,控制是否允许对操作数存储器142进行访问,本领域技术人员应当理解,也可以不设置这样的第一存储控制单元122。例如,可以由解压缩单元12113解压缩出修剪信号时,基于所述修剪信号,控制是否允许对操作数存储器142进行访问,控制的方法如上所述。

在图5的实施例中,解压缩单元12113解压缩出的权重信号直接输送给各计算单元12111。它的优点是电路结构比较简单。它是与图2的处理器12结构相适应的。该实施例中,即使基于修剪信号,某个神经网络节点是要被修剪掉的,相应的计算单元12111不会工作,而且计算权重梯度所需的操作数所在的操作数存储器142也禁止访问,但权重信号依然会输送给各计算单元。

在图6的实施例中,对应于图3的处理器12的结构,增加了与解压缩单元12113耦接的第二存储控制单元123。解压缩单元12113解压缩出的权重信号不是直接输送给各计算单元12111,而是输出给与解压缩单元12113耦接的权重存储器141(如图5所示)。解压缩的权重信号传输给权重存储器141存储后,其不是在任何时候都会被读出,是否允许访问权重存储器141要由第二存储控制单元123来控制。在一个实施例中,类似于操作数存储器,权重存储器也有读有效端口和写有效端口。读有效端口和写有效端口的功能与操作数存储器类似。所述第二存储控制单元连接到各权重存储器的读有效端口,或者同时连接到各权重存储器的读有效端口和写有效端口。解压缩单元12113将解压缩出的修剪信号发送给第二存储控制单元123。第二存储控制单元123基于所述解压缩单元12113输出的修剪信号,控制是否给权重存储器141的读有效端口置位。

权重存储器141可以有多个。每个权重存储器141分别对应于一个神经网络节点。由于修剪信号的不同位表示不同的神经网络节点是否被修剪,当修剪信号的某个位表示相应神经网络节点被修剪时,第二存储控制单元123给存储该神经网络节点的权重信号的权重存储器141置“0”,即向它通低电平信号,这样,计算单元12111也就无法获得所述权重,执行权重梯度计算;当修剪信号的某个位表示相应神经网络节点不被修剪时,第二存储控制单元123给存储该神经网络节点的权重信号的权重存储器141置“1”,即向它通高电平信号,这样,计算单元12111也就能够获得所述权重,执行权重梯度计算。如图14的例子中,修剪信号的第一位是0,表示其对应的神经网络节点被修剪,给该神经网络节点对应的权重存储器141置“0”;修剪信号的第二位是1,表示其对应的神经网络节点未被修剪,给该神经网络节点对应的权重存储器141置“1”。

该实施例的优点是,不是将权重信号直接输出给各计算单元12111,而是存储在权重存储器141中,按照修剪信号中的位表示的相应神经网络节点是否被修剪,来确定是否要将存储在权重存储器141中的权重信号读出,从而获取相应权重用于权重梯度计算,减少了传输负担,提高了数据安全性。

图7的实施例与图6的不同之处在于,不设第二存储控制单元123。是否允许访问权重存储器141,仍然由第一存储控制单元122来控制。解压缩单元12113将解压缩出的修剪信号发送给第一存储控制单元123。第一存储控制单元122基于所述修剪信号,既控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器142,又控制是否允许访问存储所述权重计算中使用的权重的权重存储器141。

由于修剪信号的不同位表示不同的神经网络节点是否被修剪,当修剪信号的某个位表示相应神经网络节点被修剪时,控制相应操作数存储器142不能被访问,同时控制相应权重存储器141不能被访问,这样就无法获得所述操作数和权重执行权重梯度计算;当修剪信号的某个位表示相应神经网络节点未被修剪时,控制相应操作数存储器142可以被访问,同时控制相应权重存储器141可以被访问,从而可以基于操作数和权重进行权重梯度计算。如图13的例子中,修剪信号的第一位是0,表示其对应的神经网络节点被修剪,控制该神经网络节点对应的操作数存储器142和权重存储器141不能被访问;修剪信号的第二位是1,表示其对应的神经网络节点未被修剪,控制该神经网络节点对应的操作数存储器142和权重存储器141能够被访问。该实施例的优点是,省略了第二存储控制单元123,简化了结构。

上述实施例没有关心压缩权重信号是如何生成的,仅考虑利用压缩权重信号,从中解压缩出修剪信号,用于控制可以仅让哪些神经网络节点相关的计算单元12111工作,并仅让哪些神经网络节点相关的操作数存储器142和权重存储器141被访问的过程,图8的实施例将压缩权重信号生成的过程也一并考虑。

如图9所示,权重梯度计算指令执行单元1211在图6的基础上增加了权重信号生成单元12115、修剪信号生成单元12116、压缩单元12117。

权重信号生成单元12115基于各神经网络节点的权重,生成权重信号。神经网络训练中,各神经网络节点的权重是迭代确定的。预先设置神经网络节点的初始权重,然后根据样本进行训练,由样本的输入初始样本的输出,并监督该输出是否达到预期,据此调整神经网络节点的权重,然后再输入样本,进行下一轮调节。这里生成权重信号所基于的权重是上一轮神经网络节点的权重。在本轮中,由处理单元121按照本发明实施例的方法计算权重梯度,由其他指令执行单元据此会计算出本轮新的权重,并确定在下一轮中哪些神经网络节点被修剪,实现迭代训练。由权重生成权重信号可以通过将多个神经网络节点的权重分别放在权重信号的不同权重位中来实现。例如,图13中,权重信号包括8个权重位,将8个神经网络节点的权重值0.2,0,0,0.7,0,0.2,0,0分别放到8个权重位中,得到权重信号。

修剪信号生成单元12116基于各神经网络节点的权重是否在权重梯度计算中使用的指示,生成修剪信号。在一个实施例中,该指示可以是管理员输入的。例如,管理员观察上一轮迭代训练中,各个神经网络节点在确定权重梯度时起到的作用,将该神经网络节点是否要在下一轮被修剪掉的指示通过操作界面输入。在另一个实施例中,该指示是在上一轮迭代中,由其他指令执行单元,根据上一轮计算出的各节点的权重梯度确定的。修剪信号生成单元12116从该其他指令执行单元获取该指示。

在一个实施例中,基于各神经网络节点的权重是否在权重梯度计算中使用的指示,生成修剪信号,可以采用如下方式:对于修剪信号的每个指示位,如果该指示位对应的神经网络节点的权重能在权重梯度计算中使用,则置位成第一值;如果该指示位对应的神经网络节点的权重不能在权重梯度计算中使用,则置位成第二值。如图13所示,对于修剪信号的第一个指示位,该指示表明该指示位对应的神经网络节点的权重不在权重梯度计算中使用,则置位成0;对于修剪信号的第二个指示位,该指示表明该指示位对应的神经网络节点的权重在权重梯度计算中使用,则置位成1;以此类推。

压缩单元12117将生成的权重信号和修剪信号压缩成压缩权重信号。压缩的方式可以是:基于权重信号和修剪信号,产生一个权重信号压缩版和数字矩阵,将所述权重信号压缩版和数字矩阵作为压缩权重信号,其中,所述权重信号压缩版含有所述权重信号的所有信息,但占用存储空间比所述权重信号少,数字矩阵代表了修剪信号所含的信息。该压缩可以采用已有的压缩方法。

压缩单元12111产生的压缩权重信号产生后,可以发送到压缩权重信号存储器(未示)存储。当需要时,压缩权重信号获取单元12114从压缩权重信号存储器中获取。

本发明应用到数据中心后,理论上最高可以使数据中心的能耗降低80%,可节省60%的能源开支。此外该技术可以提升2-3倍的可训练神经网络模型数量,神经网络更新速度提升2-3倍。使用该技术的相关神经网络训练产品的市场价值可提高50%。

如图14所示,根据本发明的一个实施例,还提供了一种权重梯度计算处理方法,包括:

步骤601,获取压缩权重信号,其中,所述压缩权重信号由权重信号和修剪信号压缩而成,所述修剪信号指示各神经网络节点的权重是否在权重梯度计算中使用;

步骤602,将所述压缩权重信号解压缩成权重信号和修剪信号,所述修剪信号被用于控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,所述修剪信号还被用于控制是否允许计算单元利用所述权重信号和所述操作数执行权重梯度计算。

本公开实施例中,权重信号和指示各神经网络节点的权重是否在权重梯度计算中使用(即该神经网络节点是否被修剪掉)的修剪信号以压缩的形式存储。当需要计算权重梯度时,从压缩权重信号中解压缩出修剪信号,所述修改信号用于控制是否允许访问存储所述权重计算中使用的操作数的操作数存储器,并且用于控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算。在控制是否允许访问操作数存储器时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就控制不允许访问这个神经网络节点对应的操作数存储器,反之则允许,这样,如果这个权重不能被使用,就没有相应的访问开销,达到降低存储器访问开销的目的。在控制是否允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算时,如果修剪信号表示这个神经网络节点的权重不能够被使用,就不允许所述计算单元利用所述权重信号和所述操作数执行权重梯度计算,从而减少了确定神经网络的权重梯度时处理器的计算开销。

本申请还公开了一种包括存储于其上的计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时使得所述处理器执行本文所述的各实施例的方法。

需要领会,以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。

应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。

还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

相关技术
  • 处理单元、处理器核、神经网络训练机及方法
  • 用于神经网络训练的具有迟滞更新的电阻处理单元
技术分类

06120112964873