加速深度神经网络算法的加速芯片的运算装置及方法转让专利

申请号 : CN201610979814.3

文献号 : CN106529668B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李震刘少礼张士锦罗韬钱诚陈云霁陈天石

申请人 : 中国科学院计算技术研究所

摘要 :

本发明提供一种加速深度神经网络算法的加速芯片的运算装置及方法,所述装置包括:向量加法处理器模块,进行向量的加法或减法、和/或深度神经网络算法中的池化层算法的向量化的运算;向量函数值运算器模块,深度神经网络算法中的非线性求值的向量化运算;向量乘加器模块,进行向量的乘加运算;所述三个模块执行可编程指令,互相交互以计算神经网络输出结果以及代表中间层之间神经元作用强度的突触权重变化量;所述三个模块中均设置有中间值存储区域,并对主存储器进行读取与写入操作。由此,能够减少对主存储器的中间值读取和写入次数,降低加速器芯片的能量消耗,避免数据处理过程中的数据缺失和替换问题。

权利要求 :

1.一种加速深度神经网络算法的加速芯片的运算装置,其特征在于,包括:

向量加法处理器模块,用于进行向量的加法或减法、和/或深度神经网络算法中的池化层算法的向量化的运算;

向量函数值运算器模块,用于深度神经网络算法中的非线性求值的向量化运算;

向量乘加器模块,用于进行向量的乘加运算;

被配置为执行可编程指令的所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块之间互相交互以计算神经网络中间层网络输出结果以及中间层之间神经元作用强度的突触权重变化量;

所述加速深度神经网络算法的加速芯片的运算装置对于平均池化层的结果,是先由向量加法处理器模块计算向量输出中每个神经元所对应的输入累加值,然后用向量乘加器模块乘以平均因子求得;

所述加速深度神经网络算法的加速芯片的运算装置对于最大池化层的结果,是由向量加法处理器模块计算向量输出中每个神经元所对应的输入最大值求得;

所述加速深度神经网络算法的加速芯片的运算装置对于卷积层以及全连接层的结果,是先使用向量加法处理器模块叠加输出神经元对应的部分和以及偏置,然后再由向量函数值运算器模块求得输出神经元值;所述部分和为通过外界处理器求得后通过总线传输给所述运算装置;

所述加速深度神经网络算法的加速芯片的运算装置对于局部响应归一化层的结果,则是先用向量函数值运算器模块求得非线性函数值,然后再与输入层神经元通过向量乘加器模块相乘得到;

所述加速深度神经网络算法的加速芯片的运算装置对于突触权重的变化量是通过向量乘加器模块将反向传播求得的残差和对应的输入神经元值相乘以及学习率因子相乘获得,所述反向传播求得的残差是通过外界处理器求得后通过总线传输给所述运算装置;

所述加速深度神经网络算法的加速芯片的运算装置通过数据总线与外界处理器进行数据交互;

所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块中均设置有中间值存储区域,用于存储依照所述指令所计算的向量化的中间值,并对主存储器进行读取与写入操作。

2.根据权利要求1所述的加速深度神经网络算法的加速芯片的运算装置,其特征在于,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块生成输出值之后,存储于所述中间值存储区域内所述中间值将被丢弃。

3.根据权利要求1所述的加速深度神经网络算法的加速芯片的运算装置,其特征在于,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块的所述中间值存储区域被配置为随机存储器。

4.根据权利要求3所述的加速深度神经网络算法的加速芯片的运算装置,其特征在于,所述随机存储器被配置为存储自身产生的来自于每个神经元、突出权重变化量的中间值。

5.根据权利要求1所述的加速深度神经网络算法的加速芯片的运算装置,其特征在于,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块通过一个索引访问所述中间值存储区域。

6.一种使用权利要求1-5所述加速深度神经网络算法的加速芯片的运算装置进行运算的方法,其特征在于,包括以下步骤:向量加法处理运算步骤,在向量加法处理器模块依照指令进行向量的加法或减法、和/或深度神经网络算法中的池化层算法的向量化的运算;

