«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (3): 170-174, 196  DOI: 10.19678/j.issn.1000-3428.0060675
0

引用本文  

巩杰, 赵烁, 何虎, 等. 基于FPGA的量化CNN加速系统设计[J]. 计算机工程, 2022, 48(3), 170-174, 196. DOI: 10.19678/j.issn.1000-3428.0060675.
GONG Jie, ZHAO Shuo, HE Hu, et al. Design of Quantized CNN Acceleration System Based on FPGA[J]. Computer Engineering, 2022, 48(3), 170-174, 196. DOI: 10.19678/j.issn.1000-3428.0060675.

基金项目

国家重点研发计划(2016YFA0201800)

作者简介

巩杰(1995—),男,硕士,主研方向为CNN加速系统;
赵烁,硕士;
何虎,副教授;
邓宁,教授

文章历史

收稿日期:2021-01-22
修回日期:2021-03-19
基于FPGA的量化CNN加速系统设计
巩杰 , 赵烁 , 何虎 , 邓宁     
清华大学微电子学研究所, 北京 100084
摘要:深度卷积神经网络(CNN)模型中卷积层和全连接层包含大量卷积操作,导致网络规模、参数量和计算量大幅增加,部署于CPU/GPU平台时存在并行计算性能差和不适用于移动设备环境的问题,需要对卷积参数做量化处理并结合硬件进行加速设计。现场可编程门阵列(FPGA)可满足CNN并行计算和低功耗的需求,并具有高度的灵活性,因此,基于FPGA设计CNN量化方法及其加速系统。提出一种通用的动态定点量化方法,同时对网络的各个层级进行不同精度的量化,以减少网络准确率损失和网络参数的存储需求。在此基础上,针对量化后的CNN设计专用加速器及其片上系统,加速网络的前向推理计算。使用ImageNet ILSVRC2012数据集,基于VGG-16与ResNet-50网络对所设计的量化方法和加速系统进行性能验证。实验结果显示,量化后VGG-16与ResNet-50的网络规模仅为原来的13.8%和24.8%,而Top-1准确率损失均在1%以内,表明量化方法效果显著,同时,加速系统在运行VGG-16时,加速效果优于其他3种FPGA实现的加速系统,峰值性能达到614.4 GOPs,最高提升4.5倍,能耗比达到113.99 GOPs/W,最高提升4.7倍。
关键词卷积神经网络    动态定点量化    硬件加速    现场可编程门阵列    模型压缩    
Design of Quantized CNN Acceleration System Based on FPGA
GONG Jie , ZHAO Shuo , HE Hu , DENG Ning     
Institute of Microelectronics, Tsinghua University, Beijing 100084, China
Abstract: The convolution layer and full connection layer in the deep Convolutional Neural Network(CNN) model contain a large number of convolution operations, resulting in a significant increase in network scale, parameters, and computation.Deep CNNs are unsuitable for the mobile device environment, and the parallel computing performance is poor when deployed on the CPU/GPU platform.Thus, it is necessary to quantify the convolution parameters and speed up the design combining with the hardware.Field Programmable Gate Array (FPGA) with low power consumption and high flexibility, meet the requirements of CNN parallel computing.Therefore, the CNN quantization method and its acceleration system are designed based on FPGA.The general dynamic fixed-point quantization method proposed in this study quantifies each level of the network with different accuracy, simultaneously, reducing the loss in network accuracy as well as storage requirements of network parameters.On this basis, a special accelerator and its on-chip system are designed for the quantized CNN, to accelerate the forward reasoning calculation of the network.Using the ImageNetILSVRC2012 dataset, the performance of the designed quantization method and acceleration system are verified on the VGG-16 and ResNet-50 networks.Experimental results show that the network scale of VGG-16 and ResNet-50, after quantization, is only 13.8% and 24.8% of the original, respectively while the Top-1 accuracy loss is less than 1%, indicating that the quantization method is remarkably effective.Meanwhile, the acceleration system of VGG-16, outperforms the other three FPGA acceleration systems with a maximum increase of 4.5 times in peak performance(614.4 GOPs) and 4.7 times in energy consumption ratio (113.99 GOPs/W).
Key words: Convolutional Neural Network(CNN)    dynamic fiexed-point quantization    hardware acceleration    Field Programmable Gate Array(FPGA)    model compression    

开放科学(资源服务)标志码(OSID):

0 概述

卷积神经网络(Convolutional Neural Network,CNN)凭借强大的图像处理能力,被广泛应用于图像识别、目标检测[1-2]等多个领域,但同时其网络规模、参数量与计算量不断增加,如何将CNN高效地部署至硬件平台成为当下重要的研究课题。

