用于加速神经网络处理器的方法和系统及神经网络处理器[发明专利]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201710777737.8
(22)申请日 2017.09.01
(71)申请人 中国科学院计算技术研究所
地址 100190 北京市海淀区中关村科学院
南路6号
(72)发明人 韩银和 许浩博 王颖 
(74)专利代理机构 北京泛华伟业知识产权代理
有限公司 11280
代理人 王勇 苏晓丽
(51)Int.Cl.
G06N 3/063(2006.01)
(54)发明名称
用于加速神经网络处理器的方法和系统及
神经网络处理器
(57)摘要
本发明提供了用于加速神经网络处理器的
方法及相应神经网络处理器,其中从待处理的神
经网络模型的原始数据和权重中提取非零值及
其偏移量分别加载至相应数据存储单元和权重
存储单元,在计算时选择具有相同偏移量的权重
和数据加载至神经网络处理器的计算单元参与
运算。

这样,可有效降低神经网络处理器所处理
的数据规模,从而减少片上存储开销,加快了运
算速度并降低了能耗,使得神经网络处理系统性
能更高效。

权利要求书1页 说明书5页 附图3页CN 107491811 A 2017.12.19
C N 107491811
A
1.一种用于加速神经网络处理器的方法,所述方法包括:
步骤1)从待处理的神经网络模型的原始数据和权重中提取非零元素及其相对位置,并分别加载至神经网络处理器的数据存储单元和权重存储单元;
步骤2)对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至神经网络处理器的计算单元参与运算。

2.根据权利要求1所述的方法,还包括从来自神经网络处理器的计算单元的输出数据中提取非零元素及其相对位置,并将其保存到数据存储单元。

3.一种神经网络处理器,包括控制单元、计算单元、权重存储单元、数据存储单元,数据匹配单元,其中控制单元用于控制相关数据的调度、运算与存储;权重存储单元存储已经训练好的神经网络权重中非零元素及其相对位置;数据存储单元存储神经网络原始数据及中间结果数据中非零元素及其相对位置;数据匹配单元用于对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至计算单元中。

4.根据权利要求3所述的神经网络处理器,还包括数据压缩单元,用于从来自计算单元的输出数据中提取非零元素及其相对位置,并将其保存到数据存储单元。

5.根据权利要求3所述的神经网络处理器,其中数据匹配单元包含在各个计算单元中。

6.根据权利要求5所述的神经网络处理器,其中各个计算单元并行工作,控制单元调度不同的权重值接入不同的计算单元,并控制来自数据存储单元的数据由各个计算单元共享,每个计算单元中相应的数据匹配单元对于输入的数据和权重进行匹配以判断是否对其进行运算。

7.根据权利要求3-6所述的神经网络处理器,其中数据匹配单元包括一个或多个比较器。

8.根据权利要求3-56中任一项所述的神经网络处理器,其中数据压缩单元包括输入寄存器、输出寄存器和比较器,输入寄存器接收来自计算单元的数据,通过比较器判断该数据是否为零值,如果不为零则将该数据及对应的寄存器编号载入至输出寄存器中。

9.一种用于加速神经网络处理器的系统,所述系统包括:
数据预处理装置,用于从待处理的神经网络模型的原始数据和权重中提取非零元素及其相对位置,并分别加载至神经网络处理器的数据存储单元和权重存储单元;
数据匹配装置,对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至神经网络处理器的计算单元参与运算。

10.根据权利要求9所述的系统,还包括:
数据压缩装置,对于来自神经网络处理器的计算单元的输出数据中提取非零元素及其相对位置,并将其保存到神经网络处理器的数据存储单元中。

权 利 要 求 书1/1页CN 107491811 A
用于加速神经网络处理器的方法和系统及神经网络处理器
技术领域
[0001]本发明涉及神经网络处理器,尤其涉及加速神经网络模型计算的方法。

背景技术
[0002]深度学习近些年来取得了重大突破,采用深度学习算法训练的神经网络模型在图像识别、语音处理、智能机器人等应用领域取得了令人瞩目的成果。

深度神经网络通过建立模型来模拟人类大脑的神经连接结构,在处理图像、声音和文本等信号时,通过多个变换阶段分层对数据特征进行描述。

随着神经网络复杂度的不断提高,神经网络技术在实际应用过程中存在占用资源多、运算速度慢、能量消耗大等问题。

采用硬件加速器替代传统软件计算的方法成为提高神经网络计算效率的行之有效方式,例如利用通用图形处理器、专用处理器芯片和现场可编程逻辑阵列(FPGA)实现的神经网络处理器。

