高速全连接计算的硬件实现装置与方法与流程

文档序号:17625225发布日期:2019-05-10 23:35阅读:130来源:国知局
高速全连接计算的硬件实现装置与方法与流程

本发明涉及人工神经网络,更具体涉及高速全连接计算的硬件实现装置与方法。



背景技术:

深度学习(deeplearning)的概念源于人工神经网络(ann)的研究,是机器学习中一种基于对数据进行表征学习的方法。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合底层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

深度学习比较经典的网络alexnet的网络模型是卷积层(conv)+池化层(pooling)+全连接层(fc)+softmax层,全连接层起到将学习到的分布式特征表示映射到样本标记空间的作用。

全连接层的每一个结点都与上一层的所有结点相连,用来把前面提取到的特征综合起来。图1是一个简单的人工神经网络结构的示意图。如图1所示,前向计算过程就是一个线性的加权求和的过程,全连接层的每一个输出都可以看成前一层的每一个结点乘以一个权重系数w,最后加上一个偏置值b得到。用矩阵形式可表达为:

神经网络的全连接层(fc)运算中,每一个输入都要与所有的权重进行乘加运算,所以涉及计算的数据量大,硬件带宽需求高。针对这一特点进行合理的设计将可达到降低数据的硬件带宽需求,提高计算效率的目的。



技术实现要素:

如上所述,本发明针对神经网络的全连接层运算中的上述特点进行合理的设计,以达到降低数据的硬件带宽需求,从而提高计算效率的目的。

本发明设计了一种专用电路,用于实现神经网络全连接运算。本发明的目的在于提供一种fc加速器的实现装置,以便fc计算数据复用高、接口需求低,实现高算力、高性能。

为了实现上述目的,结合fc计算量大的特点,本发明提供一种高速fc计算的硬件实现装置及方法。

根据本发明的第一方面,提供一种高速全连接计算的硬件实现装置,其可以包括:权重存储模块,用于存储用于计算的权重数据,每次存储m组权重数据,直到所有输出通道的权重计算完成;向量存储模块,用于存储n个输入向量数据;输出寄存模块,用于实现计算结果的输出缓存;核心计算模块,用于使得由所述权重存储模块输入的m组权重数据与由所述向量存储模块输入的n个输入向量数据进行相乘,各个相乘结果分别与之前的有效结果相加,并在乘加计算的结果上加上对应的偏置值,将最终计算结果输出到所述输出寄存模块。

在根据本发明第一方面的高速全连接计算的硬件实现装置中,针对所述权重存储模块中的权重数据存储、所述向量存储模块中的输入向量数据存储和所述核心计算模块中的中间计算结果存储,可以采用乒乓缓存。

在根据本发明第一方面的高速全连接计算的硬件实现装置中,所述核心计算模块可以包括m*n个计算核,从而可以同时实现m组权重数据和n个输入向量的相乘运算。

在根据本发明第一方面的高速全连接计算的硬件实现装置中,m和n的取值可以是以下情况之一:m=4,n=4;m=8,n=4;或m=4,n=8。

根据本发明的第二方面,提供一种高速全连接计算的硬件实现方法,其可以包括:(1)加载m组权重数据到权重存储模块中存储;(2)请求输入向量数据并将接收到的n个输入向量数据存储在向量存储模块;(3)当所述权重存储模块和所述向量存储模块均有可进行计算的数据时,分别从上述两个模块读取m组权重数据和n个输入向量数据并送入核心计算模块;(4)所述核心计算模块对分别接收到的权重数据和输入向量数据进行相乘运算,并将各个相乘结果与之前的有效结果相加,依次流水完成输入通道的数据乘加运算;(5)将步骤(4)的乘加运算结果与对应的偏置数据相加,完成本次计算对应的输入通道的所有全连接运算,并将运算结果输出给输出寄存模块;(6)所述输出寄存模块输出结果数据给目标接口;(7)重复步骤(1)到(6),直到所有全连接运算完成。

在根据本发明第二方面的高速全连接计算的硬件实现方法中,针对所述权重存储模块中的权重数据存储、所述向量存储模块中的输入向量数据存储和所述核心计算模块中的中间计算结果存储,可以采用乒乓缓存。

