可重构卷积神经网络加速器设计与实现*

2022-02-28 13:52邓军勇谢晓燕
传感器与微系统 2022年2期
关键词:寄存器加速器能效

王 肖, 邓军勇, 谢晓燕

(1.西安邮电大学 电子工程学院,陕西 西安 710121; 2.西安邮电大学 计算机学院,陕西 西安 710121)

0 引 言

目前,基于FPGA的加速器设计工作大多是以减少访存次数或者提升计算吞吐量来优化性能或能效,如文献[3]中Eyeriss提出了一种行固定数据流来减少数据移动来提高能效;文献[4]针对在计算资源和存储带宽受限情况下,通过提高加速器的计算并行度来提高能效;文献[5]通过定点量化、激活函数近似、流水线并行化等方法来优化加速器的性能。然而,由于卷积神经网络的多样性,给加速器的高能效设计和数据复用带来了挑战,通常一种处理引擎只能处理一种卷积核,卷积核种类和计算资源之间的不匹配导致资源利用率的下降。针对此类问题,一些学者提出了可重构卷积神经网络加速器的设计方法,文献[6]提出了一种细粒度可支持多种卷积神经网络的可重构加速器,由484个PEs构成22×22矩阵的异构阵列,并且采用多级内存层次结构提供更高的计算并行度;然而该设计是将整个22×22矩阵阵列展开,导致加速器面积较大,功耗较高。文献[7,8]提出了一种基于FPGA可重构卷积神经网络加速器,利用基本处理单元作为计算引擎的构建块,处理单元可扩展为支持多种网络体系结构,虽然可以支持多种网络结构的处理,但由于重构方式不理想,导致通过基本处理单元扩展为支持多种网络结构的处理单元会造成部分计算单元的浪费以及不必要的数据搬移。

针对当前卷积神经网络加速器难以在实现高能效的同时卷积处理引擎灵活地适应多种卷积核,本文提出一种卷积神经网络的可重构加速器设计方案。

1 卷积神经网络模型分析

卷积神经网络通常由卷积层、池化层和全连接层构成,如图1所示,其中的K,S分别代表卷积核的大小和卷积步长。通常不同的卷积神经网络的卷积层通常体现在这些参数的差异上,如AlexNet 的k2=5,k3,k4,k5=3,LeNet-5网络的k1,k2,k3=5。

图1 卷积神经网络结构

从卷积神经网络算法层面上来看,卷积层的数据复用关系和并行处理方式[8,9]具有以下特点:

1)卷积核在图像上移动,会存在部分重复数据,可以直接用于下一次卷积运算。

2)多个卷积核和同一幅图像做卷积运算,生成的多个卷积输出通道可以做并行计算处理。

3)当处理多幅图像时,同一个卷积核与多幅图像做卷积计算,卷积核在多张图像上实现共享。

通过上述分析,卷积神经网络是一种规律可循的模型,模型的计算方式是逐层计算,并且每一层卷积计算是相对独立的,根据网络当前层的处理需要分配合适的处理单元进行计算,这种计算方式适合采用可重构的设计方法。不同的重构方式,对硬件计算单元的利用率不同,因此采用合适的重构设计方式,并利用卷积层中的数据复用关系和多通道并行处理能力,通过改变PE的数据通路实现不同卷积的处理,不仅可以节省大量的硬件资源,同时可以加速不同的卷积神经网络模型。

3) CTV与常规油船外输软管连接。启动CTV软管收放滚筒,由艉部服务吊机协助,将外输软管放到辅助拖船上,拖船将软管拖到常规油船中部,油船吊机将软管吊至油船集管区,与接油管连接好。

由于卷积层计算的密集性给加速器的设计带来了诸多挑战,采用多处理器(PE)的设计方式实现并行处理是必要的选择[10]。在卷积层中使用较小的卷积核可以保持网络性能的同时降低计算复杂度,因此,本文设计采用3×3大小卷积核作为基础PE,以适应卷积神经网络模型中的大多数层,考虑到FPGA有限的硬件资源和加速器的低功耗设计,设计一个由18个PE组成的处理器阵列。

