南京大学学报(自然科学), 2020, 56(4): 581-590 doi: 10.13232/j.cnki.jnju.2020.04.016

基于FPGA的卷积神经网络加速模块设计

梅志伟1,2, 王维东,1,2

1.浙江大学信息与电子工程学院,杭州,310013

2.浙江大学⁃瑞芯微多媒体系统联合实验室,浙江大学信息与电子工程学院,杭州,310013

Design of Convolutional Neural Network acceleration module based on FPGA

Mei Zhiwei1,2, Wang Weidong,1,2

1.College of Information Science & Electronic Engineering,Zhejiang University,Hangzhou,310013,China

2.ZJU⁃Rock Chips Joint Laboratory of Multimedia System,College of Information Science & Electronic Engineering,Zhejiang University,Hangzhou,310013,China

通讯作者: E⁃mail:21760190@zju.edu.cn

收稿日期: 2020-06-05   网络出版日期: 2020-08-14

Received: 2020-06-05   Online: 2020-08-14

摘要

针对卷积神经网络前向推理硬件加速的研究,提出一种基于FPGA(Field Programmable Gate Array)的卷积神经网络加速模块,以期在资源受限的硬件平台中加速卷积运算.通过分析卷积神经网络基本结构与常见卷积神经网络的特性,设计了一种适用于常见卷积神经网络的硬件加速架构.在该架构中,采用分层次缓存数据与分类复用数据策略,优化卷积层片外访存总量,缓解带宽压力;在计算模块中,在输入输出通道上并行计算,设计了将乘加树与脉动阵列相结合的高效率计算阵列,兼顾了计算性能与资源消耗.实验结果表明,提出的加速模块运行VGG⁃16(Visual Geometry Group)卷积神经网络性能达到189.03 GOPS(Giga Operations per Second),在DSP(Digital Signal Processor)性能效率上优于大部分现有的解决方案,内存资源消耗比现有解决方案减少41%,适用于移动端卷积神经网络硬件加速.

关键词: 卷积神经网络 ; 硬件加速 ; FPGA ; 并行计算 ; 高效率乘加阵列

Abstract

To accelerate the convolutional operation of Convolutional Neural Network in resource⁃constrained hardware platforms,a Convolutional Neural Network acceleration module based on FPGA (Field Programmable Gate Array) is proposed. By analyzing the basic structure of Convolutional Neural Network and the characteristics of common Convolutional Neural Networks,a hardware acceleration architecture for common Convolutional Neural Networks is designed. In the above architecture,the strategies of hierarchical caching data and classified reusing data are adopted to minimize the total amount of external memory access data and reduce the pressure of bandwidth. Considering the computing performance and resource consumption,a high efficiency computing array is designed which combines multiplicative and additive tree with systolic array for parallel computation on input and output channels in the computing module. The experimental results show that the performance of the proposed acceleration module reaches 189.03 GOPS (Giga Operations per Second) when running VGG⁃16(Visual Geometry Group) Convolutional Neural Network,which is better than most of the existing solutions in terms of DSP performance efficiency,and 41% lower than the existing solutions in terms of memory resource consumption. The proposed module is suitable for hardware acceleration of mobile terminal Convolutional Neural Network.

Keywords: Convolutional Neural Network ; hardware acceleration ; FPGA ; parallel computation ; DSP performance efficiency

PDF (1316KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

梅志伟, 王维东. 基于FPGA的卷积神经网络加速模块设计. 南京大学学报(自然科学)[J], 2020, 56(4): 581-590 doi:10.13232/j.cnki.jnju.2020.04.016

Mei Zhiwei, Wang Weidong. Design of Convolutional Neural Network acceleration module based on FPGA. Journal of nanjing University[J], 2020, 56(4): 581-590 doi:10.13232/j.cnki.jnju.2020.04.016

随着人工智能(Artificial Intelligence,AI)的兴起,卷积神经网络(Convolutional Neural Network,CNN)算法在图像处理、分类识别、目标追踪等领域得到广泛的应用[1-2].卷积神经网络算法分为训练与推理两个部分,云端训练终端推理逐渐成为主流的趋势,在计算资源与内存带宽受限的情况下,移动端卷积神经网络算法前向推理硬件加速的研究引起越来越多的关注.卷积神经网络存在着大量的乘累加计算,在中央处理器(Central Processing Unit,CPU)上处理效率低、运行时间长.常见的CNN硬件加速实验平台为图形处理器(Graphics Processing Unit,GPU)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application Specific Integrated Circuit,ASIC)[3-4].GPU并行处理计算架构适合加速卷积神经网络,但功耗太大的缺点使其难以应用到嵌入式端;ASIC具有低功耗与高性能的优点,但研发周期长、成本高;FPGA通过硬件电路设计实现不同的功能,具有可配置、高性能和低功耗的特点,适合移动端的硬件加速研究.

