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

一种基于行输入的轻量化神经网络加速器及其设计方法

文献发布时间:2024-04-18 20:02:18


一种基于行输入的轻量化神经网络加速器及其设计方法

技术领域

本发明属于神经网络加速器技术领域,具体涉及一种基于行输入的轻量化神经网络加速器及其设计方法。

背景技术

近年来,随着电子科学技术和人工智能的发展,CNN在目标检测、图像识别、语音处理等研究方向取得了重大突破,研究成果已被广泛应用在物联网设备、智能边缘设备中。然而随着对CNN的需求越来越高,层数加深,规模扩大,计算量呈指数级增加,对硬件计算资源的要求越来越高,致使其在工业领域落地应用及在边缘设备、移动设备上进行部署成为难点。同时这也为CNN硬件加速器的设计带来了巨大的挑战。其中,基于FPGA的CNN硬件加速器具有灵活性、高并行、低功耗、可重复编程的特性,越来越受到学术界和工业界的广泛关注。

由于FPGA片上资源有限,如何提高计算的并行度和数据的复用度并合理利用片上存储资源成为当前卷积神经网络加速器面临的主要问题。近年来,为了提高卷积神经网络硬件加速器的性能,许多学者也对其展开了大量的研究工作,如Zhang等人设计出一种SIMD(single instruction multipledata)神经网络加速器架构,并且提出了Roofline模型以优化资源利用率,有效地提高了循环流水的性能。Ma等人提出一种从输出特征图数、高度和宽度展开的架构,并且通过优化循环操作和数据流操作进行卷积神经网络加速,但该文将输入特征图和权重参数都缓存在片上,很难在低端FPGA上运行。Guo等人提出了一种将CNN模型部署至嵌入式FPGA设备的完整工具链Angel-EYE,其包含有效降低存储资源的量化策略、提高模型适应性的编译工具以及充分利用计算资源的并行结构。然而现有的卷积神经网络加速器方案大多数由于功耗高或者占用大量硬件资源,无法在边缘设备、小型设备和移动设备上进行部署。

发明内容

为了克服上述现有技术的不足,本发明提出了一种基于行输入的轻量化神经网络加速器及其设计方法,通过使用脉动阵列,提高数据的复用率,减少数据的访问次数,通过大量的PE单元就可实现并行操作,大大提高了运算的效率;同时通过时间调度,对脉动阵列进行复用,大大的减少了资源的占用和降低了PE单元的闲置时间,提高了硬件资源的利用率。

本发明所采用的技术方案是:

本发明提供一种基于行输入的轻量化神经网络加速器,所述加速器包括:控制模块,输入缓存模块,卷积池化模块,RELU模块,输出缓存模块,全连接模块,比较模块;

所述控制模块分别与输入缓存模块、卷积池化模块、RELU模块、输出缓存模块、全连接模块和比较模块;所述输入缓存模块的输出端与卷积池化模块输入端连接;所述卷积池化模块的输出端与RELU模块的输入兑换连接;所述RELU模块的输出端与输出缓存模块的输入端连接;所述输出缓存模块的输出端与全连接模块的输入端连接;所述全连接模块的输出端与比较模块的输入端连接;

优选地,所述的卷积池化模块采用的是基于行输入的脉动阵列架构,其输入数据采用斜向传输的方式传递。

优选地,所述的全连接模块采用的是一维并行的脉动阵列架构,其输入数据采用广播的方式传递。

优选地,所述的比较模块,采用树状比较的形式进行比较,确定识别结果。

本发明还提供一种基于行输入的轻量化神经网络加速器的设计方法,所述方法包括如下步骤;

S1,利用所述输入缓存模块按行的形式获取输入特征图数据和权重数据,然后依次打拍传输到所述卷积池化模块的脉动阵列中;

S2,利用所述卷积池化模块中的每一个运算单元,对输入的所述特征图数据和权重数据进行乘加操作,在卷积池化模块的计算单元中,输入特征图数据斜向同时传输到下一个计算单元中,权重数据打一拍横向传输到下一个计算单元中,乘加结果打一拍传输到下一行的计算单元中,最后一行的计算单元输出端都与累加器输入端相连,对乘加结果进行累加;