[0003]目前神经网络处理器通常将已训练好的权重数据作为输入信号与数据信号一起进行片上运算操作。

神经网络处理器属于计算密集型和访存密集型处理器。

一方面,神经网络模型中包括大量乘法加法运算及其他非线性运算,需要神经网络处理器保持高负载运行,以保障神经网络模型的运算需求;另一方面,神经网络运算过程中存在大量的参数迭代,计算单元需要对存储器进行大量访问。

随着神经网络数据规模的不断增长,密集访存操作不仅占用神经网络处理器的大量片上资源,还降低了其运算速度。

发明内容
[0004]因此,本发明的目的在于克服上述现有技术的缺陷,提供一种改善神经网络处理器运算速度的方法及对应的神经网络处理器。

[0005]本发明的目的是通过以下技术方案实现的:
[0006]一方面,本发明提供了一种用于加速神经网络处理器的方法,所述方法包括:[0007]步骤1)从待处理的神经网络模型的原始数据和权重中提取非零元素及其相对位置,并分别加载至神经网络处理器的数据存储单元和权重存储单元;
[0008]步骤2)对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至神经网络处理器的计算单元参与运算。

[0009]在上述方法中,还可包括从来自神经网络处理器的计算单元的输出数据中提取非零元素及其相对位置,并将其保存到数据存储单元。

[0010]又一方面,本发明提供了一种神经网络处理器,包括控制单元、计算单元、权重存储单元、数据存储单元,数据匹配单元,其中控制单元用于控制相关数据的调度、运算与存储;权重存储单元存储已经训练好的神经网络权重中非零元素及其相对位置;数据存储单元存储神经网络原始数据及中间结果数据中非零元素及其相对位置;数据匹配单元用于对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至计算单元中。

[0011]在上述神经网络处理器中,还可包括数据压缩单元,用于从来自计算单元的输出
数据中提取非零元素及其相对位置,并将其保存到数据存储单元。

[0012]在上述神经网络处理器中,数据匹配单元可包含在各个计算单元中。

[0013]在上述神经网络处理器中,各个计算单元可并行工作,控制单元调度不同的权重值接入不同的计算单元,并控制来自数据存储单元的数据由各个计算单元共享,每个计算单元中相应的数据匹配单元对于输入的数据和权重进行匹配以判断是否对其进行运算。

[0014]在上述神经网络处理器中,数据匹配单元可包括一个或多个比较器。

[0015]在上述神经网络处理器中,数据压缩单元可包括输入寄存器、输出寄存器和比较器,输入寄存器接收来自计算单元的数据,通过比较器判断该数据是否为零值,如果不为零则将该数据及对应的寄存器编号载入至输出寄存器中。

[0016]又一方面,本发明还提供了一种用于加速神经网络处理器的系统,所述系统包括:[0017]数据预处理装置,用于从待处理的神经网络模型的原始数据和权重中提取非零元素及其相对位置,并分别加载至神经网络处理器的数据存储单元和权重存储单元;[0018]数据匹配装置,对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至神经网络处理器的计算单元参与运算。

[0019]在上述系统中,还可包括:
[0020]数据压缩装置,对于来自神经网络处理器的计算单元的输出数据中提取非零元素及其相对位置,并将其保存到神经网络处理器的数据存储单元中。

[0021]与现有技术相比,本发明的优点在于:
[0022]本发明有效降低了神经网络处理器所处理的数据规模,从而减少片上存储开销,加快了运算速度并降低了能耗,使得神经网络处理系统性能更高效。

附图说明
[0023]以下参照附图对本发明实施例作进一步说明,其中:
[0024]图1为根据本发明实施例的用于加速神经网络处理器的方法的流程示意图;[0025]图2为根据本发明实施例的权重压缩过程示例示意图;
[0026]图3为根据本发明实施例的数据压缩过程示例示意图;
[0027]图4为根据本发明实施例的神经网络处理器的结构示意图;
[0028]图5为根据本发明实施例的数据匹配单元的结构示意图;
[0029]图6为根据本发明实施例的数据压缩单元的结构示意图;
[0030]图7为采用本发明实施例的神经网络处理器的计算流程示意图。

具体实施方式
[0031]为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

[0032]发明人在研究中发现参见神经网络计算的数据中存在大量数值为0的数据和权重,在计算过程中这样的数据与权重经过乘法和加法等运算后对运算结果不产生数值上的影响。

但是,这些数值为0的数据和权重在存储、载入和运算等过程会占用大量片上资源、消耗多余的工作时间,难以满足神经网络处理器的性能要求。

[0033]在本发明的一个实施例中,提供了一种用于加速神经网络处理器的方法。