向量函数值运算步骤,在向量函数值运算器模块依照指令进行深度神经网络算法中的非线性求值的向量化运算;

向量乘加运算步骤,在向量乘加器模块依照指令进行向量的乘加运算;

所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤互相交互以计算神经网络输出结果以及代表中间层之间神经元作用强度的突触权重变化量;

所述加速深度神经网络算法的加速芯片的运算装置对于平均池化层的结果,是先由向量加法处理运算步骤计算向量输出中每个神经元所对应的输入累加值,然后用向量乘加运算步骤乘以平均因子求得;

所述加速深度神经网络算法的加速芯片的运算装置对于最大池化层的结果,是由向量加法处理运算步骤计算向量输出中每个神经元所对应的输入最大值求得;

所述加速深度神经网络算法的加速芯片的运算装置对于卷积层以及全连接层的结果,是先使用向量加法处理运算步骤叠加输出神经元对应的部分和以及偏置,然后再由向量函数值运算步骤求得输出神经元值;所述部分和为通过外界处理器求得后通过总线传输给所述运算装置;

所述加速深度神经网络算法的加速芯片的运算装置对于局部响应归一化层的结果,是先用向量函数值运算步骤求得非线性函数值,然后再与输入层神经元通过向量乘加运算步骤相乘得到;

所述加速深度神经网络算法的加速芯片的运算装置对于突触权重的变化量是通过向量乘加运算步骤将反向传播求得的残差和对应的输入神经元值相乘以及学习率因子相乘获得,所述反向传播求得的残差是通过外界处理器求得后通过总线传输给所述运算装置;

所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中所产生的向量化的中间值存储于所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块中的中间值存储区域,且所述中间值存储区域可对主存储器进行读取与写入操作。

7.根据权利要求6所述的加速深度神经网络算法的加速芯片的运算装置进行运算的方法,其特征在于,所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,生成输出值之后,存储于所述中间值存储区域内所述中间值将被丢弃。

8.根据权利要求6所述的加速深度神经网络算法的加速芯片的运算装置进行运算的方法,其特征在于,所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,通过一个索引访问所述中间值存储区域。

9.根据权利要求8所述的加速深度神经网络算法的加速芯片的运算装置进行运算的方法,其特征在于,所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区域内的、先前对所述索引指定的存储块未写入的位置执行读取,则中间存储拒绝此读取请求,被拒绝的读取请求返回的表示读取成功的状态为无效。

10.根据权利要求8所述的加速深度神经网络算法的加速芯片的运算装置进行运算的方法,其特征在于,所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区域内的、先前对所述索引指定的存储块已写入的位置执行写入,则中间存储拒绝此写入请求,被拒绝的写入请求返回的表示写入成功的状态为无效。

说明书 :

加速深度神经网络算法的加速芯片的运算装置及方法

技术领域

[0001] 本发明属于神经网络算法领域和计算机硬件领域。更具体地,本发明涉及一种加速深度神经网络算法的加速芯片的运算装置及方法。

背景技术