目前多数CNN都是在CPU/GPU平台以32位的浮点数形式进行运算,但CPU在并行计算方面存在缺陷,并不适用于CNN的计算,GPU虽然在并行计算方面有巨大优势,但是高能耗的特点导致其在便携式移动设备环境下也不适用。现场可编程门阵列(Field Programmable Gate Array,FPGA)不仅能满足并行计算与低功耗的需求,而且还具有高度的灵活性,可适用于不同场景,因此,FPGA可为CNN部署提供有效的解决方案[3]

在研究CNN硬件加速方法的过程中,学者们一直力求于低功耗、高能效[4-5]。一种常见的方法是通过压缩模型来达到减小模型体积和降低硬件资源消耗的目的。目前,使用更低位宽如8位、16位的定点数来表示原始的32位浮点数进行推理计算已经被证明有效且得到广泛应用[6-8]。将高精度参数替换为低精度参数能有效降低存储、内存带宽等硬件资源需求且几乎不影响模型准确率。在模型压缩方面,学者们还使用网络剪枝[9]、模型蒸馏[10]等方法来达到减少模型参数、提高计算效率的目的。另一种常见方法是通过面向CNN中占比大的计算操作如卷积计算、全连接层计算、激活函数计算等设计专门的硬件进行计算加速[11],主要有面向并行计算、针对数据通路的加速器设计等[12-14]

针对目前浮点数CNN模型规模和硬件资源消耗大的问题,本文设计一种通用的CNN动态定点量化方法及加速系统,并以VGG-16与ResNet-50网络为例部署至FPGA平台进行实验验证。

1 算法分析 1.1 网络参数与计算量

CNN的主要计算有卷积计算、全连接计算、批归一化(Batch Normalization,BN)、激活函数、池化计算等。本文所选用的VGG-16网络包含13层卷积层与3层全连接层,ResNet-50网络包含49层卷积层与1层全连接层。对网络参数与计算量进行统计分析,由表 1可以看出,本文所选用的2个网络参数量都非常大,VGG-16对一张图片的推理所需乘加操作达到10G级,虽然ResNet-50中的残差连接一定程度上减少了计算量,但是对于通用处理器来说这样的规模同样巨大,因此,必须设计专用加速器。

下载CSV 表 1 网络参数与计算量 Table 1 Parameters quantity and calculation quantity of the networks
1.2 网络运算时间

为使加速器设计更有针对性,对网络中各层所占用的运行时间进行分析。使用C语言搭建2个模型,选用单张3×224×224像素大小的图像作为输入,分别进行前向推理计算并统计运算时间。由表 2可知,在CNN中,绝大部分的计算操作都是卷积计算以及全连接层的计算,而全连接层实际上可以看作是特殊的卷积操作,本文重点在于对卷积参数做有效量化并结合硬件设计进行加速计算。

下载CSV 表 2 网络各层计算量与运行时间 Table 2 Calculation quantity and running time of each layer in the networks
2 网络量化 2.1 网络预处理

目前绝大多数的CNN卷积操作都是按照卷积、BN、ReLU的顺序进行的,引入BN层的目的是在训练时加快模型收敛速度以及避免过拟合[15]。BN的计算公式如式(1)所示:

$ {y}_{i}=\frac{\gamma \left({x}_{i}-\mu \right)}{\sqrt[]{{\sigma }^{2}+\epsilon }}+\beta $ (1)

其中:$ \gamma $为缩放因子;$ \mu $$ {\sigma }^{2} $为当前Batch的均值和方差;$ {x}_{i} $为卷积计算结果;$ \epsilon $为防止分母为0所添加的十分小的正数;$ \beta $为偏置。由式(1)可以看出,在前向推理计算时,BN层增加了不必要的参数量,同时还会消耗一定的硬件资源。为了加快计算速度,本文将卷积与BN层的参数进行融合。卷积计算公式如式(2)所示:

$ {\widehat{f}}_{i, j}={W}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\cdot {f}_{i, j}+{b}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $ (2)

其中:$ {W}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $为卷积核参数;$ {b}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $为偏置。同时,将式(1)改写为式(3)所示形式:

$ {y}_{i}={W}_{\mathrm{B}\mathrm{N}}\cdot {x}_{i}+{b}_{\mathrm{B}\mathrm{N}} $ (3)

BN的输入实际为卷积计算的输出,因此,将式(2)、式(3)合并,得到卷积和归一化融合后的式(4):