2 卷积神经网络可重构设计

2.1 整体结构

根据上述对卷积神经网络可重构方案分析和文献[4,7,10],提出本文的加速器架构,硬件的整体结构如图2所示,主要由计算核堆、片上缓冲区、控制器组成。其中,计算核堆承担了卷积神经网络中的主要计算任务,片上缓冲区包括输入缓冲、权值缓存和输出缓冲三个部分,分别用于存储即将被计算核消耗的数据、各种大小的卷积核和计算核生成的中间数据。控制器控制接收和发送信息给其他四个部分,控制每部分的状态并检查当前状态是否可以运行。

图2 加速器结构

2.2 计算核设计

计算核模块主要包括卷积器单元、加法树单元、非线性单元和池化单元,计算核的计算流程如图3所示,实线计算路径进行3×3卷积运算,虚线计算路径进行5×5卷积运算。

图3 计算核总体结构

2.3 PE结构设计

本文设计的基础PE如图4所示,其中,寄存器堆由9个寄存器组成,主要功能是暂存乘法运算后得到的9个数据,在AlexNet网络中,当计算3×3大小卷积时,步长为1,计算一次卷积计算会有6个数据可以在下一次卷积运算中实现复用,根据电路的设计,9个寄存器采用流水线的设计方式,每次处理时更新一个数据,三个时钟周期即可完成3个数据的更新,并与保留的6个寄存器数据做加法操作,如此迭代,可以在每次卷积运算中减少6次乘法计算,有效减少处理时间。

图4 基础PE结构

PE的重构通过多个基础PE组合来实现,为了尽可能提高计算资源的利用率,采用图5所示的重构计算方式,当处理5×5卷积运算时,设计由3个基础PE组合来完成,在处理之前首先利用控制器对特征图进行预处理,对特征图上的每个权值进行标记,使得PE可以根据地址找到需要处理的特征图区域,例如,调用PE0,PE1,PE2完成一次5×5卷积计算时,需要通过控制器控制PE处理的地址,定义PE0的处理地址从0到8;定义PE1处理的地址从9到17;定义PE2的地址从18到24;三个PE对同一幅特征图做卷积计算,完成卷积运算后将三个寄存器堆中的数据求和完成一次5×5卷积运算,构建的5×5处理PE结构如图5(a)所示。5×5卷积过程如图5(b)所示,PE0,PE1,PE2分别和空白区域、深灰色区域、浅灰色区域做卷积计算,每个PE的控制器控制其区域的移动,直到完成整个特征图的卷积运算,三个PE每完成一次滑窗的卷积做一次加法完成一次5×5卷积运算。斜线区域是一次5×5卷积可以数据复用的部分,该区域的复用同时也划分为三个区域,白色区域由PE0中的寄存器存储,深灰色区域由PE1中的寄存器存储,浅灰色区域由PE2中的寄存器存储。每完成一次5×5卷积运算有20个数据可以用于下次的卷积运算,一次5×5卷积运算可以减少20次乘法计算,最大程度地利用有限的计算单元,而文献[8]的重构设计方式是利用4个3×3卷积核构建一个5×5卷积核,导致更多的计算单元被浪费,同时增加了不必要的数据搬移。因此相比于文献[6~8],本文在计算资源的利用率和系统功耗上优势明显。

图5 5×5卷积运算PE结构和处理过程

2.4 非线性单元设计

每一层卷积计算完成,会加上一个修正线性单元对数据进行非线性化,优势是在更高维度上对图像进行分类,本文采用ReLU作为激活函数,当输入为负时,输出值均为0,当输入为非负时,输出与输入的数值保持一致。计算公式如下

f(x)=max(0,x)

(1)

在池化层处理过程中,AlexNet网络采用3×3大小的池化窗口,使用一个临时缓存将上一层卷积计算结果保存,每一次的卷积输出都和这个临时缓存做比较,较大的数据继续存储在这个临时缓存中,较小的数据被丢弃,使用一个控制信号控制池化窗口的步长,完成一次池化后,重复以上的操作,直至完成一层的池化。