对卷积神经网络硬件加速的研究集中在优化加速运算与减少内存访问两个方面.Chen et al[5]设计的DianNao架构通过专用数据通路控制单元调配模块协作,计算单元采用乘加树结构,利用流水线实现卷积加速运算,但并行度低、数据重复利用率低.Qiu et al[6]采用图像处理中常用的滤波器结构缓存输入特征图行数据,数据复用程度高,计算单元结构易于实现乘累加,但在硬件电路中卷积窗口确定,难以适应不同尺寸卷积核的卷积神经网络.Chen et al[7]的Eyeriss为减小能耗提出Row Stationary数据流设计,通过配置计算阵列映射最大化局部数据复用来实线能效的优化,但乘加(Multiply and Accumulate,MAC)阵列映射策略复杂、阵列互连线太多,难以提高阵列规模.Wei et al[8]与Jouppi et al[9]采用脉动阵列进行乘加阵列设计,脉动阵列中的局部互连网络及相邻计算单元之间的数据传输,使得大规模脉动阵列综合后可以在高频率时钟下工作,加速性能优异,但数据预处理部分逻辑复杂、存储资源消耗偏大.

本文分析常用卷积神经网络结构,提出一种适用于常见卷积神经网络的卷积加速模块,通过分层次缓存数据与分类复用数据缓解带宽压力,引入双缓冲机制实现加速模块各个部分流水线处理;加速模块内部计算单元将乘加树与脉动阵列相结合,兼顾性能与资源消耗,在输入输出通道上并行计算,在性能效率与存储资源消耗上取得较好的加速效果,适合移动端卷积神经网络硬件加速.

1 卷积神经网络的基础知识

在流程上,卷积神经网络算法分为训练与推理两个部分:训练大量样本确定卷积神经网络层间参数,测试样本经过训练后固定的卷积神经网络模型计算得到输出结果.训练与推理可以看作两个独立的部分,卷积神经网络算法的推理部分适合在移动端进行硬件加速.

1.1 卷积神经网络的基本结构

在结构上,卷积神经网络通用部分可分为三类:卷积层、池化层和全连接层.以经典卷积神经网络LeNet⁃5为例分析卷积神经网络基本结构,该网络除输入层外共分为七层,分别是卷积层C1/C3/C5、池化层S2/S4、全连接层F6和输出层(全连接层)(图1).

图1

图1   LeNet⁃5结构图

Fig.1   The structure of LeNet⁃5


Feng et al[10]指出卷积层的计算量占整个卷积神经网络计算量的90%以上,卷积神经网络硬件加速的核心在于对卷积层计算的加速.卷积层的输入为三维C×R×M(宽×高×通道)输入特征图和四维K×K×M×N(宽×高×输入通道×输出通道)权重卷积核,输出为三维W×H×N(宽×高×通道)输出特征图,中间运算为六重循环的乘加运算.卷积层运算的C语言代码见代码1,其中填充参数P根据是否需要补零的操作判断对输入特征图是否进行填充,S表示卷积运算窗口的滑动步长.卷积运算在填充后的输入特征图上依次截取K×K×M大小的特征图与同等大小的三维卷积核进行乘累加,得到输出特征图的一个数据,根据滑动步长从左到右、从上到下遍历输入特征图,得到二维W×H输出特征图.在卷积核的第四维通道N上,重复上述运算,得到三维W×H×N输出特征图.在卷积运算六重循环中,三重循环K×K×M为乘累加计算,三重循环W×H×N为并行计算,同时在卷积窗口滑动中,部分数据存在重复使用的情况,卷积层的计算特性为并行计算与数据复用提供了较大的设计空间.

代码1 卷积层运算C语言代码

Code 1 The C code of convolutional layer operation

for(k=0;k<N;k=k+1)∥loop for output channel

for(h=0;h<H;h=h+1)∥loop for output height

for(w=0;w<W;w=w+1)∥loop for output weight

new sum=0;

for(c=0;c<M;c=c+1)∥loop for input channel

for(r=0;r<K;r=r+1)∥loop for kernel height

for(s=0;s<K;s=s+1)∥loop for kernel weight

sum+=dinh×S-P+rw×S-P+sc×wtrsck
douthwk=sum;