$ \left\{\begin{array}{l}{\widehat{f}}_{i, j}={W}_{\mathrm{c}\mathrm{o}\mathrm{n}{\mathrm{v}}^{\mathrm{\text{'}}}}\cdot {f}_{i, j}+{b}_{\mathrm{c}\mathrm{o}\mathrm{n}{\mathrm{v}}^{\mathrm{\text{'}}}}\\ {W}_{\mathrm{c}\mathrm{o}\mathrm{n}{\mathrm{v}}^{\mathrm{\text{'}}}}={W}_{\mathrm{B}\mathrm{N}}\cdot {W}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\\ {b}_{\mathrm{c}\mathrm{o}\mathrm{n}{\mathrm{v}}^{\mathrm{\text{'}}}}={W}_{\mathrm{B}\mathrm{N}}\cdot {b}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}+{b}_{\mathrm{B}\mathrm{N}}\end{array}\right. $ (4)
2.2 量化方法

量化这一方法在神经网络加速运算的研究领域很常见,目前常用的量化方法主要分为基于码本的量化与定点量化两种[16-18]。基于码本的量化是将张量中的每个值通过缩放因子与零值映射到一个有限集合的某个元素,此集合即为码本。定点量化是将单精度浮点网络参数以低位定点数来替代。以VGG-16为例,其网络参数与层间结果分布如图 1所示。

Download:
图 1 VGG-16网络数据分布 Fig. 1 Data distribution of VGG-16 network

图 1可以看出,VGG-16网络中不同层的参数范围有较大出入,并且层间结果相对于网络参数来说都过大。因此,本文采用动态定点量化方法,即针对不同结构选择合适的参数分别对其进行量化以达到最优效果。为了避免量化位宽不够的情况,通过式(5)的方法寻找合适的整数位:

$ {l}_{\mathrm{i}\mathrm{n}\mathrm{t}}=\mathrm{l}\mathrm{b}\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\mathrm{ }\left(x\right)+1 $ (5)

其中:$ x $为待量化数;$ {l}_{\mathrm{i}\mathrm{n}\mathrm{t}} $为整数位长度。由此可以得到小数位长度$ {l}_{\mathrm{f}\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{t}}={l}_{\mathrm{b}\mathrm{w}}-{l}_{\mathrm{i}\mathrm{n}\mathrm{t}} $,其中,$ {l}_{\mathrm{b}\mathrm{w}} $为量化后位宽。

图 2为2个8位定点数的例子。上半部分的小数位为4,其表示的数为$ {2}^{2}+{2}^{1}+{2}^{-1}+{2}^{-2}+{2}^{-4}=6.812\mathrm{ }5 $。下半部分的小数位为-1,其表示的数为$ {2}^{7}+{2}^{6}+{2}^{4}+{2}^{3}+{2}^{1}=218 $。通过小数位所在位置,能够有效地将定点数还原至其十进制数值,同时在后续过程中使用定点8位数替代浮点数运算。

Download:
图 2 8位定点数结构 Fig. 2 Structure of 8 bit fixed-point

对待量化参数进行量化处理,如式(6)所示:

$ n={(-1)}^{s}\cdot {2}^{-{f}_{\mathrm{f}\mathrm{l}\mathrm{o}\mathrm{a}\mathrm{t}}}\sum\limits_{i=0}^{{l}_{\mathrm{b}\mathrm{w}}-2}{2}^{i}\cdot {x}_{i} $ (6)

其中:s为符号位值;$ x $为有效位值。

3 定点量化卷积加速器设计

基于上文提出的动态定点量化方法设计加速器结构,如图 3所示。加速器主要包含控制器、片上缓存、传输单元、计算核4个部分,其中:控制器通过总线从CPU获取数据传输、缓存、计算的相关配置信息并分别进行配置,保证整个计算流程稳定、准确;片上缓存暂存来自DDR的输入和网络权重以及计算输出数据;传输单元用于传输内存与偏上缓存间的数据;计算核则完成整个加速过程的核心计算。

Download:
图 3 加速器计算结构 Fig. 3 Computing structure of accelerator
3.1 片上缓存与传输单元

片上缓存主要分为输入、输出和权重的缓存,计算核中同时还有暂存卷积计算中间结果的缓存和暂存定点处理模块输入数据的缓存。数据缓存能有效地降低DDR和加速器的数据传输频率,不但能满足卷积核参数复用的需求,而且还能降低数据搬运的能耗。

输入输出与权重的缓存分别使用2个不同的传输单元控制以提高数据传输的并行度,其中权重的数据传输采用ping-pong模式进行,即同时进行DDR到缓存的数据传输和计算核的加速计算,提高了加速效率。

3.2 计算核

计算核是加速器的核心模块,包含3个子模块,分别为MAC模块、量化处理模块(Quantization Process Module,QPM)和激活函数模块,其结构如图 4所示。