2.5 调度控制器设计

当接收到输入图像的像素信息时,首先对卷积神经网络算法要处理的网络层进行判断,确定当前处理层在整个网络中的位置后,根据网络算法对应层所需的数据进行块取数,在取出来的像素值和与之对应的权值进行卷积计算之前,对当前层所需要的卷积核大小进行判断,当前层计算3×3卷积核时,不需要进行调度,直接使用计算核堆中的PE进行卷积运算;若当前层计算5×5卷积核时,需要调度计算核堆中的3个3×3的PE来处理一个5×5卷积核。在完成一层的计算操作后,判断若当前层数小于整个网络的层数时,重复上面的运算操作;若判断当前层等于整个网络的层数时,整个网路完成数据处理,计算结束得到最终结果。

3 实验结果

为了验证所提出的卷积神经网络加速器,采用Xilinx公司的Vivado2017.4开发环境进行功能仿真和综合验证,通过Xilinx公司的ZYNQ系列芯片XC7Z045开发板对设计的加速器进行综合测试。

传统方法完成一次5×5卷积需要25次乘法和24次加法共需要26个时钟周期。本文完成一次3×3卷积需要10个时钟周期,完成一次5×5卷积仅需要11个时钟周期,其中,C2生成27×27×96×256个卷积结果,C3生成13×13×256×384个卷积结果,C4生成13×13×384×384个卷积结果,C5生成13×13×384×256个卷积结果,对应层所需时钟周期数如表1所示。

表1 卷积层计算时间

表1是AlexNet网络计算时间,本文的特征图和文献[11,12]处理的特征图数量不同,文献[11,12]的第二层输入只有7张特征图,输出64张特征图,而本文第二层的输入特征图数量有96张特征图,输出了256张特征图,相比于文献[11,12]处理的数据量更多。通过输入特征图的归一化处理,在同时处理单张输入特征图时,相比于文献[11,12],本文设计的加速器花费的时间更少,加速器处理时间减少了98.95 %。

表2是各种卷积神经网络加速器的性能对比,从表2可以看出,相比于文献[4,6,13],本文设计的加速器占用较少的硬件资源,同时可以处理多种如LeNet—5、VGG等采用3×3或5×5大小卷积的神经网络,在灵活性和高能效上优势明显,同时能效比达到了16.89 Gop/s/W,本文设计与文献[4,6,8,13]对比,能效比分别提升410 %,78 %,19 %,270 %。

表2 加速器性能对比

4 结束语

本文根据卷积神经网络逐层计算方式和卷积计算特点,设计了一种可重构的卷积神经网络加速器,该方案设计3×3大小的卷积核作为基础PE,利用3个基础PE构建5×5卷积核,并且每一个基础PE内部设计有寄存器堆用于暂存数据,寄存器之间采用流水线的设计方式,每次处理时更新一个数据,三个时钟周期即可完成3个数据的更新,并与之前保留的6个寄存器数据做加法操作,可以在每次卷积运算中减少6次乘法计算。构建5×5卷积核时,3个基础PE可以分别控制可数据复用的区域实现重构后的数据复用,每完成一次5×5卷积运算有20个数据可以用于下次的卷积运算,一次5×5卷积运算可以减少20次乘法计算。通过加速器处理时间实验对比,本文设计的加速器处理单张特征图时,处理时间仅需要51 074个时钟周期,并且加速器的功耗仅为1.8 W,低功耗的设计带来了16.89 Gop/s/W的高能效比,相比于当前典型设计,能效比分别有410 %,270 %,78 %,19 %的提升。

猜你喜欢
寄存器加速器能效
莫比斯加速器众创办公空间
知识快餐店 科学加速器
浅论执法中队如何在洪灾中发挥能效
全民小康路上的“加速器”
高效电动机能效检测关键问题分析
数字化赋能节能服务智慧化创新能效管理
Lite寄存器模型的设计与实现
“能效之星”产品目录(2018)
二进制翻译中动静结合的寄存器分配优化方法
移位寄存器及算术运算应用