[0002] 人工神经网络算法,是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。其具有自主学习功能,可通过训练慢慢学会识别和预测;联想存储功能,具有很高算法健壮性;并行度高,具有高速寻找优化解的能力,可针对大数据复杂问题快速找到优化解;可塑性强,可充分逼近任意复杂的非线性关系;具有很强的信息综合能力,能同时处理定量和定性的信息,适用于多信息融合和多媒体技术。
[0003] 近年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在图像处理、模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多传统计算机方法难以解决的实际问题,表现出了良好的智能特性,推动着信息处理技术和人工智能不断地发展。
[0004] 神经网络虽然已在诸多领域取得广泛的成功,然而现阶段,大部分神经网络算法是在软件算法层次进行优化,在通用CPU或GPU上搭建运行。鉴于通用处理器相对较低的性能功耗比,高效地实现神经网络算法的方式已成为大家的迫切需求。
[0005] 深度神经网络算法通常包括:卷积层、局部响应归一化层(LRN)、池化(pooling)层、全连接层等几大类层。每层中的数据被称为神经元,不同层之间互联组成一个深度神经网络。池化层作为深度神经网络算法中的一部分,其功能可以理解为神经网络中对前一层的数据进行采样。池化层可分为最大池化(max pooling)层,即每个输出神经元值是输入层中一个小矩形区域中的神经元值的最大值,以及平均池化(average pooling)层,即每个输出神经元值是输入层中一个小矩形区域中的神经元值的平均值。
[0006] 专利文件1(公开号为CN101527010A)公开了一种人工神经网络算法的硬件实现方法及其系统,和现有的技术相比,克服以往软件实现中的串行方式来完成并行计算的尴尬,取代了软件实现的弊端;又由于进行了算法优化,节省了大量硬件资源,在FPGA平台上实现,成本较低,利用优化的算法,避开了SIGMOID函数用硬件难以实现的困境,又使用了累加方式,节省了硬件资源。但该专利仅仅通过FPGA平台实现人工神经网络算法。
[0007] 在现代处理器设计中,异构多核处理器框架被认为是一种有前途的道路以实现该性能低能源计算的方法。已知的是,神经网络算法运算过程中,将产生一系列的中间值,所述中间值随后一次或多次被用于计算输出层神经元值或者计算突出权重的变化值。采用通用处理器的存储方式将所述中间值存储于主存中,将面临的一个重大问题是大量的中间值被生成并需要存储,从而所需主存空间增加。同时,这样的方法增加了将中间值存储到主存储器或者从主存储器读取中间值次数,芯片功耗增加,不符合前面所述的低功耗加速器芯片设计理念。

发明内容