如图1所示,该方法主要包括1)从待处理的神经网络模型的原始数据和权重中提取非零值及其偏移量分别加载至神经网络处理器的数据存储单元和权重存储单元;2)对来自所述权重存储单元和数据存储单元的数据和权重进行匹配,仅将具有相同偏移量的权重和数据加载至神经网络处理器的计算单元参与运算。

[0034]更具体地,在步骤1)从待处理的神经网络模型的原始数据和权重中去除所有数值为零的元素,仅保留非零元素及其相对位置。

这个过程也可以理解为对待处理的神经网络数据进行重新编码或压缩,经重新编码或压缩之后得到的权重序列和数据序列中将不保留数值为零的元素,只保留非零元素,从而确保只有非零元素才能参与后续神经网络计算。

在神经网络计算中,通常会将待处理的权重和数据以相同的方式划分成多个分组或序列进行存储和加载的,每组内的元素可根据实际使用的神经网络处理器的计算单元的规模决定。

经步骤1)处理后得到每个非零元素可以<非零元素,偏移量>的格式来进行存储,其中偏移量指示该非零元素在一组权重或数据中的相对位置。

[0035]图2给出了对权重进行压缩处理的过程示意。

图2中以每组包括四个元素为例来描述权重压缩的过程。

如图2所示,线上方为原始权重,而线下方为经步骤1)处理后得到的权重。

在第一组权重中,数值为1.5和2.5的元素在这一组权重中相对于该组第一个元素的偏移量分别为0和1,因此在重新编码或压缩后,该组权重保留了两个非零元素,标示元素位置的偏移量分别为0和1;在第二组的原始权重数据中包含三个非零元素,在该组数据中为第1个、第3个和第4个元素,因此偏移量分别为0、2和3。

在第三组权重值中,包含一个非零元素,偏移量为3。

应理解,上述以偏移量指示元素的相对位置的方式仅是举例说明而非进行任何限制,每个非零元素的相对位置也可以直接以该非零元素在一组数据中的实际位置为指示,例如第一组权重中,数值为1.5和2.5的元素是这一组权重第一个和第二元素,因此其相对位置可以1和2来指示。

[0036]图3示出的数据压缩过程与图2所示的权重压缩过程类似,以每组数据包含四个元素为例,线上方为原始数据,而线下方为经步骤1)处理后得到的数据。

在第一组数据中,数值为1和2的元素分别为第1个和第4个元素,因此在重新编码后,该组数据保留了两个非零元素,标示元素位置的偏移量分别为0和3,即这两个元素相对于该组第一个元素的偏移量位0和3;在第二组的原始数据中包含三个非零元素,在该组数据中为第1个、第2个和第4个元素,因此偏移量分别为0、1和3。

在第三组数据中,包含1个非零元素,偏移量为0。

[0037]继续参考图1,将经上述处理后的权重和数据分别加载至神经网络处理器的权重存储单元和数据存储单元。

接着在步骤2)在进行计算时,对于从数据存储单元读取的数据和从权重存储单元读取权重进行匹配,只将具有相同偏移量的权重和数据加载至神经网络处理器的计算单元参与运算。

可以看出,对于神经网络处理器而言,只存储数据和权重中的非零元素,可以大大减少内存占用;而且只将非零数据和权重载入到计算单元中,既提升了计算速度并提高了计算单元利用率。

[0038]在又一个实施例中,该方法还包括对于来自神经网络处理器的计算单元的输出数据进行同样的重新编码或压缩,与上述对权重和原始数据的处理方式相同,只将其中非零元素及其相对位置保存到存储单元。

这是因为在神经网络计算中会产生很多中间计算结果,从这些中间计算结果也仅保存其中非零元素可以进一步优化神经网络处理器中存储和
计算资源的利用率。

[0039]图4为根据本发明的一个实施例的神经网络处理器的结构示意图。

该神经网络处理基于存储-控制-计算的结构,其中存储结构用于存储参与计算的数据及处理器操作指令;控制结构包括译码电路,用于解析操作指令,生成控制信号以控制片上数据的调度与存储以及神经网络计算过程;计算结构包括算术逻辑单元,用于参与该处理器中的神经网络计算操作。

如图4所示,控制单元可与数据存储单元、权重存储单元、指令存储单元、计算单元通信,控制单元获得保存在指令存储单元中的指令并且解析该指令,产生控制信号控制计算单元进行神经网络计算。

权重存储单元用于存储已经训练好的神经网络权重,数据存储单元用于存储与神经网络计算相关的各种数据,该数据可包括神经网络模型的原始特征数据和参与中间层计算的参数以及来自计算单元的输出的数据等。