在根据本发明第二方面的高速全连接计算的硬件实现方法中,所述核心计算模块可以包括m*n个计算核,从而在步骤(4)可以同时实现m组权重数据和n个输入向量的相乘运算。

在根据本发明第二方面的高速全连接计算的硬件实现方法中,m和n的取值可以是以下情况之一:m=4,n=4;m=8,n=4;或m=4,n=8。

根据本发明的第三方面,提供一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,使得处理器执行高速全连接计算的硬件实现方法,可以包括如下操作:(1)加载m组权重数据到权重存储模块中存储;(2)请求输入向量数据并将接收到的n个输入向量数据存储在向量存储模块;(3)当所述权重存储模块和所述向量存储模块均有可进行计算的数据时,分别从上述两个模块读取m组权重数据和n个输入向量数据并送入核心计算模块;(4)所述核心计算模块对分别接收到的权重数据和输入向量数据进行相乘运算,并将各个相乘结果与之前的有效结果相加,依次流水完成输入通道的数据乘加运算;(5)将步骤(4)的乘加运算结果与对应的偏置数据相加,完成本次计算对应的输入通道的所有全连接运算,并将运算结果输出给输出寄存模块;(6)所述输出寄存模块输出结果数据给目标接口;(7)重复步骤(1)到(6),直到所有全连接运算完成。

在根据本发明第三方面的计算机可读介质中,m和n的取值可以是以下情况之一:m=4,n=4;m=8,n=4;或m=4,n=8。

附图说明

下面参考附图结合实施例说明本发明。在附图中:

图1是一个简单的人工神经网络结构的示意图;

图2是根据本发明的高速全连接计算的硬件实现装置的示意图;

图3是根据本发明的高速全连接计算的硬件实现方法的流程图;

图4是根据本发明的第一优选实施例的硬件实现装置的示意图;

图5是根据本发明的第二优选实施例的硬件实现装置的示意图。

具体实施方式

附图仅用于示例说明,不能理解为对本发明的限制。下面结合附图和实施例对本发明的技术方案做进一步的说明。

为了实现本发明的目的,结合全连接(fc)计算量大的特点,本发明提供一种高速fc计算装置,该装置包括但不限于权重存储模块、向量存储模块、输出寄存模块和核心计算模块等。

图2是根据本发明的高速全连接计算的硬件实现装置的示意图。

如图2中所示,下面描述根据本发明的高速全连接计算的硬件实现装置200的组成。

权重存储模块210:该模块存储用于计算的权重数据。本设计采用权重共享的方式实现fc功能,即每次将部分的权重与所有的输入完成运算后,再更新权重数据,直到所有的输入向量全部被计算完成。优选地,设计采用每次缓存4组权重,乒乓缓存,直到所有输出通道的权重计算完成。

向量存储模块220:由于设计采用的权重共享实现,所以对向量存储的需求较低,当有例如4个输入数据有效时即可开始计算,计算流水进行,这样仅需在该模块增加一些寄存来实现少量数据的寄存即可,设计采用两组寄存器,每组可以寄存4个数据,乒乓实现。当输入数据接口的带宽不足时,可将其缓存适当扩大,防止对计算效率造成影响。

输出寄存模块230:其设计与输入存储模块类似,实现计算结果的输出缓存,可根据接口带宽而调节输出缓存大小,防止由于结果未发出而使得fc运算得到反压,影响计算效率。

核心计算模块240:该模块实现输入和权重的乘加运算,并在计算结果上加上对应的偏置bias来完成。为了实现较高算力,在接口带宽允许下,可以通过不同数量计算核进行。优选地,设计采用16个计算核,同时实现4个权重数据和4个输入向量的运算,即4*4=16。

下面的优选实施例中进一步给出了计算实例。

根据以上的描述,可以概括出如下的内容。根据本发明的高速全连接计算的硬件实现装置可以包括:权重存储模块,用于存储用于计算的权重数据,每次存储m组权重数据,直到所有输出通道的权重计算完成;向量存储模块,用于存储n个输入向量数据;输出寄存模块,用于实现计算结果的输出缓存;核心计算模块,用于使得由所述权重存储模块输入的m组权重数据与由所述向量存储模块输入的n个输入向量数据进行相乘,各个相乘结果分别与之前的有效结果相加,并在乘加计算的结果上加上对应的偏置值,将最终计算结果输出到所述输出寄存模块。

