本文介绍一篇2021年发表于IEEE Transactions On Circuits And Systems I的关于通过剪支的方式实现高性能CNN加速器的论文。该论文通过将DNN等模型中的层分为两组并只对其中一组进行剪支操作,从而在保证较小的精度损失的同时实现压缩率和处理效率间的折中。
本文改良了传统的“剪裁CNN”的方法,在低精度损失的前提下实现了高压缩率,这对于在FPGA和ASIC上实现卷积神经网络有着重要的实践意义。
本文提出了一种全新的压缩模型压缩策略,并基于该策略提出了一种软硬件协同优化的策略。
论文提出对不同的层采用不同的压缩策略。所有层分为两种类型:NP层和P层。在开始时,所有层都被修剪。然后用增量量化对P层进行量化。在量化过程中,P层的修剪和量化引入的误差通过NP层的权值更新来补偿,之后NP层不再稀疏。该模型具有更强的容错能力,从而使模型更容易收敛。
如上图所示,论文提出了混合量化的方法以达到较大压缩率与较小精度损失之间的折衷。
该论文采用VGG-16模型,在Caffe平台上实现了所提出的压缩策略,与单精度浮点VGG-16模型相比,论文中提出的方法获得27.5×压缩比,top-1精度损失2.04%,top-5精度损失0.44%。
论文分别提出了两种硬件架构来处理两种类型的层(NP/P)。针对NP层的常规卷积模型,提出了一种基于FIR的卷积处理单元和改进的数据流。
如上图所示,复杂卷积处理单元(CCPU)由多个卷积处理单元组成, CCPU内的卷积处理单元数目用 Mnp来表示。
为了提高FIR滤波器的二维卷积性能,论文中提出了一种改进的卷积层数据流:将二维特征映射矩阵集成到一个数组中。
并行度为F的FIR滤波器需要F倍的采样率。针对片内存储空间有限的问题,本文提出了一种F×F乒乓缓冲区(FPPB)。
文中提出了一种提高处理速度的分布式卷积体系结构。同一CCPU(复杂卷积处理单元)中的每个PE单元都有一个RAM来传输特征图,不同的CCPU接收来自不同RAM的权重。因此,数据传输速度与处理速度相匹配,解除了带宽的限制。
P层基于所提出的压缩策略,构建了一个±2n种权值类型的高压缩稀疏模型。用移位操作代替乘法,以减少资源。
文中提出的F × F卷积- pe还可以计算较小的卷积核,这是由输入权值决定的。但如果某些层的卷积核太大(如7X7),提出的卷积处理单元便无法处理,为此对PE单元进行扩展。
论文中提出的方法分别在FPGA和Xilinx VCU118评估版上做了相应的实现,结果表明与当下其他先进的技术相比论文中的方法有着明显的优势。
如上图所示,作者将论文中提出的方法与其他论文中的先进方法进行了多个指标的比较。
关 注 我 们
实验室网站:http://viplab.fudan.edu.cn/
OpenASIC官方网站:www.openasic.org
知乎专栏:http://zhuanlan.zhihu.com/viplab
微信公众号:OpenASIC
继续阅读
阅读原文