池化层的操作为降采样,目的是进行特征提取,常用的方法有最大值池化和平均池化两种.以2×2的池化窗口为例,最大值池化取窗口中的最大值,平均池化计算平均值,经过2×2的池化操作后,输出特征图宽高各为原来的一半,输出通道不变.全连接层中特征图以一维向量的形式存在,输入与输出向量的结点是全连接的,目的是综合提取到的特征,全连接层多存在于卷积神经网络的后几层.全连接层输入和输出可以表示为1×1×M1×1×N的特征图,可以看成特殊的卷积运算.

1.2 常见卷积神经网络分析

卷积神经网络结构从经典的LeNet到后来的AlexNet,VGG⁃16,GoogleNet,Yolo等,整体上网络层数逐渐增加、参数量越来越大.

表1是四种常见的卷积神经网络部分参数的特性总结,从表中可以得出如下几点规律:

表1   常见卷积神经网络参数分析

Table 1  Parameteric analysis of common CNNs

卷积神经网络AlexNetVGG⁃16GoogleNet v1Yolo v3
卷积核尺寸3,5,1131,3,5,71,3,7
除第一层外通道数64~25632~51232~83232~1024
卷积层参数量2.3 M14.7 M6.0 M40.5 M
卷积层乘加数量666 M15.3 G1.43 G65.4 G
全连接层参数量58.6 M124 M1 M-
全连接层乘加数量58.6 M130 M1 M-

新窗口打开| 下载CSV


(1)卷积核的尺寸从1×1到11×11,不同卷积神经网络尺寸存在差异较大,图像滤波器处理结构不适用不同卷积尺寸的卷积神经网络,同时也表明卷积核尺寸维度不适合直接映射到MAC阵列上.

(2)第一层输入层通道数是输入图像通道数,后续卷积层通道数多为32的倍数,卷积运算在输入通道上是乘累加计算,在输出通道上是并行计算,通道数的规整适合进行并行计算设计.

(3)全连接层乘加数量与参数量基本一致,而卷积层参数量比乘加数量大2~3个数量级,表明卷积层参数多次重复参与计算,设计合适的缓存能够减少对片外内存的访问.

2 卷积神经网络加速模块设计

2.1 整体硬件架构

基于设计适用于多个常见卷积神经网络加速模块的目标,提出一种高并行度与高效率的卷积神经网络加速模块设计方案.图2为基于FPGA设计的卷积神经网络加速器整体硬件架构,其中与外围模块的通信采用AXI4(Advanced eXtensible Interface)总线.AXI4总线负责数据通信,AXI_Lite总线负责信号传输;外部控制单元多为CPU(嵌入式端ARM或主机端CPU),通过读写加速器内部寄存器控制FPGA逐层计算卷积神经网络.本文提出的卷积神经网络加速器主要包括寄存器、数据接口模块、卷积模块、池化模块和其他模块.卷积神经网络加速器内部寄存器包含内存地址信息和网络层参数等信息,数据接口模块完成对加速器与外部内存接口的数据传输请求应答,卷积模块完成对卷积层和全连接层的加速运算,池化模块完成池化层加速运算,其他模块包含一些控制逻辑,调度各个模块进行加速运算.

图2

图2   卷积神经网络加速器架构

Fig.2   The architecture of CNN accelerator


加速器核心计算模块为卷积模块,卷积模块在结构上分为内存直接访问单元(Direct Memory Access,DMA)、缓存、取数控制逻辑、乘加阵列和累加器.DMA最大化利用AXI协议中的burst传输模式,分块传输特征图与权重到片上缓存,将运算结果传输到外部内存中.缓存分为输入特征图、权重与输出特征图三个部分,缓存中数据多次参与卷积层乘加计算,在FPGA中缓存以BRAM(Block Random Access Memory)形式存在.取数控制逻辑根据开始与完成信号,将一整层的计算数据按照预定顺序传入计算单元,也即是乘加阵列和累加器.乘加阵列完成分块后的乘加计算,累加器完成分块后的数据累加,加上bias后进行激活,共同完成卷积运算.

卷积模块从功能上主要分数据存储与数据计算两个部分,过程处理上是取数和计算,各个部分之间是串行的.为了提升卷积模块加速性能,在卷积模块内部引入流水线技术,五层流水线分别对应结构上的五个部分,每个部分的结束信号对应前一个部分的开始信号.为了使流水线中取数部分与计算模块不产生阻塞,缓存采用双缓冲机制,使得缓存中两个子块交替进行取数与计算.

2.2 数据缓存与数据复用