Download:
图 4 计算核结构 Fig. 4 Structure of computing core

MAC模块主要由乘加阵列构成,其作用为将卷积核与对应输入特征映射的部分乘加结果与其对应通道的部分乘加结果累加,通过提高卷积计算并行度和阵列循环展开计算来提高计算效率。

QPM为量化处理模块,主要负责量化运算,具体由移位、加偏置、舍入和截断4个部分组成。QPM计算过程如图 5所示,为了避免溢出,卷积乘加结果以32位形式暂存,与偏置求和时,因为定点数小数点位置不同,所以需要先进行移位操作使两者小数位相同,再进行加操作,随后判断是否有进位产生,最后移位至小数点位置与输出小数点位置相同并截断至8位位宽,完成一次卷积计算,这样整个计算流程都是以定点数形式进行,而不需要将定点数反量化为浮点数再进行计算。

Download:
图 5 加速器量化计算流程 Fig. 5 Quantization computing process of accelerator

激活函数运算模块由控制信号决定进行ReLU、LeakyReLU和ByPass中的一种操作。其中:ReLU由选择器实现,当输入小于0时,输出为0,否则保持不变;LeakyReLU由选择器与移位器实现,即输入小于0时,将数据右移3位得到输出值。

3.3 多核扩展加速器SoC

最终设计的CNN加速器片上系统(System on Chip)结构SoC如图 6所示,主要包含DDR,Zynq系统和可扩展的加速器等模块,其中,数据通过AXI4-Full总线传输,控制信号通过AXI4-Lite总线传输。为了提高计算效率,将计算核的数量扩展至4个,SRAM的大小也相应提高为原来的2倍,总算力相较于单核加速器提升近4倍。

Download:
图 6 多核扩展加速器SoC结构 Fig. 6 SoC structure of multi-core expansion accelerator
4 实验结果与分析

使用基于caffe深度学习框架的VGG-16与ResNet-50预训练模型,以ImageNet ILSVRC2012为数据集,单张图片大小设置为3×224×224像素进行量化,得到不同位宽下网络Top-1准确率,如图 7所示。

Download:
图 7 Top-1准确率随量化位宽的变化趋势 Fig. 7 Change trend of Top-1 accuracy with quantization bit

图 7可以看出,将卷积权重和中间结果量化为8位,全连接层权重量化为4位,可以在Top-1准确率损失较小的情况下实现更大的压缩率,因此,实验采用上述量化方案,量化结果见表 3。可以看出,2个网络的Top-1准确率损失均在1%以内,VGG-16和ResNet-50分别压缩为原来的13.8%和24.8%,表明本文量化方法效果显著。

下载CSV 表 3 量化结果 Table 3 Quantization results

提取量化后的模型参数,使用C语言搭建前向推理计算网络模型,输入量化后的ImageNet ILSVRC2012验证集。使用Vivado搭建本实验的仿真环境并将生成的bitstream文件导入XilinxZCU102开发板,处理器与加速器的工作频率分别为100 MHz和300 MHz。之后在VivadoSDK中实现网络,输入图像进行预测。

加速器SoC各资源利用情况如表 4所示。本文加速系统运行VGG-16的性能与其他加速器的比较如表 5所示。可以看出,在300 MHz工作频率下,VGG-16和ResNet-50完成单张图片推理所需时间分别为166.2 ms与109.6 ms,与其他FPGA的实现相比,本文系统在峰值性能和能效上均有较大提升,其中峰值性能最高可达614.4 GOPs,提升了4.5倍,能耗比达113.99 GOPs/W,提升了4.7倍。

下载CSV 表 4 加速器SoC各资源利用情况 Table 4 Utilization of each resource in accelerator SoC
下载CSV 表 5 加速性能对比 Table 5 Acceleration performance comparison
5 结束语

本文通过对CNN的参数结构和计算特性进行分析,设计一种通用的动态定点量化与计算加速系统,并对计算核进行4核扩展以提高加速性能。在ImageNet ILSVRC2012数据集上进行性能测试,结果表明,量化后网络的Top-1准确率损失在1%以内,VGG-16和ResNet-50网络模型分别压缩至原来的13.8%和24.8%。与其他加速系统相比,本文设计的加速系统峰值性能达614.4 GOPs,最高提升4.5倍,能耗比达到113.99 GOPs/W,最高提升4.7倍。后续将优化量化方法,并将计算核扩展至8核,进一步提升加速系统的整体性能。

