APP下载

基于线性脉动阵列的卷积神经网络计算优化与性能分析

2018-12-26刘勤让刘崇阳周俊王孝龙

网络与信息安全学报 2018年12期
关键词:崇阳乘法器分块

刘勤让,刘崇阳,周俊,王孝龙



基于线性脉动阵列的卷积神经网络计算优化与性能分析

刘勤让,刘崇阳,周俊,王孝龙

(国家数字交换系统工程技术研究中心,河南 郑州 450002)

针对大部分FPGA端上的卷积神经网络(CNN, convolutional neural network)加速器设计未能有效利用稀疏性的问题,从带宽和能量消耗方面考虑,提出了基于线性脉动阵列的2种改进的CNN计算优化方案。首先,卷积转化为矩阵相乘形式以利用稀疏性;其次,为解决传统的并行矩阵乘法器存在较大I/O需求的问题,采用线性脉动阵列改进设计;最后,对比分析了传统的并行矩阵乘法器和2种改进的线性脉动阵列用于CNN加速的利弊。理论证明及分析表明,与并行矩阵乘法器相比,2种改进的线性脉动阵列都充分利用了稀疏性,具有能量消耗少、I/O带宽占用少的优势。

线性脉动阵列;卷积神经网络;稀疏性;I/O带宽;性能分析

1 引言

CNN是一种前馈神经网络,随着人工智能的发展,深度学习中的CNN已成为物体识别的主要方法,广泛用于计算机视觉领域。但CNN是一个计算密集型和存储密集型的网络[1-2],为了面向更复杂的任务,CNN的规模正向更深、更复杂方向发展。例如,文献[3]指出:“标准”的CNN结构层次太少,只有神经元、神经网络层,要把每一层的神经元组合起来形成组并装到“舱”(capsule)中完成大量的内部计算。

CNN规模大和计算量大的特点导致移动端上部署变得很困难,规模太大可以压缩[4-5],计算量太大就须进行加速。如今,CNN嵌入式端加速主要集中于FPGA[6]。例如,文献[7]结合卷积计算特点用多个二维卷积器实现三维卷积操作,充分利用FPGA上资源实现高速计算。文献[8]首先考虑FPGA资源限制(如片上存储、寄存器、计算资源和外部存储带宽),之后为给定的CNN模型探索出基于OpenCL的最大化吞吐量的FPGA加速器。文献[9]在FPGA上部署Winograd算法进行卷积加速。但以上利用FPGA的加速方法都未能利用卷积计算中的稀疏性。利用卷积计算中稀疏性的加速方法有文献[10],采用行固定的处理数据方式来利用稀疏性,当数据通道的输入为0值时直接不做处理。文献[11]利用并行矩阵乘法器完成卷积计算并充分利用了参数稀疏性。文献[12]把 Winograd算法和稀疏性进行结合减少卷积操作,改变Winograd作用域来利用稀疏性,Winograd算法计算快但对数据输入输出要求高,运用到FPGA上时存取速度成了限制因素。

本文以文献[13-14]中的线性脉动阵列为基础,对处理单元(PE)做细微的“不传不运算操作”控制,以实现对卷积计算稀疏性的利用。本文采用的线性脉动阵列主要有3个改进:①针对稀疏性的不传不运算操作;②针对卷积核矩阵的部分传输操作;③针对输出结果时的缓存减少策略(针对单输出线性脉动阵列)。本文主要从计算循环周期、存取操作类别和存取操作次数以及资源耗费情况来对比分析和证明,分析表明:改进后的2种线性脉动阵列不仅充分利用了稀疏性,而且不同程度地减少了I/O能耗需求。

2 问题描述

2.1 CNN稀疏性特点

CNN卷积层的卷积计算有一个激活函数,常用的激活函数Relu示意如图1所示。

图1 Relu示意