[0008] 本发明的目的在于,提供一种加速深度神经网络算法的加速芯片的运算装置及方法,能够减少对主存储器的中间值读取和写入次数,降低加速器芯片的能量消耗,避免数据处理过程中的数据缺失和替换问题。
[0009] 本发明的加速深度神经网络算法的加速芯片的运算装置,包括:
[0010] 向量加法处理器模块,用于进行向量的加法或减法、和/或深度神经网络算法中的池化层算法的向量化的运算;
[0011] 向量函数值运算器模块,用于深度神经网络算法中的非线性求值的向量化运算;
[0012] 向量乘加器模块,用于进行向量的乘加运算;
[0013] 被配置为执行可编程指令的所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块之间互相交互以计算神经网络中间层神经元值和网络输出结果、以及、代表中间层之间神经元作用强度的突触权重变化量;
[0014] 所述加速深度神经网络算法的加速芯片的运算装置对于平均池化层的结果,是先由向量加法处理器模块计算向量输出中每个神经元所对应的输入累加值,然后用向量乘加器模块乘以平均因子求得;
[0015] 所述加速深度神经网络算法的加速芯片的运算装置对于最大池化层的结果,是由向量加法处理器模块计算向量输出中每个神经元所对应的输入最大值求得;
[0016] 所述加速深度神经网络算法的加速芯片的运算装置对于卷积层以及全连接层的结果,是先使用向量加法处理器模块叠加输出神经元对应的部分和以及偏置,然后再由向量函数值运算器模块求得输出神经元值;所述部分和为通过外界处理器求得后通过总线传输给所述运算装置;
[0017] 所述加速深度神经网络算法的加速芯片的运算装置对于局部响应归一化层的结果,则是先用向量函数值运算器模块求得非线性函数值,然后再与输入层神经元通过向量乘加器模块相乘得到;
[0018] 所述加速深度神经网络算法的加速芯片的运算装置对于突触权重的变化量是通过向量乘加器模块将反向传播求得的残差和对应的输入神经元值相乘以及学习率因子相乘获得,所述反向传播求得的残差是通过外界处理器求得后通过总线传输给所述运算装置;
[0019] 所述加速深度神经网络算法的加速芯片的运算装置通过数据总线来与外界处理器进行数据交互;
[0020] 所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块中均设置有中间值存储区域,用于存储依照所述指令所计算的向量化的中间值,并对主存储器进行读取与写入操作。
[0021] 本发明的加速深度神经网络算法的加速芯片的运算装置,其中,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块生成输出值之后,存储于所述中间值存储区域内所述中间值将被丢弃。
[0022] 本发明的加速深度神经网络算法的加速芯片的运算装置,其中,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块的所述中间值存储区域被配置为随机存储器。
[0023] 本发明的加速深度神经网络算法的加速芯片的运算装置,其中,所述随机存储器被配置为存储自身产生的来自于每个神经元、突出权重变化量的中间值。
[0024] 本发明的加速深度神经网络算法的加速芯片的运算装置,其中,所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块通过一个索引访问所述中间值存储区域。
[0025] 另外,本发明还提供一种加速深度神经网络算法的加速芯片的运算方法,该方法使用上述加速深度神经网络算法的加速芯片的运算装置进行运算,包括以下步骤:
[0026] 向量加法处理运算步骤,在向量加法处理器模块依照指令进行向量的加法或减法、和/或深度神经网络算法中的池化层算法的向量化的运算;
[0027] 向量函数值运算步骤,在向量函数值运算器模块依照指令进行深度神经网络算法中的非线性求值的向量化运算;
[0028] 向量乘加运算步骤,在向量乘加器模块依照指令进行向量的乘加运算;
[0029] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤互相交互以计算神经网络输出结果以及代表中间层层之间神经元作用强度的突触权重变化量;
[0030] 所述加速深度神经网络算法的加速芯片的运算装置对于平均池化层的结果,是先由向量加法处理运算步骤计算向量输出中每个神经元所对应的输入累加值,然后用向量乘加运算步骤乘以平均因子求得;
[0031] 所述加速深度神经网络算法的加速芯片的运算装置对于最大池化层的结果,是由向量加法处理运算步骤计算向量输出中每个神经元所对应的输入最大值求得;
[0032] 所述加速深度神经网络算法的加速芯片的运算装置对于卷积层以及全连接层的结果,是先使用向量加法处理运算步骤叠加输出神经元对应的部分和以及偏置,然后再由向量函数值运算步骤求得输出神经元值;所述部分和为通过外界处理器求得后通过总线传输给所述运算装置;
[0033] 所述加速深度神经网络算法的加速芯片的运算装置对于局部响应归一化层的结果,是先用向量函数值运算步骤求得非线性函数值,然后再与输入层神经元通过向量乘加运算步骤相乘得到;
[0034] 所述加速深度神经网络算法的加速芯片的运算装置对于突触权重的变化量是通过向量乘加运算步骤将反向传播求得的残差和对应的输入神经元值相乘以及学习率因子相乘获得,所述反向传播求得的残差是通过外界处理器求得后通过总线传输给所述运算装置;
[0035] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中所产生的向量化的中间值存储于所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块中的中间值存储区域,且所述中间值存储区域可对主存储器进行读取与写入操作。
[0036] 本发明的加速深度神经网络算法的加速芯片的运算方法,其中,
[0037] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,生成输出值之后,存储于所述中间值存储区域内所述中间值将被丢弃。
[0038] 本发明的加速深度神经网络算法的加速芯片的运算方法,其中,
[0039] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,通过一索引访问所述中间值存储区域。
[0040] 本发明的加速深度神经网络算法的加速芯片的运算方法,其中,
[0041] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区内的、先前对所述索引指定的存储块未写入的位置执行读取,则中间存储拒绝此读取请求,被拒绝的读取请求返回的表示读取成功的状态为无效。
[0042] 本发明的加速深度神经网络算法的加速芯片的运算方法,其中,
[0043] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区内的、先前对所述索引指定的存储块已写入的位置执行写入,则中间存储拒绝此写入请求,被拒绝的写入请求返回的表示写入成功的状态为无效。
[0044] 本发明的效果在于:
[0045] (1)与将中间值存储到所述功能部件外部的存储器相比,将数据存储到所述功能部件外部的存储器需要等待的时间更长。
[0046] (2)与将中间值存储到所述功能部件外部的存储器相比,将数据存储到所述功能部件外部的存储器消耗的能量更多。
[0047] (3)与将中间值存储到所述功能部件外部的存储器相比,将数据存储到所述功能部件外部的存储器大大增加了对所述功能部件外部存储器的访问次数,容易造成所述功能部件外部存储器的访问冲突。
[0048] (4)功能部件生成所述输出值之后,存储于功能部件内所述中间值将被丢弃,这有利于增加可利用中间值存储器可使用单元,从而提高中间值存储器利用率。