卷积神经网络加速器中进行卷积层运算需从外部内存读取数据,耗时远大于加速器内部数据传输.利用FPGA内部存储缓存运算数据,合理设计数据复用策略,可以大幅减轻加速器与外部内存之间的带宽压力.在数据缓存上采用分层次缓存与双缓冲设计思想,加速器内部数据缓存分为三个层次:块数据缓存、阵列数据缓存、计算单元内部缓存.分块计算下的输入输出特征图和权重储存在块数据缓存中,用于乘加阵列计算的数据储存在阵列数据缓存中,计算中间结果储存在计算单元内部缓存中.

不考虑片上缓存与数据复用,每次参与乘加计算的数据均从外部内存读取,一次乘加计算需要一个输入特征图数据和一个权重数据参与.从卷积运算计算量上看,每层卷积运算从片外内存读取的数据总量是计算量的两倍,如式(1)所示:

totalnumberof readdatas=2×M×N×W×H×K×K

若加速器片上缓存足够大,先将输入特征图与数据全部存入片上缓存,充分复用数据.每次乘加计算从片上缓存中读取数据,则每层卷积运算从外部内存中读取的数据总量是输入特征图与权重两者之和,如式(2)所示:

totalnumberof readdatas=R×C×M+K×K×M×N

式(2)和式(1)相比,由于存在数据复用,在输入特征图和权重上从片外内存读取的数据量均有大幅度下降.将卷积计算中的数据复用分为输入特征图复用与权重复用,可细分为以下三种:

(1)输入特征图在平面维度上,卷积窗口滑动时上下左右相邻卷积窗口内部数据存在复用,输入特征图中大部分数据(边缘部分除外)复用(K/S)2次.

(2)输入特征图在输出通道维度上,不同卷积核复用同一特征图,输入特征图复用N次.

(3)对于权重(卷积核)而言,不同的卷积窗口复用同一卷积核得到输出特征图二维平面上的不同数据,权重复用次数为输出特征图平面大小W×H次.

对单层卷积神经网络进行运算时,第一种复用方式影响片上块缓存访问总量,第二种和第三种复用方式影响片外内存访问总量.

2.3 片外访存优化

卷积运算以分块的方式在加速器中进行计算,每次参与分块计算的输入特征图和权重储存在块数据缓存中.在卷积运算的六重循环中,卷积核宽/高两个维度数值相对较小,常见分块在输出特征图宽/高和输入输出通道四个维度进行分块.卷积运算在输入通道M维度上对应乘累加运算,在输入通道M上进行分块时,完成一次分块计算后写入外部内存的乘加和,是乘累加中间结果,下一次分块计算需要重新读取上一次计算结果,额外增加片外内存访问EMA(External Memory Access)数据总量.在输出特征图宽W和输出特征图高H两个维度进行分块时,有(K-S)行/列输入特征图在相邻分块计算时会重复读取,也会小幅度增加EMA数据总量.卷积分块维度选择、块缓存大小和数据复用方式共同影响EMA总量.基于EMA数据总量最小原则,优先选择在输出通道上进行分块.若只在输出通道维度上进行分块,则对应单层网络输入特征图需要全部缓存在FPGA片上,难以满足要求,因此考虑在高度上对输入特征图进行分块.本文在分块计算上选择在输出通道上对权重进行分块和在高度上对输入特征图进行分块,分析块缓存大小和不同复用方式对EMA总量的影响.

由于在输入通道M上不分块,每次分块计算后得到的乘加和,是三维K×K×M乘累加计算全部完成后的结果,片外内存数据写入量为定值N×W×H.EMA数据总量由片外内存输入特征图读取总量、权重读取总量和输出特征图写入总量三个部分组成.设定输入特征图分块读取次数为α,权重分块读取次数为β,对于选择输入特征图复用,意味着权重需要重复读取α次,EMA1数据总量如式(3)所示:

EMA1=R×C×M+(α-1)×(K-S)×C×M+α×K×K×M×N+W×H×N                 (3)

对于选择权重复用,则输入特征图需要重复读取β次,EMA2数据总量如式(4)所示:

EMA2=β×R×C×M+(α-1)×(K-S)×C×M+K×K×M×N+W×H×N                       (4)

其中,αβ由片上块缓存大小决定,两者计算如式(5)和式(6)所示:

α=R+(α-1)×(K-S)×C×M/B1
β=K×K×M×N/B2

其中,加速器内部输入特征图块缓存与权重块缓存大小为B1与B2,上述参数需要满足的约束条件如式(7)所示:

B1C×M×KB2K×K×M

近似计算,忽略输入特征图上读取时重叠行,EMA1与EMA2计算公式如式(8)和式(9)所示:

EMA1R×C×M+α×K×K×M×N+W×H×N
EMA2β×R×C×M+K×K×M×N+W×H×N