经过Relu激活函数作用后,小于等于0的都变为0值,所以输出的特征图有很多0值存在。本文基于Caffe深度学习框架[15]进行实验,发现Alexnet、Googlenet、Caffenet和Vgg等卷积神经网络中都存在较大程度的稀疏性,如Alexnet各个卷积层的0值比例如图2所示。

图2 Alexnet卷积层0值比例

为了利用稀疏性进行加速,本文把卷积过程转化为矩阵相乘,转化的方法是文献[16]中所用的Im2col,如图3所示。该方法存储空间要求增大但计算量(乘法和加法操作)没有变化,若能有效利用稀疏性使0值不参与运算,可以在速度上明显改进[17]。

图3 卷积转换为矩阵相乘

2.2 并行矩阵乘法器用于CNN加速

图4 文献[11]的并行矩阵乘法器单列结构

表1 45nm CMOS相关操作能量消耗

3 改进的线性脉动阵列

为了弥补传统并行矩阵乘法器的缺点,并充分利用CNN计算中的稀疏性特点进行加速,本文基于文献[13-14]提出的线性脉动阵列进行了两方面改进,分别是单输出线性脉动阵列和多输出线性脉动阵列,具体如图5~图8所示。

图5 单输出线性脉动阵列

图6 PE内部结构示意

图7 多输出线性脉动阵列

图8 PE内部结构示意

图9 单Cache传输情况

4 单输出线性脉动阵列性能分析

本文所用的单输出线性脉动阵列和文献[11]的并行矩阵乘法器的对比从3个方面进行:计算循环周期、存取操作类别和存取操作次数以及资源耗费情况。下面依次进行说明(接下来分析针对没有0值的情况,为0值时对应线性脉动阵列的第一个方面改进)。

4.1 计算循环周期

4.2 存取操作类别和存取操作次数

图10 单输出线性脉动阵列实现矩阵乘法操作过程

表2 单输出线性脉动阵列和并行矩阵乘法器存取操作类别和存取操作次数对比

4.3 资源耗费情况

表3 并行矩阵乘法器用于Alexnet卷积加速时的FPGA内部资源使用情况

4.4 与并行矩阵乘法器对比

单输出线性脉动阵列和并行矩阵乘法器各有优缺点,具体的对比分析如表4所示。从表4可以看出,虽然时间耗费增多,但本文单输出的线性脉动阵列很好地弥补了传统的并行矩阵乘法器带宽要求太大的问题。

表4 单输出线性脉动阵列和并行矩阵乘法器对比

5 多输出线性脉动阵列性能分析

当结合具体CNN模型(如Alexnet)进行分析时,卷积核矩阵以及输入特征图矩阵太大,需要进行分块操作。文献[11]的单列并行矩阵乘法器用于Alexnet卷积加速时采用了448(14×32)个PE,为更好地进行理论上的对比,本文也采用14个并行的线性收缩阵列,每个有32个PE。为了有直观上的认识,把Alexnet各卷积层矩阵分块为大小为32×32的小矩阵后的情况列举出来以方便后面的分析,具体如表5所示。

表5 Alexnet各卷积层矩阵分块

分块后一个很重要的想法是进一步复用和并行流水线。14个并行的线性脉动阵列可以同时进行矩阵乘法计算,分块矩阵乘法有以下2种(如图11所示):第一种是为了在乘法完成后方便进行相加;第二种是为了实现对分块矩阵的复用,设置多级缓存可以进一步减少数据搬移量。

表6 多输出线性脉动阵列和并行矩阵乘法器存取操作类别和存取操作次数对比

表7 改进的线性脉动阵列和并行矩阵乘法器特点

相比单输出线性脉动阵列,多输出线性脉动阵列的最大优点是周期数大幅减少。相比并行矩阵乘法器,该方式仍然具有带宽的优势。具体应用场景方面,由于线性脉动阵列能利用输入中全部稀疏性(、中任意一者的稀疏性都能利用),对于像文献[19]中剪枝技术应用后带来的卷积核稀疏性,此时线性脉冲阵列的优势明显大于并行矩阵乘法器(并行矩阵乘法器只能利用某一方输入中稀疏性)。