一般地,核心计算模块可以包括m*n个计算核,从而可以同时实现m组权重数据和n个输入向量的相乘运算。

这里需要注意的是,m和n的取值,往往是根据实际的计算硬件情况而确定的,本领域技术人员应该明白如何合理设置m和n的取值,以便利用现有的计算硬件资源而取得理想的算力。如上所述,在优选实施例中,m和n的取值可以分别是m=4和n=4。本领域技术人员应当理解,在实际实现中,m和n的取值也可以是其他的情况。另外可参见下文进一步讨论的优选实施例。

此外,针对所述权重存储模块中的权重数据存储、所述向量存储模块中的输入向量数据存储和所述核心计算模块中的中间计算结果存储,可以采用乒乓缓存。这也可以作为本发明的优选实施方式。

本发明还提供了一种高速fc计算的方法,具体步骤为:

步骤1:加载权重数据到权重存储模块;

步骤2:请求向量数据并将接收到的数据存储在向量存储模块;

步骤3:当权重存储模块和向量存储模块均有可进行计算的数据时,分别从上述模块各读取4个数据并送入核心计算模块;

步骤4:核心计算模块对接收到的数据两两进行乘运算,并将结果与前次有效结果相加,依次流水完成输入通道(inputchannel)的数据乘加运算;

步骤5:将步骤4的乘加运算结果和对应的偏置数据相加,完成本次计算对应的输入通道fc的所有运算,并将运算结果输出给输出寄存模块;

步骤6:输出寄存模块输出结果数据给目标接口;

步骤7:重复步骤1到步骤6,直到所有fc运算完成。

基于高效率计算的设计,分别对缓存单元进行乒乓设计,包括权重存储、向量存储和计算结果存储等。这样,可以在步骤4运算时同时并行的开始步骤1和步骤2及步骤6。这样将会充分的发挥核心计算模块的性能,实现完全流水的计算,达到高算力、高性能的目的。

根据以上的描述,更一般地,可以参看图3。图3是根据本发明的高速全连接计算的硬件实现方法的流程图。

如图3中所示,根据本发明的高速全连接计算的硬件实现方法300可以开始于步骤s310,在此步骤,加载m组权重数据到权重存储模块中存储。

与此同时,在步骤s320,请求输入向量数据并将接收到的n个输入向量数据存储在向量存储模块。

如上所述,这里需要注意的是,m和n的取值,往往是根据实际的计算硬件情况而确定的,本领域技术人员应该明白如何合理设置m和n的取值,以便利用现有的计算硬件资源而取得理想的算力。例如,m和n的取值可以是m=4,n=4。

当所述权重存储模块和所述向量存储模块均有可进行计算的数据时,在步骤s330,分别从上述两个模块读取m组权重数据和n个输入向量数据并送入核心计算模块。

接下来,在步骤s340,所述核心计算模块对分别接收到的权重数据和输入向量数据进行相乘运算,并将各个相乘结果与之前的有效结果相加,依次流水完成输入通道的数据乘加运算。

在方法300中,核心计算模块可以包括m*n个计算核,从而在步骤s340中可以同时实现m组权重数据和n个输入向量的相乘运算。

在步骤s350,将步骤s340的乘加运算结果与对应的偏置数据相加,完成本次计算对应的输入通道的所有全连接运算,并将运算结果输出给输出寄存模块。

如上所述,针对所述权重存储模块中的权重数据存储、所述向量存储模块中的输入向量数据存储和所述核心计算模块中的中间计算结果存储,可以采用乒乓缓存。

在步骤s360,所述输出寄存模块输出结果数据给目标接口。

之后,在步骤s370,判断是否所有全连接运算完成。如果步骤s370的判断结果为否定的,即还有全连接运算未进行,则方法300回到步骤s310,重复步骤s310到步骤s360。另一方面,如果步骤s370的判断结果为肯定的,即所有全连接运算都已完成,则方法300可以结束。

下面来看两个优选实施例。