不同卷积神经网络数据参数总量差异较大,同一卷积神经网络不同层参数量也存在差别.2012年提出的AlexNet网络共有五层卷积层,输入特征图平面维度从第一个卷积层227×227变化到第5个卷积层13×13,卷积核有11×11,5×5,3×3三种尺度,不同卷积层之间参数变化幅度大,以AlexNet网络为例计算分析不同复用方式与不同片上块缓存大小对EMA的影响.

利用MATLAB对式(3)至式(9)联立求解,在复用输入特征图时,横轴B表示B1,在复用权重时,横轴B表示B2,纵轴表示EMA,其图形化显示如图3图5所示.无论选用哪种复用方式,EMA随B(B1/B2)的增大整体呈减小趋势,减小速率先快后慢,当B增大到一定数值时,EMA基本保持不变.对于不同卷积层,选用不同复用方式使EMA值最小时需要的最少片上块缓存不同.由图3可知,AlexNet第一个卷积层conv1使用权重复用在B1约为30 k时就能让EMA最小,而使用输入特征图复用则需要B2约为160 k;而在第四层conv4,选择特征图复用B1约为70 k,选择权重复用B2约为660 k时,才能使EMA最小.将AlexNet卷积层每层EMA数据量和所有层EMA数据量对于两种复用方式在不同输入块缓存上的影响绘制成图4图5,可知同一网络不同卷积层EMA在B较小时存在较大差别,对于AlexNet而言,若所有层都选择同一种复用方式,选择输入特征图复用性价比较高,B1取100 k即可使EMA最小.考虑到加速器对常见几种卷积神经网络的通用性,留有一定裕量,对于B1B2选取256 k大小的片上缓存,由于本次运算数据为16 bit定点数,片上输入块缓存大小B1B2分别为512 kb.针对不同卷积层根据片外访存总量最小原则,选择合适的数据复用方式.

图3

图3   片上缓存与复用方式对AlexNet不同卷积层EMA数据量的影响

Fig.3   The effects of on⁃chip caching and data resuing on EMA data in different convolutional layers of AlexNet


图5

图5   片上缓存与复用方式对AlexNet所有卷积层EMA数据量的影响

Fig.5   The effects of on⁃chip caching and data resuing on EMA data in all convolutional layers of AlexNet


图4

图4   片上缓存与复用方式对AlexNet单一卷积层EMA数据量的影响

Fig.4   The effects of on⁃chip caching and data resuing on EMA data in singal convolutional layer of AlexNet


2.4 并行计算设计

卷积运算中大量数据重复参加运算,一方面并行计算能减少计算模块对数据的重复读取,缓解带宽压力;另一方面,并行计算中多个计算单元同时参与计算,提升加速性能.选择合适的并行维度将运算映射到乘加阵列中,并行计算既需要适应硬件上的乘加阵列也要兼顾数据存储格式,便于乘加阵列于缓存中进行取数计算.

在卷积运算的六层循环中,三重计算W×H×N可以直接映射到并行维度上,三重乘累加计算K×K×M,先分块计算后在累加器中进行累加,并行计算设计依然成立.分析常见卷积神经网络中卷积层相关参数,卷积核大小K×K变动较大,从1×1到11×11,映射到固定的乘加阵列中并行计算,在大小变化后乘加阵列资源利用率偏低;输出特征图平面维度W×H随着网络层变深,整体呈递减趋势,且幅度较大,例如从227×227变为6×6.目前在这两个维度上并行计算,多采用分割和拼凑特征图的方法.输入输出通道M×N两个维度,除首层与末层外,输入输出特征图通道数多为32的倍数,合理地利用该特性能够在并行计算上取得较好的效果.本文在并行计算设计上选择输入输出通道两个维度,将其映射到二维乘加阵列上.为了配合并行计算,在FPGA内部数据存储上,参考英伟达(NVIDIA)开源项目中加速器NVDLA(NVIDIA Deep Learning Accelerator)中数据存储格式[11],参与分块计算的输入输出特征图按照(输入通道块、输入宽、输入高)格式存储,权重按照(输入通道块、输出通道块、卷积核宽、卷积核高)格式存储.设定输入并行因子为m,输出并行因子为n,在一个时钟周期内,乘加阵列计算完成m×n次乘加运算,其示意图见图6.

图6

图6   并行计算设计

Fig.6   The design of parallel computing


2.5 乘加阵列设计