计算单元用于根据控制单元的产生的控制信号来执行相应的神经网络计算。

计算单元与一个或多个存储单元相关联,计算单元可以从数据存储单元中获得数据以进行计算,并且可以向数据存储单元写入数据。

[0040]但与现有神经网络处理器不同,在图4所示的权重存储单元和数据存储单元中存储的是如上文介绍的经过重新编码或压缩的数据,仅保存了各种数据中的非零元素及其相对位置。

除此之外,还在计算单元的输入与存储单元的输出之间增加了数据匹配单元,并在计算单元的输出与存储单元的输入之间增加了数据压缩单元。

其中,数据匹配单元对于权重存储单元和数据存储单元中采用重新编码或压缩后的格式存储的权重和数据进行匹配,只选择具有相同偏移量的权重和数据加载至神经网络处理器的计算单元参与运算,从而保证被压缩的权重可以与之对应的数据进行正确的计算。

图5给出了示例的数据匹配单元的结构示意图。

该数据匹配单元中包含一个或多个比较器,比较器的作用是将数据的偏移量和权重的偏移量进行比对,仅允许具有相同偏移量的数据和权重加载至计算单元的阵列中。

[0041]图4中示出的仅是各个计算单元共享数据匹配单元的一个示例。

在又一个实施例中,也可以是在各个计算单元中设置相应的数据匹配单元。

这样,在神经网络模型在计算过程中,来自数据存储单元的数据共享到各个计算单元中,而来自权重存储单元的不同的权重值接入到各个计算单元中,每个计算单元通过自己的数据匹配单元对权重的偏移量和数据的偏移量进行匹配,仅对偏移量相同的对应数据和权重执行后续计算操作,而各个计算单元可并行工作。

[0042]继续参考图4,位于计算单元的输出与存储单元的输入之间的数据压缩单元用于在神经网络处理器片上对中间计算结果进行压缩,只保留非零元素,不存储零值元素。

采用与上文介绍的对权重和原始数据的处理相同的方式,只将其中非零元素及其相对位置保存到存储单元,从而进一步优化神经网络处理器中存储和计算资源的利用率。

图6给出了图5给出了示例的数据压缩单元的结构示意图。

该数据压缩单元由输入寄存器、输出寄存器寄和比较器组成,需要被压缩的数据接入至压缩单元中的寄存器组中,接着通过比较器判断接入的数据是否为零值,若不为零值则将数据和对应的寄存器编号载入至输出寄存器中。

[0043]图7示出了采用根据本发明实施例的神经网络处理器进行神经网络计算的过程的流程示意图。

其中该神经网络处理器的各个计算单元包含各自的数据匹配单元。

如图7所示,控制单元对存储单元寻址,读取并解析需要执行的指令,根据解析指令得到的存储地址
从存储单元中获取输入数据,将数据和权重分别从数据存储单元和权重存储单元载入至计算单元。

在神经网络模型在计算过程中,根据控制指令将来自数据存储单元的数据共享到各个计算单元中,而来自权重存储单元的不同的权重值接入到各个相应计算单元中。

接着,每个计算单元中设置的数据匹配单元对收到权重和数据的偏移量进行匹配,仅对偏移量相同的对应数据和权重执行神经网络运算中相关的运算操作。

各计算单元的相关运算结果提供至数据压缩单元,由数据压缩单元从中提取出非零元素及其相对位置,并将其输出至数据存储单元。

[0044]在又一个实施例中,还提供了一种用于加速神经网络处理器的系统,包括片外压缩装置和上文介绍的神经网络处理器。

其中,该片外压缩装置从对待处理的神经网络模型的原始数据和权重中提取非零值及其偏移量分别加载至神经网络处理器的数据存储单元和权重存储单元。

[0045]在又一个实施例中,还提供了一种用于加速神经网络处理器的系统,所述系统包括数据预处理装置和数据匹配装置。

其中数据预处理装置,用于从待处理的神经网络模型的原始数据和权重中提取非零元素及其相对位置,并分别加载至神经网络处理器的数据存储单元和权重存储单元;数据匹配装置,对来自所述权重存储单元的权重和来自数据存储单元的数据进行匹配,仅将相对位置相同的权重和数据加载至神经网络处理器的计算单元参与运算。

在另一个实施例中,该系统还可以包括:数据压缩装置,对于来自神经网络处理器的计算单元的输出数据中提取非零元素及其相对位置,并将其保存到神经网络处理器的数据存储单元中。

[0046]虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所做出的各种改变以及变化。

图1
图2
图3
图4
图5
图6
图7。

相关文档
最新文档