图4是根据本发明的第一优选实施例的硬件实现装置的示意图。

如图4中所示,在第一优选实施例中,如果参与运算的输入通道(inputchannel)的数目为2048,并发(batch)数为210,输出通道(outputchannel)的数目为30,每个数据为32比特(bit)。首先加载权重数据4*2048*32bit到权重存储模块,在加载部分权重数据后请求加载向量数据到向量存储模块,每次加载数据量为4*32bit,当权重数据和向量数据均准备好后即开始计算,计算采用16(4*4)个dsp。计算完全流水,共享权重数据,向量数据流水输入,流水计算。当接口时钟频率为300mhz时,向量输入接口的数据速率为4.8gb/s,所完成的计算操作可达9.6gops,实现了较高了计算效率。

图5是根据本发明的第二优选实施例的硬件实现装置的示意图。

如图5中所示,在第二优选实施例中,假如接口数据速率可提高一倍的话,每次参与计算的权重数据为4个、向量数据为8个,或者增加权重数据的缓存量、接口速率保持不变,使得参与运算的权值数据为8个,向量数据为4个,采用32(4*8或8*4)个dsp同时参与运算,则可实现算力高达19.2gop。可见该装置具有良好的适应性,可较大程度的实现高性能计算。

换句话说,根据第二优选实施例,在本发明的装置200和方法300中,m和n的取值还可以是m=8,n=4或m=4,n=8。

综合第一和第二优选实施例,m和n的取值可以是以下情况之一:m=4,n=4;m=8,n=4;或m=4,n=8。

本领域普通技术人员应该认识到,本发明的方法可以实现为计算机程序。如上结合图3所述,根据上述实施例的方法可以执行一个或多个程序,包括指令来使得计算机或处理器执行结合附图所述的算法。这些程序可以使用各种类型的非瞬时计算机可读介质存储并提供给计算机或处理器。非瞬时计算机可读介质包括各种类型的有形存贮介质。非瞬时计算机可读介质的示例包括磁性记录介质(诸如软盘、磁带和硬盘驱动器)、磁光记录介质(诸如磁光盘)、cd-rom(紧凑盘只读存储器)、cd-r、cd-r/w以及半导体存储器(诸如rom、prom(可编程rom)、eprom(可擦写prom)、闪存rom和ram(随机存取存储器))。进一步,这些程序可以通过使用各种类型的瞬时计算机可读介质而提供给计算机。瞬时计算机可读介质的示例包括电信号、光信号和电磁波。瞬时计算机可读介质可以用于通过诸如电线和光纤的有线通信路径或无线通信路径提供程序给计算机。

因此,根据本发明,还可以提议一种计算机程序或一种计算机可读介质,用于记录可由处理器执行的指令,所述指令在被处理器执行时,使得处理器执行高速全连接计算的硬件实现方法,包括如下操作:(1)加载m组权重数据到权重存储模块中存储;(2)请求输入向量数据并将接收到的n个输入向量数据存储在向量存储模块;(3)当所述权重存储模块和所述向量存储模块均有可进行计算的数据时,分别从上述两个模块读取m组权重数据和n个输入向量数据并送入核心计算模块;(4)所述核心计算模块对分别接收到的权重数据和输入向量数据进行相乘运算,并将各个相乘结果与之前的有效结果相加,依次流水完成输入通道的数据乘加运算;(5)将步骤(4)的乘加运算结果与对应的偏置数据相加,完成本次计算对应的输入通道的所有全连接运算,并将运算结果输出给输出寄存模块;(6)所述输出寄存模块输出结果数据给目标接口;(7)重复步骤(1)到(6),直到所有全连接运算完成。

根据本发明的优选实施例,在如上的计算机可读介质中,m和n的取值可以是以下几种情况之一:m=4,n=4;m=8,n=4;或m=4,n=8。

上面已经描述了本发明的各种实施例和实施情形。但是,本发明的精神和范围不限于此。本领域技术人员将能够根据本发明的教导而做出更多的应用,而这些应用都在本发明的范围之内。

也就是说,本发明的上述实施例仅仅是为清楚说明本发明所做的举例,而非对本发明实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、替换或改进等,均应包含在本发明权利要求的保护范围之内。

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