6 结束语

本文针对CNN计算稀疏性的特点以及文献[11]所述的传统并行矩阵乘法器用于CNN加速的局限性,对文献[13-14]的线性脉动阵列提出了2种改进——单输出以及多输出线性脉动阵列,用于CNN嵌入式端的加速。文献[11]提出的并行矩阵乘法器直接作用于CNN加速时所需带宽太大,而线性脉动阵列正好能弥补该缺陷。单输出线性脉动阵列和并行矩阵乘法器对比有耗能以及I/O端口少的优势,但计算周期却是2倍的关系,所以本文进一步改进线性脉动阵列,提出了多输出线性脉动阵列。对比来看,多输出方式的周期及I/O需求介于两者之间,很好地解决了前两者的突出缺陷问题,可行性最高。本文所进行的对比分析只是理论上说明,如何最佳组合以及最充分利用资源并实现是下一步的工作。

[1] HAN S, MAO H, DALLY W J. Deep compression: compressing deep neural networks with pruning, trained quantization and huffman coding[J]. Fiber, 2015, 56(4): 3-7.

[2] QIU J, WANG J, YAO S, et al. Going deeper with embedded FPGA platform for convolutional neural network[C]// International Symposium on Field-Programmable Gate Arrays. 2016: 26-35.

[3] SABOUR S, FROSST N, HINTON G E. Dynamic routing between capsules[C]//Annual Conference on Neural Information Processing Systems. 2017.

[4] HAN S, LIU X, MAO H, et al. EIE: efficient inference engine on compressed deep neural network[J]. ACM Sigarch Computer Architecture News, 2016, 44(3): 243-254.

[5] CHEN W, WILSON J, TYREE S, et al. Compressing neural networks with the hashing trick[C]//International Conference on Machine Learning. 2015: 2285-2294.

[6] MA Y, CAO Y, VRUDHULA S, et al. Optimizing loop operation and dataflow in FPGA acceleration of deep convolutional neural networks[C]//International Symposium on Field-Programmable Gate Arrays. 2017:45-54.

[7] LI N, TAKAKI S, TOMIOKAY Y, et al. A multistage dataflow implementation of a deep convolutional neural network based on FPGA for high-speed object recognition[C]//2016 IEEE Southwest Symposium on Image Analysis and Interpretation. 2016: 165-168.

[8] SUDA N, CHANDRA V, DASIKA G, et al. Throughput-optimized openCL-based FPGA accelerator for large-scale convolutional neural networks[C]// International Symposium on Field-Programmable Gate Arrays. 2016: 16-25.

[9] XIAO Q, LIANG Y, LU L, et al. Exploring heterogeneous algorithms for accelerating deep convolutional neural networks on FPGAs[C]//The 54th Annual Design Automation Conference. 2017: 62-67.

[10] 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.

[11] 刘勤让, 刘崇阳. 利用参数稀疏性的卷积神经网络计算优化及其FPGA加速器设计[J]. 电子与信息学报, 2018, 40(6): 1368-1374.LIU Q R, LIU C Y. Calculation optimization for convolutional neural networks and FPGA-based accelerator design using the parameters sparsity[J]. JEIT, 2018, 40(6): 1368-1374.

[12] LIU X, HAN S, MAO H, et al. Efficient sparse-winograd convolutional neural networks[C]//International Conference on Learning Representations. 2017.