卷积神经网络加速器的最高算力取决于计算单元的规模与时钟频率,实际算力受数据读写速度与计算单元资源效率制约.目前常用的几种计算单元为乘加树结构[5]、滤波器结构[6]和矩形乘加阵列[7-9].滤波器结构对于变卷积核的卷积层拓展性较差,本文计算单元借鉴上述结构,兼容到并行计算与高算力的指导思想,采用32×32矩形乘加阵列结构,共有1024个计算单元.输入并行因子m与输出并行因子n均为32,优先将输入通道与输出通道映射到矩阵维度,绝大部分卷积层在计算时能获得较高的计算资源利用率.乘加阵列计算完成后结果数据传输到32个累加器中,在累加器完成分块卷积计算后,计算结果写入块缓存中.

在矩形乘加阵列中有普通互连阵列与脉动阵列两种类型.普通阵列在各个计算单元之间互连线太多,单个数据要输出到所有单元,难以同时满足大规模阵列与高时钟的要求;脉动阵列各个计算单元只与周围连接,数据以脉动的形式从上到下、从左到右流动,计算单元时钟可以达到较高的频率.Wei et al[8]的脉动阵列在时序频率270.8 MHz时,加速性能为406.10 GOPS,但消耗BRAM资源多,还存在一定的计算空窗期.以32×32脉动阵列为例,数据读取与写入时需经63个周期所有计算资源才会同时开始计算.考虑到上述问题,本文提出32×32矩阵乘加阵列,在一个维度上采用互连的形式,一次性完成一个输入特征图数据与32个卷积核数据的并行计算,避免了重复读取数据;另一个维度同时完成输入特征图数据与卷积核数据在32个通道上的乘累加计算,在该维度上将采用脉动的形式传输计算数据,脉动规模为8,每个脉动单元内四个数据采用乘加树的结构进行计算,设计示意图见图7.该结构相对脉动阵列最高时序有所降低,但整体设计上考虑到了并行计算与数据复用,兼顾了性能与资源两个方面,利于在片上存储资源紧张的硬件上实现.

图7

图7   乘加阵列结构图

Fig.7   The architecture of MAC array


3 实验结果与分析

本次设计的卷积神经网络加速器基于FPGA平台开发,实现前向推理加速,实验平台为Xilinx公司开发的VC707开发板,开发板上拥有容量为1 GB的DDR3 SDRAM,FPGA型号为Virtex7系列的XC7VX485T⁃2FFG1761C.仿真环境为Xilinx公司提供的IDE开发环境Vivado 2017.04,代码编写采用verilog硬件描述语言.实验从卷积神经网络加速时间、硬件资源消耗和与其他基于FPGA的加速成果三个方面对比阐述加速效果,验证分析本文提出加速器的特性.

对于加速的卷积神经网络,选用AlexNet与VGG⁃16两种常见网络,其中全连接层也通过卷积加速模块进行运算.AlexNet卷积核有3×3,5×5,11×11三种,可以验证加速器对于不同尺寸卷积核网络的通用性.VGG⁃16计算量与数据量的量级较大,已有研究实验结果公布较多,便于分析比较.卷积加速模块运行时钟为100 MHz,输入数据为已经量化完成的16 bit输入特征图和权重,输出数据为16 bit的输出特征图,通过软件计算与硬件加速比较结果,验证加速模块的正确性.为了衡量计算单元效率,从乘加阵列开始运算到结束运算统计运行周期,用每层卷积乘加数量/(计算单元运行周期数×阵列规模),得到乘加阵列利用率.

上述设计的硬件加速器模块通过Vivado综合实现后,功耗为2.914 W.运行AlexNet硬件加速结果如表2所示,可以看出除第一层外,其他卷积层在卷积模块加速时资源利用率高,并且该卷积模块也能兼容全连接层的计算,拓展性好.其中第一层卷积层由于输入通道数为3,在输入通道并行度为32的计算单元上运行,乘加阵列效率低,时间偏长;全连接层加速也存在同样的问题.

表2   AlexNet硬件加速性能

Table 2  The hardware acceleration performance of AlexNet

AlexNet层数卷积核/步长时间(ms)乘加阵列效率
conv111×11/411.39.10%
conv25×5/14.498.42%
conv33×3/11.781.84%
conv43×3/12.683.66%
conv53×3/11.881.66%
fc16×6/112.13.07%
fc21×1/15.53.00%
fc31×1/11.42.74%

新窗口打开| 下载CSV


除第一层外的卷积层在加速运算时乘加阵列效率都在80%以上,差别主要在输入特征图映射到乘加阵列的效率不同.AlexNet与VGG⁃16卷积层加速效果见表3表4,其中卷积层单层最高性能达到204.39 GOPS,AlexNet所有卷积层的平均性能达到113.55 GOPS,VGG⁃16所有卷积层的平均性能达到189.03 GOPS.由于第一层卷积层的加速性能较低,而当卷积层数较多时,第一层卷积的计算量占比减小,因此在VGG⁃16的加速性能优于AlexNet.