S3,利用所述RELU模块将卷积池化模块输出的结果进行处理,把负数的结果变成0;

S4,利用所述输出缓存模块使用BRAM对所述RELU模块输出的结果进行缓存,方便对RELU模块输出的结果进行复用或者输出到所述全连接模块;

S5,利用所述全连接模块中的每一个计算单元对输入的所述特征图数据和权重数据进行乘加操作,每一个计算单元的乘加结果输出端都与累加器输入端进行连接,对乘加结果进行累加;

S6,利用所述比较器模块对所述全连接模块输出的结果进行树状比较,确定识别结果。

优选地,所述S1中,所述特征图数据是PC通过以太网传输到FPGA上,所述权重数据是提前存储在ROM中。

优选地,所述S2中,将卷积计算转化成行向量的内积运算,以第一行卷积结果为例,输出矩阵的第一行数据只与输入矩阵的第一行和第二行有关,转换成行向量后,第一行卷积计算可以通过计算向量(x1,x2)

与现有技术相比,本发明的有益技术效果体现在:

本发明使用了基于行输入的脉动阵列架构,采用脉动阵列的好处在于所用的PE单元结构简单,设计成本低,适合进行大规模有规律的乘加运算;其次基于行输入,采用向量内积的形式实现卷积运算,无需对数据进行预处理,减少硬件资源的消耗,极大程度的提高了数据的复用率。

本发明结合网络层级特征进行层内并行优化,实现多卷积核并行运算,减少了PE因加速器规模过大而处于闲置状态的时间。同时将平均池化转换成卷积运算,可以将多个卷积层和池化层都复用到同一个脉动阵列上实现,大幅度降低了卷积神经网络的硬件资源消耗。通过对脉动阵列进行复用,避免了大量的PE单元出现长时间处于闲置的状态,从而提高了硬件资源的利用率。

附图说明

图1本发明采用的硬件加速器整体硬件结构图。

图2本发明采用的基于行向量实现卷积运算的示意图。

图3本发明采用改进的卷积池化脉动阵列结构示意图。

图4本发明采用的全连接脉动阵列结构示意图。

具体实施方式

下面结合附图和以Lenet-5网络为具体实施例对本发明作进一步的说明;

本发明提供一种基于行输入的轻量化神经网络加速器及其设计方法,如图1所示,包括:控制模块,输入缓存模块,卷积池化模块,RELU模块,输出缓存模块,全连接模块,比较模块;

PC端通过以太网将输入特征图信息发送到FPGA上;

输入缓存模块将权重数据从ROM中读出,然后与输入特征图信息一起缓存起来,按节拍将输入特征图信息斜向广播到卷积池化模块中,按节拍将权重信息横向传输到卷积池化模块中;

卷积池化模块计算过程如图2所示,输出矩阵的第一行数据只与输入矩阵的第一行和第二行有关。转换成行向量后,第一行卷积计算可以通过计算向量(x1,x2)

卷积池化脉动阵列模块优化后的结构如图3所示,由于输入数据采用斜向填充,阵列从左上往右下运行,当运行到右下时,左上部分的PE单元处于闲置状态;为减少PE单元闲置时间。根据第一层和第二层卷积输出的维度,对卷积池化脉动阵列进行优化,将阵列分成3个子阵列,3个子阵列并行计算,在进行第二层卷积运算时,可以实现多卷积核并行运算。结果累加器对每一列最后一个PE的输出进行累加;

为适应卷积脉动阵列,池化层采用平均池化,相当于用一个元素全是1的卷积核对输入进行滑动卷积;

RELU模块将输入的数据中的负数直0;

输出缓存模块将输入的数据用BRAM存储起来,方便对其进行复用或者传输到全连接模块中;

在全连接脉动阵列中,如图4所示,其PE单元数量可以根据所需情况自己设定,输入数据以广播的形式同时传输到所有PE单元中,其中X(n)表示卷积池化后的结果,K(n)表示全连接层中某一个神经元的权重数据;

比较器对卷积神经网络的输出进行比较,选出最大值,确定识别类型,并将结果通过以太网发送到PC上。

技术分类

06120116581755