[13] JANG J W, CHOI S B, PRASANNA V K. Energy-and time-efficient matrix multiplication on FPGAs[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2005, 13(11): 1305-1319.

[14] MATAM K K, LE H, PRASANNA V K. Energy efficient architecture for matrix multiplication on FPGAs[C]//International Conference on Field Programmable Logic and Applications. 2013:1-4.

[15] JIA Y, SHELHAMER E, DONAHUE J, et al. Caffe: convolutional architecture for fast feature embedding[C]//The 22nd ACM International Conference on Multimedia. 2014: 675-678.

[16] JIA Y Q. Optimzing conv in caffe[R].

[17] MOONS B, DE BRABANDERE B, VAN GOOL L, et al. Energy-efficient convnets through approximate computing[C]// Applications of Computer Vision. 2016: 1-8.

[18] 田翔, 周凡, 陈耀武, 等. 基于FPGA的实时双精度浮点矩阵乘法器设计[J]. 浙江大学学报(工学版), 2008, 42(9):1611-1615. TIAN X, ZHOU F, CHEN Y W, et al. Design of field programmable gate array based real-time double-precision floating-point matrix multiplier[J]. Journal of Zhejiang University (Engineering Science), 2008, 42(9):1611-1615.

[19] HAN S, POOL J, TRAN J, et al. Learning both weights and connections for efficient neural network[C]//Annual Conference on Neural Information Processing Systems. 2015: 1135-1143.

[20] LAI B C C, LIN J L. Efficient designs of multi-ported memory on FPGA[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2017, 25(1): 139-150.

[21] CHEN J, LI J. The research of peer-to-peer network security[C]//The International Conference on Information Computing and Automation. 2015: 590-592.

Based on linear systolic array for convolutional neural network’s calculation optimization and performance analysis

LIU Qinrang, LIU Chongyang, ZHOU Jun, WANG Xiaolong

(National Digital Switching System Engineering and Technological R&D Center, Zhengzhou 450002, China)

Concerning the issue that the convolutional neural network (CNN) accelerator design on most FPGA ends fails to effectively use the sparsity and considering both bandwidth and energy consumption, two improved CNN calculation optimization strategies based on linear systolic array architecture are proposed. Firstly, convolution is transformed into matrix multiplication to take advantage of sparsity. Secondly, in order to solve the problem of large I/O demand in traditional parallel matrix multiplier, linear systolic array is used to improve the design. Finally, a CNN acceleration comparative analysis of the advantages and disadvantages between parallel matrix multiplier and two improved linear systolic arrays is presented. Theoretical proof and analysis show that compared with the parallel matrix multiplier, the two improved linear systolic arrays make full use of sparsity, and have the advantages of less energy consumption and less I/O bandwidth occupation.

linear systolic array, convolutional neural network, sparsity, I/O bandwidth, performance analysis

TP183

A

10.11959/j.issn.2096-109x.2018100

2018-08-10;

2018-10-29

刘崇阳,zmylmh1@163.com

国家科技重大专项基金资助项目(No.2016ZX01012101);国家自然科学基金资助项目(No.61572520);国家自然科学基金创新研究群体资助项目(No.61521003)

The National Science Technology Major Project of China (No.2016ZX01012101), The National Natural Science Foundation of China (No.61572520), The National Natural Science Foundation Innovation Group Project of China (No.61521003)

刘勤让(1975-),男,河南睢县人,国家数字交换系统工程技术研究中心研究员,主要研究方向为宽带信息网络、片上网络设计。

刘崇阳(1994-),男,湖北宜昌人,国家数字交换系统工程技术研究中心硕士生,主要研究方向为人工智能、深度学习。

周俊(1979-),男,湖北黄冈人,国家数字交换系统工程技术研究中心讲师,主要研究方向为芯片设计、宽带信息处理。

王孝龙(1993-),男,河南民权人,国家数字交换系统工程技术研究中心硕士生,主要研究方向为宽带信息网络、协议解析。

猜你喜欢

崇阳乘法器分块
一种基于中国剩余定理的高效乘法器设计
钢结构工程分块滑移安装施工方法探讨
一种低开销的近似乘法器设计
关于4×4分块矩阵的逆矩阵*
等天晴的时候
崇阳《双合莲》的自由抗争与诗性传统
分块矩阵在线性代数中的应用
一种高性能快速傅里叶变换的硬件设计
大力实施商标战略 建设鄂南品牌强镇——崇阳市天城镇发展纪实
Love and Education