0引言
深度卷积神经网络(Convolutional Neural Network ,CNN)已经成为了当前计算机视觉系统中最有前景的图像分析方法之一。
近年来,随着Binary-Net 、Dorefa-Net 、ABC-Net 等[1-3]
低精度量化神经网络的深入研究,越来越多的研究集中于在FPGA 硬件中构建定制的加速器结构,实现CNN 的
加速[4]。基于FPGA 的低精度量化神经网络实现主要可分为两类:流架构[5-6]和层架构[7-8]。其中,由于流架构实
现了流水线化,每个阶段都可以独立处理输入且可以针对CNN 逐层设计并优化相应层的加速运算单元,因此
拥有更高的吞吐率和更低的延迟以及内存带宽,但其逻辑资源等消耗也相当可观。因此,现有的基于流架构实现的二值神经网络加速器研究大多是针对32×32尺度
MNIST 数据集等小尺度的图像输入。而实际应用中更多使用如448×448尺度的YOLO 、224×224尺度的
VGG 等作为骨干网络,一方面,大尺度输入的网络结构参数量往往较大(以VGG 为例,其参数量大约500MB),高端FPGA 的片上内存容量也仅32.1Mb 左右,这对FPGA 实
现CNN 加速将是资源瓶颈。即使采用低精度量化策略,FPGA 有限的片上内存资源仍捉襟见肘。另一方面,虽然各层运算单元可以得到特定优化,然而由于网络拓扑结构限制,往往各层网络很难实现计算周期的匹配,从而造成推断性能难以进一步提高。针对基于流架构的二值卷积神经网络加速器设计存在的资源与性能的瓶颈,本文以224×224尺度的VGG-11网络加速器设计为例,重点研究了大尺度的二值卷积神经网络硬件加速器设计、优化及验证,主要工作如下:
(1)针对大尺度流架构的二值VGG 卷积神经网络加速器设计存在的资源与性能瓶颈,提出了网络模型优化
二值VGG 卷积神经网络加速器优化设计∗
张旭欣,张嘉,李新增,金婕
(上海工程技术大学电子电气工程学院,上海201600)
摘要:基于FPGA 的二值卷积神经网络加速器研究大多是针对小尺度的图像输入,而实际应用主要以YOLO 、VGG 等大尺度的卷积神经网络作为骨干网络。通过从网络拓扑、流水线等层面对卷积神经网
络硬件进行优化设计,从而解决逻辑资源以及性能瓶颈,实现输入尺度更大、网络层次更深的二值VGG 神经网络加速器。采用CIFAR-10数据集对基于FPGA 的VGG 卷积神经网络加速器优化设计进行验证,实验结果表明系统实现了81%的识别准确率以及
219.9FPS 的识别速度,验证了优化方法的有效性。
关键词:优化设计;二值卷积神经网络;FPGA 加速器中图分类号:TN402;TP183
文献标识码:A
DOI :10.16157/j.issn.0258-7998.201207
中文引用格式:张旭欣,张嘉,李新增,等.二值VGG 卷积神经网络加速器优化设计[J].电子技术应用,2021,47(2):20-23.英文引用格式:Zhang Xuxin ,Zhang Jia ,Li Xinzeng ,et al.Optimization design of binary VGG convolutional neural network accel-erator[J].Application of Electronic Technique ,2021,47(2):20-23.
Optimization design of binary VGG convolutional neural network accelerator
Zhang Xuxin ,Zhang Jia ,Li Xinzeng ,Jin Jie
(College of Electronic and Electrical Engineering ,Shanghai University of Engineering Science ,Shanghai 201600,China)
Abstract :Most of the existing researches on accelerators of binary convolutional neural networks based on FPGA are aimed at small -scale image input,while the applications mainly take large -scale convolutional neural networks such as YOLO and VGG as backbone networks.The hardware of convolutional neural network is optimized and designed from the two aspects including the net ⁃work topology and pipeline stage,so as to solve the bottleneck of logic resources and improve the performance of the binary VGG network accelerator.CIFAR -10dataset resized to 224×224was used to verify the optimized design of VGG convolutional neural network accelerator based on FPGA.Experimental results showed that the system achieved 81%recognition accuracy and 219.9FPS recognition speed ,which verified the effectiveness of the optimization method.
Key words :optimization design ;binary convolutional neural network ;FPGA
accelerator
图1批归一化与激活和流水线优化的方法。
(2)设计并优化了224×224尺度的基于流架构的二值VGG 卷积神经网络加速器。实验表明基于FPGA 平台
实现了81%的准确率,219.9FPS 的识别速度,相较于同类型的加速器识别速度最高提升了33倍。
1二值卷积神经网络加速器
二值卷积神经网络激活与权值均采用符号函数进行二值化,如式(1)所示:
w b =sign(w )=
+1,w ≥0
-1,w <0
{
(1)
其中w 为单精度浮点权重,w b 为二值权重。在硬件设计
中若以逻辑0表示-1,逻辑1表示1,则有:
(1)乘法运算可简化为Xnor 运算和PopCount 累加运算[6]。因此,对于特征图r 行c 列卷积核大小为(k c ,
k r )的
卷积运算,如式(2)所示:
y out ,r ,c =k i =0
∑k j =0∑xnor(w b
i ,j ,y b
r +i ,c +j )
(2)
(2)二值卷积神经网络的批归一化与符号激活函数
运算过程如图1所示。
若结合归一化与符号激活函数即y =sign (BN (x )),可得:
y =
+1,x ≥μ-βγ
σ2+ε
√-1,x <μ-βγ
σ2+ε
√⎧⎩
⏐⏐⏐⏐⏐⎨⏐⏐⏐⏐⏐(γ>0)
(3)
若以逻辑0表示-1,逻辑1表示1,则阈值T 可转换为:
T =12
(ch in +μ-βγσ2+ε√)
(4)
其中x 为前一层卷积层输出,μ、σ是批量输入的均值和方差,ε、γ、β为参数,ch in 表示输入通道数。
综上所述,二值卷积运算单元(Processing Element ,
PE )计算流程如下:输入特征图与权值经过同或门与累加器进行卷积运算,再经阈值比较器实现批归一化与激活函数运算,硬件结构如图2所示。
卷积层包含了多通道输入与多通道输出。因此,单层计算引擎通常由PE 阵列构成,如图3所示,计算引擎从缓冲区读入SIMD 通道特征图,经PE 阵列并行计算得到多个输出到缓冲区。
基于数据流结构的加速器,通过层间流控模块,逐层将二值卷积计算引擎连接起来,整体结构如图4所示,通过调节各层SIMD 与PE 参数,可以实现性能与
逻辑资源的最优化。
2优化设计
针对二值卷积神经网络加速器存在的资源瓶颈以及性能瓶颈,需要从网络拓扑、流水线运算周期均衡等多方面进行优化设计:
(1)由于硬件资源限制、网络结构以及大量的网络参数,往往造成片上存储资源瓶颈,因此需要首先针对网络结构进行优化。
(2)由于不同网络层运算量各不相同,运算所需周
期也不同,因此需要针对流水线进行逐层的运算优化,平衡每层的运算周期。
2.1网络结构优化
原始VGG -11的网络拓扑中的首个全连接Fc1层参数量显著高于其余各层,约占网络整体参数量79%。由于其参数量过大,既造成了片上内存资源瓶颈又导致计算量过大,与其余各层计算周期严重不均衡,使流水线阻塞造成性能瓶颈。针对上述问题,对VGG-11网络结构的瓶颈层进行优化:
(1)对原始浮点卷积VGG -11进行二值化,以有效降低内存占用以及逻辑资源数量。(2)在卷积层与Fc1层之间添加全局最大池化层,将
卷积层输出特征图从7×7池化到1×1
图2二值卷积运算单
图3二值卷积计算引
图4数据流架
优化后的二值VGG-11网络拓扑如表1所示,添加全局最大池化层(Global Max Pool)后,Fc1层参数量降低了约49倍,同时由于对网络进行了二值化,整体网络参数所占内存空间从511.3MB 降低到3.66MB ,因而有效地从网络结构层面降低了内存资源瓶颈。
2.2流水线优化
基于数据流架构示意图如图5所示,Initiation Interval 为两个任务间的时间间隔,Latency 为整体任务完成的延迟。由于采用数据流架构,网络加速器的吞吐率可以采
用F clk /II max 来进行估算。计算延迟最慢的网络层会导致任务间的时间间隔最大为II max ,从而决定了网络的吞吐率。根据上述分析可知,消耗时钟周期数最多的计算引擎会成为整体性能的瓶颈,从而会造成其他层资源的浪费和性能的下降。因此,针对流水线优化,需要针对不同的计算引擎之间进行整体的计算周期均衡,尽可能地保证各层的计算周期相近。
为了有效提高加速器的性能与资源利用率,本文设计了不同的PE 阵列参数配置,以验证不同的PE 和SIMD 配置对分类效率的影响,表2中给出的计算阵列结构参数,A 是最低速的配置,B 、C 、D 、E 依次增加了
PE 以及SIMD ,E 是根据调整得到的最好的结果。
如表3所示,根据表2中SIMD 及PE 参数所对应的各网络层计算周期,通过尽可能将各网络层运算周期均衡调整,从而可以在相应的资源占用率下实现最大化加速器推断速率。
3结果
在Ubuntu16.04操作系统下,基于Pytorch 深度学习框架训练二值VGG-11卷积神经网络,实验基于CIFAR-10
名称Input Conv1MaxPool Conv2MaxPool Conv3Conv4MaxPool Conv5Conv6MaxPool Conv7Conv8MaxPool Global MaxPool
Fc1Fc2Fc3
输入特征图224×224×3224×224×3224×224×64112×112×64112×112×12856×56×12856×56×25656×56×25628×28×51228×28×51228×28×51214×14×51214×14×51214×14×5127×7×51251240964096
核/3×32×23×32×23×33×32×23×33×32×23×33×32×27×7///
输出特征图224×224×3224×224×64112×112×64112×112×12856×56×12856×56×25656×56×25628×28×51228×28×51228×28×51214×14×51214×14×51214×14×5127×7×5125124096409610
参数/1728/73728/294912589824/23592962359296
/23592962359296
//20971521677721640960
表1二值VGG-11网络拓扑
图5流水线时序
Conv1Conv2Conv3Conv4Conv5Conv6Conv7Conv8Fc1Fc2Fc3
A
P=8S =3
P=8S=32P=8S=32P=16S=32P=8S=32P=16
S=32P=4S=32P=4S=32P=1S =4P=2S =8P=1S =2B
P=16S=3P=16S=32P=16S=32P=32S=32P=16S=32P=16S=64P=8S=32P=8S=32P=1S=4P=1S=8P=1S=2C
P=32S =3P=16S =64P=16S =64P=32S =64P=32S =32P=32S =64P=8S =64P=8S =64P=1S =4P=1S =8P=1S =2D
P=64S=3P=32S=64P=32S=64P=64S=64P=32S=64P=64S=64P=16S=64P=16S=64P=1S=8P=1S=16
P=1S=4E
P=64S =3P=64S =64P=64S =64P=128S =64P=64S =64P=128S =64P=32S =64P=32S =64P=1S =16P=1S =32P=1S =8网络层表2PE 阵列配置
网络层Conv1Conv2Conv3Conv4Conv5Conv6Conv7
Conv8Fc1Fc2Fc3
A
3612672361267236126723612672361267236126723612672361267213107213107232768B
1806336180633618063361806336180633618063361806336180633613107213107232768C
90316890316890316890316890316890316890316890316813107213107232768D
451584451584451584451584451584451584451584451584655366553616384E
45158422579222579222579222579222579222579222579232768327688192表3运算周
数据集验证,将数据集图像尺寸放大到224×224作为网络输入,数据训练利用NVIDIA Quadro P2000GPU实现加速。基于流架构二值VGG-11加速器硬件系统开发基于
ZCU102开发板,最终硬件系统实现了81%的识别率,推断速率、资源占用率等如表4所示,最高实现了219.9FPS。
通过实验对比可得出如下结论:
(1)逐渐增加PE或SIMD的数量能提高深度神经网络加速器的推断速率,但会占用更多逻辑资源,反之也可以通过降低推断速率来换取逻辑资源占用面积的缩减。
(2)比较方案E和方案D,除Conv1卷积层外,其余各层均提高了SIMD和PE数量以及缩减了计算周期,然
而对比实现结果,可以发现逻辑资源占用率有了大幅增长,而推断速度却并没有得到大幅提升。这验证了针对于流水线结构的深度卷积神经网络加速器来说,计算周期延迟最大的计算引擎对网络整体性能有较大的影响,在设计中对各层运算单元计算周期进行均衡尤为重要。
(3)对比FPGA片上资源LUT、FF以及BRAM等资源,片上内存数量是限制进一步提高神经网络层数以及提高推断速度的资源瓶颈。
与国内外相关基于FPGA的VGG网络加速器实现进行比较,如表5所示。通过优化设计,实现了相较于其他VGG加速器最高33倍推断加速,相比基于层架构的同类型二值VGG网络加速器[8]提高了7倍。
4结论
本文通过从网络结构、流水线均衡等多方面优化设计,实现了输入尺度更大的二值VGG-11卷积神经网络加速器,并验证了优化方法的有效性,为更大尺度、更深层次的卷积神经网络加速器提供了设计优化思路。
参考文献
[1]COURBARIAUX M,HUBARA I,SOUDRY D,et al.Binarized neural networks:training deep neural networks with weights
and activations constrained to+1or-1[J].arXiv preprint arXiv:1602.02830,2016.
[2]ZHOU S,WU Y,NI Z,et al.Dorefa-net:training low bitwidth convolutional neural networks with low bitwidth gradients[J].arXiv preprint arXiv:1606.06160,2016. [3]LIN X,ZHAO C,PAN W.Towards accurate binary convolutional neural network[C].Advances in Neural Information Processing Systems.2017:345-353. [4]SIMONS T,LEE D J.A review of binarized neural networks[J]. Electronics,2019,8(6):661.
[5]GUO P,MA H,CHEN R,et al.FBNA:a fully binarized neural network accelerator[C].201828th International Conference on Field Programmable Logic and Applications (FPL).IEEE,2018:51-513.
[6]UMUROGLU Y,FRASER N J,GAMBARDELLA G,et al. Finn:a framework for fast,scalable binarized neural network inference[C].Proceedings of the2017ACM/SIGDA International Symposium on Field-Programmable Gate Arrays, 2017:65-74.
[7]LIANG S,YIN S,LIU L,et al.FP-BNN:binarized neural network on FPGA[J].Neuron Computing,2018,275:1072-1086.
[8]YONEKAWA H,NAKAHARA H.On-chip memory based binarized convolutional deep neural network applying batch normalization free technique on an fpga[C].2017IEEE International Parallel and Distributed Processing Symposium Workshops(IPDPSW).IEEE,2017:98-105.
[9]SUDA N,CHANDRA V,DASIKA G,et al.Throughput-optimized OpenCL-based FPGA accelerator for large-scale convolutional neural networks[C].Proceedings of the2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays,2016:16-25.
[10]QIU J,WANG J,YAO S,et al.Going deeper with embedded
fpga platform for convolutional neural network[C].Proceed-ings of the2016ACM/SIGDA International Symposium on
resizedField-Programmable Gate Arrays,2016:26-35. [11]ZHANG C,WU D,SUN J,et al.Energy-efficient CNN
implementation on a deeply pipelined FPGA cluster[C].
Proceedings of the2016International Symposium on Low
Power Electronics and Design,2016:326-331.
(收稿日期:2020-12-15)作者简介院
张旭欣(1995-),男,硕士,主要研究方向:深度神经网络、FPGA。
张嘉(1997-),男,硕士,主要研究方向:深度神经网络、图像处理。
金婕(1978-),通信作者,女,博士,副教授,主要研究方向:视频编解码、数字信号处理和VLSI,E-mail:jinjie_pku@ 126。
结构A B C D E
速率/(FPS)
18
44
96
198
219.9
BRAM_18K
55.70
60.14
63.65
74.23
93.31
FF
29.50
30.22
32.32
35.69
41.74
LUT
27.50
30.21
35.69
46.19
64.8
URAM
100
100
100
100
100
FPGA资源利用率评估/%
表4资源利用率对比
表5基于FPGA的VGG加速器对比
方案文献[8]文献[9]文献[10]文献[11]本文方案
平台
Zynq Ultrascale+
Stratix-V GSD8
Zynq XC7Z045
Virtex-7VX690t
Zynq Ultrascale+
时钟/MHz
100
120
150
150
100
帧速/(FPS)
31.8
3.80
4.45
6.58
219.9
功耗/W
22
19.10
9.63
-
4.46

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。