参考文献
[1]
HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Computer Society, 2016: 770-778.
[2]
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot MultiBox detector[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
[3]
ZHANG C, LI P, SUN G Y, et al. Optimizing FPGA-based accelerator design for deep convolutional neural networks[C]//Proceedings of 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. New York, USA: ACM Press, 2015: 161-170.
[4]
GHAFFARI S, SHARIFIAN S. FPGA-based convolutional neural network accelerator design using high level synthesize[C]//Proceedings of the 2nd International Conference of Signal Processing and Intelligent Systems. Washington D. C., USA: IEEE Press, 2016: 1-6.
[5]
CHEN Y H, KRISHNA T, EMER J S, et al. Eyeriss: an energy-efficient reconfigurable accelerator for deep convolutional neural networks[J]. IEEE Journal of Solid-State Circuits, 2017, 52(1): 127-138. DOI:10.1109/JSSC.2016.2616357
[6]
COURBARIAUX M, BENGIO Y, DAVID J P. Training deep neural networks with low precision multiplications[EB/OL]. (2015-09-23)[2021-01-02]. https://arxiv.org/pdf/1412.7024.pdf.
[7]
WESS M, DINAKARRAO S M P, JANTSCH A. Weighted quantization-regularization in DNNs for weight memory minimization toward HW implementation[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2018, 37(11): 2929-2939. DOI:10.1109/TCAD.2018.2857080
[8]
GONG C, LI T, LU Y, et al. μL2Q: an ultra-low loss quantization method for DNN compression[C]//Proceedings of 2019 International Joint Conference on Neural Networks. Washington D. C., USA: IEEE Press, 2019: 1-8.
[9]
LI H, KADAV A, DURDANOVIC I, et al. Pruning filters for efficient ConvNets[EB/OL]. (2017-03-10)[2021-01-02]. https://arxiv.org/pdf/1608.08710.pdf.
[10]
POLINO A, PASCANU R, ALISTARH D. Model compression via distillation and quantization[EB/OL]. (2018-02-15)[2021-01-02]. https://arxiv.org/pdf/1802.05668.pdf.
[11]
SHAWAHNA A, SAIT S M, EL-MALEH A. FPGA-based accelerators of deep learning networks for learning and classification: a review[J]. IEEE Access, 2019, 7: 7823-7859. DOI:10.1109/ACCESS.2018.2890150
[12]
ZHAO R Z, LUK W, NIU X Y, et al. Hardware acceleration for machine learning[C]//Proceedings of 2017 IEEE Computer Society Annual Symposium on VLSI. Washington D. C., USA: IEEE Press, 2017: 645-650.
[13]
CHEN T S, DU Z D, SUN N H, et al. DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning[J]. ACM SIGPLAN Notices, 2014, 49(4): 269-284. DOI:10.1145/2644865.2541967
[14]
SUN S, JIANG H J, YIN M C, et al. Design of efficient CNN accelerator based on Zynq platform[C]//Proceedings of the 15th International Conference on Computer Science and Education. Washington D. C., USA: IEEE Press, 2020: 489-493.
[15]
IOFFE S. Batch renormalization: towards reducing minibatch dependence in batch-normalized models[EB/OL]. (2017-03-30)[2021-01-02]. https://arxiv.org/pdf/1702.03275.pdf.
[16]
STANKOVI I, BRAJOVI M, DAKOVI M, et al. Quantization in compressive sensing: a signal processing approach[J]. IEEE Access, 2020, 8: 50611-50625. DOI:10.1109/ACCESS.2020.2979935
[17]
ZHOU Y L, CHEN L, XIE R, et al. Low-precision CNN model quantization based on optimal scaling factor estimation[C]//Proceedings of 2019 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting. Washington D. C., USA: IEEE Press, 2019: 1-5.
[18]
CHIEN J T, CHANG S T. M-ARY quantized neural networks[C]//Proceedings of 2020 IEEE International Conference on Multimedia and Expo. Washington D. C., USA: IEEE Press, 2020: 1-6.
[19]
GUO K Y, SUI L Z, QIU J T, et al. Angel-Eye: a complete design flow for mapping CNN onto embedded FPGA[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2018, 37(1): 35-47. DOI:10.1109/TCAD.2017.2705069
[20]
MAO W D, WANG J C, LIN J, et al. Methodology for efficient reconfigurable architecture of generative neural network[C]//Proceedings of 2019 IEEE International Symposium on Circuits and Systems. Washington D. C., USA: IEEE Press, 2019: 1-5.
[21]
QIU J T, WANG J, YAO S, et al. Going deeper with embedded FPGA platform for convolutional neural network[C]//Proceedings of 2016 ACM/SIGDA International Symposium. New York, USA: ACM Press, 2016: 26-35.