Going Deeper with Embedded FPGA Platform for Convolutional Neural Network. 深鉴科技文章调研

1.全连接层和SVD算法

全连接层相当于卷积核大小与输入feature map大小一致,卷积核个数与全连接层神经元个数一致的一个卷积层。全连接层的实现方法上没有难度,难点在于大量的权重数据存储。

VGG16各层数据量

如上图所示为VGG16中各层所包含feature map的数据量以及权重数据量。

可以清晰的看到,FC第一层的feature map(即图中的memory)数据量仅为4096个数据,而该层的权重数据(即图中的params)数据量为1亿个数据,是最后一层卷积层CONV3-512的40倍以上。

根据深鉴科技文章中的定点化方案,使用较小的数据位宽8bit,则该层权重数据有98MB,这对于片上存储来说是非常昂贵的。

上面的假设建立在FC层同时将全部权重加载到片上进行计算,很显然这并不显示。如果FC层每次加载一个卷积核(即大小为7×7×512大小的卷积核),那么每次计算所需的片上资源则减少到28.5KB,但是需要进行4096次这样的计算才能得到全部的计算结果,将会耗费大量的访存时间和计算时间。

深鉴科技SVD方法解决权重数据量过大问题

深鉴科技在文章中提到了SVD方法来将权重数据分解为两部分,可以显著减少片上存储的数据量。SVD即奇异值分解,可以将权重矩阵W(维度假设为m×n)分解为W=Ud×Sd×Vd三个矩阵相乘的形式,其中Ud矩阵维度为m×d,Sd矩阵维度为d×d,Vd矩阵维度为d×n,并且Sd矩阵是只有对角线有非零数据的矩阵,因此Sd矩阵在计算中占存储空间很小,只有d个数据需要存储,而Ud矩阵和Vd矩阵可以通过适当选取d的大小来达到减小存储空间的目的。

除了深鉴科技文章中提到的方法,还可以通过分割计算矩阵等方法减少每次需要读入片上存储的数据量,这种方法在参考文献[2]中有所提及。

总的来说,全连接层的实现难度并不高,但是想要获得较高的运行速度需要对数据存储进行较高程度的优化设计,深鉴科技文章中提及的SVD方法可以较好的减小权重矩阵的大小,SVD方法也仅仅是一种软件算法,可以在前端使用Python或Matlab等方法非常快速的实现,可行性很高,但是该方法处理后的权重矩阵仍然需要非常大的存储空间。因此在硬件实现中如何安排计算顺序和访存方法,是很重要的问题。

2.数据量化方法

深鉴科技的CNN实现方法中所提及的动态精度量化方法在硬件实现难度上与定点化实现方案应该差别不大,但是在仿真设计过程中需要对定点化方案进行更深入的设计。

深鉴科技在实现动态精度量化方法中利用贪婪算法,通过在不同特征图之间使用不同精度量化大小fl,相同层之内使用相同精度量化来最小化每一层/特征图之内的截断误差。

根据文献中的数据和描述,我认为动态精度量化中最复杂的部分应该是量化环节,需要根据贪婪算法原则确定每层之间量化结果均为误差最小的。其次,在硬件上需要针对每层硬件进行单独设计,层与层之间因为量化精度的不同可能导致部分硬件无法复用。

3.Tiling

Tiling可以有效降低访存次数和时间,降低系统latency,从原理上来说该方法并不困难。从硬件设计的角度上来说,我认为主要存在的难点在于DDR中数据的组织需要进行认真的考量。这一方法的可行性较高,并且对于卷积层系统性能的提升应该比较可观。

4.总结

全连接层的实现上有一定困难,可能需要对feature map进行分割运算,并对权重数据进行SVD分解,以适应较小的片上存储,这些方法需要针对硬件特征(片上存储大小、DDR读取带宽、计算单元并行度和吞吐量等)进行仔细的设计和优化。

动态精度量化方法可行度较高,可以帮助减少误差损失。

Tiling方法可以降低卷积层的访存时间,在硬件实现上可行度较高,难点在于需要对数据存储进行一定的优化排列。

如果想要了解更加深入的相关内容,可以参考文献[3],该篇综述中提及了动态精度量化方法和tiling等方法的相关论文,对于全连接层也有所涉及。在文献[4]中还提及了一种更加激进的方法实现CNN网络,这篇文章中使用了2bit作为定点数据位宽,据称可以实现20%以内的误差。

参考文献

[1] Qiu J , Wang J , Yao S , et al. Going Deeper with Embedded FPGA Platform for Convolutional Neural Network[C]// Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, 2016.
[2] 周鑫. 全连接神经网络在FPGA上的实现与优化[D].中国科学技术大学,2018.
[3]Accelerating CNN inference on FPGAs: A Survey. Kamel Abdelouahab, Maxime Pelcat, Jocelyn Sérot, François Berry. Institut Pascal,Clermont Ferrand, FranceIETR, INSA Rennes, France. January 2018
[4] Nakahara H , Fujii T , Sato S . A fully connected layer elimination for a binarizec convolutional neural network on an FPGA[C]// 2017 27th International Conference on Field Programmable Logic and Applications (FPL). IEEE, 2017.

你可能感兴趣的:(Going Deeper with Embedded FPGA Platform for Convolutional Neural Network. 深鉴科技文章调研)