表3   AlexNet卷积层加速性能

Table 3  The acceleration performance of convolutional layers of AlexNet

AlexNet网络层conv1conv2conv3conv4conv5卷积层
性能(GOPS)18.66203.59175.91172.52166.13113.55

新窗口打开| 下载CSV


表4   VGG⁃16卷积层加速性能

Table 4  The acceleration performance of convolutional layers of VGG⁃16

VGG⁃16网络层乘加数量时间(ms)性能(GOPS)乘加阵列效率
conv10.0867 G9.0619.279.35%
conv21.8496 G18.16203.7199.51%
conv30.9248 G9.05204.3999.80%
conv41.8497 G18.18203.4999.40%
conv50.9248 G9.06204.1699.73%
conv61.8497 G18.38201.2798.32%
conv71.8496 G18.18203.4999.40%
conv80.9248 G9.29199.1197.28%
conv91.8496 G18.58199.1197.27%
conv101.8496 G18.58199.1197.27%
conv110.4624 G5.32173.8485.03%
conv120.4624 G5.32173.8485.03%
conv130.4624 G5.32173.8485.03%
卷积层15.347 G162.48189.03

新窗口打开| 下载CSV


将提出的加速器在卷积层的加速结果与其他文献中的结果进行对比,其中AlexNet卷积层加速效果对比如表5所示,与VGG⁃16卷积层加速效果对比见表6.在AlexNet加速性能上,提出的加速器与文献[12-13]相比,本文加速器并行程度高,对不同尺寸卷积核适应性强,加速性能较好;与文献[8]的三维11×14×8计算阵列相比,规模与时序均有不足,性能存在差距.在VGG⁃16加速性能上,加速器与文献[13]相比加速效果较好,与文献[14]的加速性能基本一致,与文献[15]相比存在差距,存在差距的原因在于计算阵列规模与时序上有不足.在BRAM的使用上,本文加速器充分进行多种类型数据复用,优化片外访存,BRAM的资源使用量远小于其他文献,和内存资源消耗少的文献[14]相比,BRAM使用量节省41%.由于FPGA开发平台在工艺与资源上存在差别,在DSP性能效率上本文提出的加速器比文献[12-15]有更优异的性能表现,DSP性能效率提升33%.与文献[8]的加速器相比,本文加速器DSP性能效率在AlexNet加速上存在差距,主要是时钟频率差距带来的影响,但在BRAM使用上比文献[8]节省了约80%的内存.综上,本文提出的加速器从DSP性能效率与内存资源使用上看,综合表现优于当下的加速器,适合在移动端实现硬件加速.

表5   与其他加速器在AlexNet卷积层加速效果对比

Table 5  The acceleration performance of convolutional layers and other accelerators in AlexNet

AlexNet加速[12][13][8]本文方案
年份2015201620172020
FPGA

Virtex7

VX485T

Stratix⁃V GSD8Arria10 GT 1150

Virtex7

VX485T

时钟100 MHz120 MHz270.8 MHz100 MHz
数据32 bits16 bits32 bits16 bits
DSP224019631290588(21%)
BRAM102425672360288(28%)
性能(GOPS)61.6272.4406.10113.55

DSP性能效率

(GOPS/DSP)

0.0270.0370.3150.193

新窗口打开| 下载CSV


表6   与其他加速器在VGG⁃16卷积层加速效果对比

Table 6  The acceleration performance of convolutional layers and other accelerators in VGG⁃16

VGG⁃16加速[13][14][15]本文方案
年份2016201820182020
FPGAStratix⁃V GSD8Zynq XC7Z045Virtex7 VX690TVirtex7 VX485T
时钟120 MHz150 MHz150 MHz100 MHz
数据16 bits16 bits16 bits16 bits
DSP19637802833588(21%)
BRAM25674861248288(28%)
性能(GOPS)136.50187.80488.00189.03

DSP性能效率

(GOPS/DSP)

0.0700.2410.1720.321

新窗口打开| 下载CSV


4 总结与展望

本文深入分析卷积运算原理与常见卷积神经网络卷积层的参数特性,提出一种基于FPGA的卷积神经网络加速模块设计,对数据分层次缓存和对不同特性卷积层分类数据复用,将输入输出特征图通道分块映射到32×32乘加阵列进行并行计算;兼顾资源与性能,提出一种融合乘加树和脉动阵列的乘加阵列设计.该设计适用于不同卷积核的卷积层加速运算,也能兼顾全连接层加速运算.通过实验分析,提出的加速器在VGG⁃16卷积层的加速性能达到189.03 GOPS,在DSP性能效率上优于大部分现有解决方案,片上内存资源消耗比现有解决方案减少41%.从DSP性能效率与内存资源消耗两种参数联合看,加速效果最佳,适合在移动端进行硬件加速.