附图说明

[0049] 图1为本发明的加速深度神经网络算法的加速芯片的运算装置各构成模块与主存之间的关系图;
[0050] 图2为CNN神经网络算法Max Pooling流程图;
[0051] 图3为CNN神经网络反向更新bias流程图;
[0052] 图4为本发明的加速深度神经网络算法的加速芯片的运算方法的流程图;
[0053] 图5为本发明的具有加速深度神经网络算法的加速芯片的运算装置的加速器芯片的简要结构图。
[0054] 附图标记说明
[0055] 1   向量加法处理器模块
[0056] 2   向量函数值运算器模块
[0057] 3   向量乘加器模块
[0058] 4   数据总线
[0059] 5   主存储器
[0060] 6、7、8  中间值存储区域
[0061] 10  加速深度神经网络算法的加速芯片的运算装置
[0062] 20  神经网络算法的加速芯片

具体实施方式

[0063] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的加速深度神经网络算法的加速芯片的运算装置及方法进行进一步详细说明。
[0064] 加速深度神经网络算法的加速芯片的运算装置是一个运算系统中的一部分,其通过数据总线来与外界处理器进行数据交互。图1为本发明的加速深度神经网络算法的加速芯片的运算装置的各构成模块与主存之间的关系图,该装置包括主存储器5、向量加法处理器1、向量函数值运算器2和向量乘加器3。其中,向量加法处理器1、向量函数值运算器向量2和向量乘加器3都含有中间值存储区域6、7、8,同时可对主存储器5进行读取与写入操作。向量加法处理器1被配置为进行多个(不少于两个)向量的加法或减法、深度神经网络算法中的各种类型的池化(pooling)层算法向量化的运算;向量函数值运算器2被配置为深度神经网络算法中的非线性求值的向量化运算,包括计算输出神经元值时的函数值和反向BP算法时导数值等的计算。向量乘加器,3被配置为进行向量乘加,可先计算两个向量类似内积乘法各分量一一对应相乘,然后和第三个向量叠加或相减;或者反之,两个向量进行加法或减法运算,然后和第三个向量如前面所述相乘;其中,前面所述的三个功能模块被配置为执行可编程指令进行运算,个体之间互相交互以计算神经网络中间层神经元值、网络输出结果以及代表中间层之间神经元作用强度的突触权重变化量等,交互内容为运算过程中产生的中间值。其中中间层包括:平均池化层、最大池化层、卷积层、全连接层、局部响应归一化层等。对于平均池化层的网络输出结果,是先由向量加法处理器模块计算向量输出中每个神经元所对应的输入累加值,然后用向量乘加器模块乘以平均因子求得;对于最大池化层的网络输出结果,是由向量加法处理器模块计算向量输出中每个神经元所对应的输入最大值求得;对于卷积层以及全连接层的网络输出结果,是先使用向量加法处理器模块叠加输出神经元对应的部分和以及偏置,然后再由向量函数值运算器模块求得输出神经元值,部分和为通过外界处理器求得后通过总线传输给此装置;对于局部响应归一化层的网络输出结果,则是先用向量函数值运算器模块求得非线性函数值,然后再与输入层神经元通过向量乘加器模块相乘得到;对于突触权重的变化量是通过向量乘加器模块将反向传播求得的残差和对应的输入神经元值相乘以及学习率因子相乘获得,反向传播求得的残差是通过外界处理器求得后通过总线传输给此装置。
[0065] 在所述计算过程中,所述的功能模块将产生大量的中间值被寄存于所述功能部件的中间值存储区域。由于本发明的运算装置具备用于加速深度神经网络算法的加速芯片的运算部件的三个功能部件具有中间值存储区域,因而可以存储计算过程中生成的中间值,而无需将它们写回到主存储器内。
[0066] 存储于所述功能部件的三个功能模块中的中间值存储区域内的中间值被功能模块它们自身或者其余两个功能模块所消耗,以便生成所希望的输出值。由于所述装置计算时基于向量化的神经元,从而所需的中间值存储区域为将相关部分神经元以及权重的存储量相当,因此所需的中间值存储区域所消耗的芯片面积、功耗保持在一个相对可承受的范围。
[0067] 所述装置的输出值包括:神经元值、网络输出结果、以及、代表层与层之间神经元作用强度的突触权重变化量。计算得出输出值后,与其相关的中间值被清除,以节省中间值存储区域存储单元,有利于提高中间值存储区域的利用率。
[0068] 所述功能部件的功能模块的中间值存储区域的行为类似随机存储区,通过一个索引(index)值访问中间值存储区域。同时,为了避免数据冲突而导致算法正确性受损,中间值存储区域具有冲突检测机制,对所述中间值存储区内的、先前对所述index指定的存储块未写入的位置执行读取,则中间存储拒绝此读取请求,返回的表示数据读取成功的标志无效;对所述中间值存储区内的、先前对所述index指定的存储块已写入的位置执行写入,则中间存储拒绝此写入请求,返回的表示数据写入成功的标志无效。
[0069] 在其他通用处理器实例中,神经网络算法的中间值被依次存储于被分配的主存储器区域中。在这些实例中,处理器和主存储器中间的高速缓冲存储器(Cache)缓存可用于存储中间值,从而对主存储器的中间值读取和写入次数,降低了中间值读取的时间延迟和能量消耗。然而,此方法受限于所采用Cache块大小以及块关联机制,可能导致频繁的Cache块缺失和替换,造成较高的性能、功耗损失。
[0070] 本发明将中间值存储于所述功能部件的三个功能模块的中间值存储区域,既减少了对主存储器的中间值读取和写入次数,又使中间值离使用它的功能模块距离更近,消耗的能量更低。而且,可避免前面提到的数据缺失和替换问题,提高了加速器芯片的加速性能。
[0071] 本发明的中间值存储区域还针对深度神经网络算法的特性进行了一些优化设计,支持响应指令通过计数器对某个中间值存储器地址连续写入读取多次,这对诸如卷积神经网络中的Pooling层之类的计算有很大提升。
[0072] 由于所述装置的三个功能模块之间互相交互的是计算产生的中间值,因而功能模块产生的中间值不仅被其自身所利用消耗,还可被其余的两个功能模块所使用。
[0073] 图2是一个流程图,示意性的表示卷积神经网络算法(CNN)的Max Pooling(最大池化)层,本发明采用向量化的Pooling方式,每个向量各个分量为连续相邻的feature map(特征映射)于同一位置的神经元。假设Pooling kenerl(池化核)大小为k×k。因此,每个Pooling输出层向量输出神经元计算需要k×k个输入层向量输入神经元,通过向量加法处理器1得出对应每个向量分量代表feature map上Pooling kenerl中输入神经元最大值,然后再通过向量函数值运算器2计算输出神经元值。
[0074] 此过程中,向量加法处理器1对同一中间值区域6某地址连续进行k×k-1次读取写入,最后一次写入的中间值被向量函数值运算器2利用计算输出层神经元值输出写入主存储器5。同时,存储所述中间值的中间值存储区域6该地址状态变化,可被再次写入一组中间值。
[0075] 图3是另一个流程图,示意性的表示CNN神经网络算法反向训练偏置(bias)的过程。根据算法公式:
[0076] b=η*delta+β*Δb'+Ω*b
[0077] 其中,Δb'为上次训练bias修改值,delta是反向传播梯度。依据算法,反向传播梯度delta=f'(ν)∑ω*delta',delta'为输出神经元的梯度值。
[0078] 计算过程中,ω*delta'部分和已被其余功能部件计算,因此,先通过向量加法处理器1将部分和叠加得到部分和总和中间值,同时通过向量函数值运算器2计算η*f',两组中间值分别存储于中间值存储区域6、7中,之后向量乘加器3计算出η*delta中间值,存储于中间值存储区域8。接下来,仍用向量乘加器3计算出η*delta+β*Δb'中间值并存储于中间值存储区域8同一位置,最后量乘加器3计算出η*delta+β*Δb'+Ω*b输出。此过程可通过编译器调节指令顺序使得其可流水线式完成,如此,既提高加速器芯片性能,又节省中间值存储区空间。
[0079] 另外,本发明还提供一种加速深度神经网络算法的加速芯片的运算方法,该方法使用上述的装置进行运算,如图4所示,包括以下步骤:
[0080] 向量加法处理运算步骤(步骤S1),在向量加法处理器模块依照指令进行多个向量的加法或减法、和/或深度神经网络算法中的pooling层算法的向量化的运算;
[0081] 向量函数值运算步骤(步骤S2),在向量函数值运算器模块依照指令进行深度神经网络算法中的非线性求值的向量化运算;
[0082] 向量乘加运算步骤(步骤S3),在向量乘加器模块依照指令进行向量乘加运算;
[0083] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤互相交互以计算神经网络的神经元值、网络输出结果以及代表层与层之间神经元作用强度的突触权重变化量;
[0084] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中所产生的向量化的中间值存储于所述向量加法处理器模块、向量函数值运算器模块、和向量乘加器模块中的中间值存储区域,且所述中间值存储区域可对主存储器进行读取与写入操作。
[0085] 本发明的提高神经网络算法的加速芯片的加速性能的方法,其中,
[0086] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,生成输出值之后,存储于所述中间值存储区域内所述中间值将被丢弃。
[0087] 本发明的提高神经网络算法的加速芯片的加速性能的方法,其中,
[0088] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,通过一index访问所述中间值存储区域。
[0089] 本发明的提高神经网络算法的加速芯片的加速性能的方法,其中,
[0090] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区内的、先前对所述index指定的存储块未写入的位置执行读取,则中间存储拒绝此读取请求,被拒绝的读取请求返回的表示读取成功的状态为无效。
[0091] 本发明的提高神经网络算法的加速芯片的加速性能的方法,其中,
[0092] 所述向量加法处理运算步骤、向量函数值运算步骤、和向量乘加运算步骤中,对所述中间值存储区内的、先前对所述index指定的存储块已写入的位置执行写入,则中间存储拒绝此写入请求,被拒绝的写入请求返回的表示写入成功的状态为无效。
[0093] 图5为本发明的具有加速深度神经网络算法的加速芯片的运算装置的加速器芯片的简要结构图。
[0094] 本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶合、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0095] 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。
[0096] 在本发明中,“模块”、“装置”、“系统”等等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。
[0097] 而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外相同的要素。
[0098] 而且,上文中的“和/或”表示本文既包含了“和”的关系,也包含了“或”的关系,其中,如果方案A与方案B是“和”的关系,则表示某实施例中可以同时包括方案A和方案B;如果方案A与方案B是“或”的关系,则表示某实施例中可以单独包括方案A,或者单独包括方案B。
[0099] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应当理解可由计算机程序指令实现流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0100] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定的方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0101] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0102] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0103] 以上对本发明所提供的加速深度神经网络算法的加速芯片的运算装置及方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限值。