但本文提出的加速器对于DSP和BRAM的资源利用率不高,还存在一定的提升空间,考虑多个加速模块同时运行进一步提升性能,例如三维计算阵列[16]的引进.其中卷积加速模块对第一层卷积层和全连接层计算资源效率偏低,可以通过控制逻辑设定单独的映射方案或设计单独的加速模块来提升计算资源效率.上述两个思路均可以提升加速器的性能,后续将会进行进一步的研究.

参考文献

Girshick RDonahue JDarrell Tet al.

Rich feature hierarchies for accurate object detection and semantic segmentation

2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus,OH,USAIEEE2014580-587.

[本文引用: 1]

He K MZhang X YRen S Qet al.

Delving deep into rectifiers:surpassing human⁃level performance on imagenet classification

2015 IEEE International Conference on Computer Vision. Santiago,ChileIEEE20151026-1034.

[本文引用: 1]

Coates A,Huval B,Wang T,et al.

Deep learning with COTS HPC systems

International Conference on Machine Learning. Atlanta,USA:ACM,20131337-1345.

[本文引用: 1]

Navarro C AHitschfeld⁃Kahler NMateu L.

A survey on parallel computing and its applications in data⁃parallel problems using GPU architectures

Communications in Computational Physics,201415(2):285-329.

[本文引用: 1]

Chen T SDu Z DSun N Het al.

Diannao:a small⁃footprint high⁃throughput accelerator for ubiquitous machine⁃learning

ACM SIGARCH Computer Architecture News,201442(1):269-284.

[本文引用: 2]

Qiu J TWang JYao Set al.

Going deeper with embedded fpga platform for convolutional neural network

The 2016 ACM/SIGDA International Symposium on Field⁃Programmable Gate Arrays. Monterey,CA,USAACM201626-35.

[本文引用: 2]

Chen Y HKrishna TEmer J Set al.

Eyeriss:An energy⁃efficient reconfigurable accelerator for deep convolutional neural networks

IEEE Journal of Solid⁃State Circuits,201652(1):127-138.

[本文引用: 2]

Wei X CYu C HZhang Pet al.

Automated systolic array architecture synthesis for high throughput CNN inference on FPGAs

The 54th Annual Design Automation Conference 2017. Austin,TX,USAACM20171-6.

[本文引用: 5]

Jouppi N PYoung CPatil Net al.

In⁃datacenter performance analysis of a tensor processing unit

2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture. Toronto,CanadaIEEE20171-12.

[本文引用: 2]

Feng GHu Z YChen Set al.

Energy⁃efficient and high⁃throughput FPGA⁃based accelerator for convolutional neural networks

2016 13th IEEE International Conference on Solid⁃State and Integrated Circuit Technology (ICSICT). Hangzhou,ChinaIEEE2016624-626.

[本文引用: 1]

NVIDIA Corporation.

Hardware Manual

http:∥nvdla.org/hw/contents.html,2018-05-12.

[本文引用: 1]

Zhang CLi PSun G Yet al.

Optimizing fpga⁃based accelerator design for deep convolutional neural networks

The 2015 ACM/SIGDA International Symposium on Field⁃Programmable Gate Arrays. Monterey,CA,USAACM2015161-170.

[本文引用: 2]

Suda NChandra VDasika Get al.

Throughput⁃optimized OpenCL⁃based FPGA accelerator for large⁃scale convolutional neural networks

The 2016 ACM/SIGDA International Symposium on Field⁃Programmable Gate Arrays. Monterey,CA,USAACM201616-25.

[本文引用: 2]

Guo K YSui L ZQiu J Tet al. Angel⁃Eye:a complete design flow for mapping CNN onto embedded FPGA. IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems201737(1):35-47.

[本文引用: 2]

Zhang CSun G YFang Z Met al. Caffeine:Toward uniformed representation and acceleration for deep convolutional neural networks. IEEE Transactions on ComputerAided Design of Integrated Circuits and Systems201838(11):2072-2085.

[本文引用: 2]

Shen J ZHuang YWang Z Let al.

Towards a uniform template⁃based architecture for accelerating 2D and 3D CNNS on FPGA

The 2018 ACM/SIGDA International Symposium on Field⁃Programmable Gate Arrays. Monterey,CA,USAACM201897-106.

[本文引用: 1]

/