基于流水线架构的卷积神经网络FPGA实现
2021-11-13崔江伟周勇胜项德良
崔江伟 周勇胜 张 帆 尹 嫱 项德良
(北京化工大学 信息科学与技术学院, 北京 100029)
引 言
近年来,卷积神经网络(CNN)成为图像处理、自然语言处理和语音识别等领域的研究热点[1-2]。CNN涉及大量的运算,但是传统的冯诺依曼结构不能充分发挥神经网络并行处理的优势,导致其难以在一些便携式硬件平台上应用。由于CNN的结构比较特殊,既包含大量的乘加法运算,也涉及大量的内存数据访问,因此如何设计出计算性能和功耗相平衡的架构是设计人员首要关注的问题。在现有的通用计算平台中,现场可编程门阵列(field programmable gate array, FPGA)是相对比较理想的硬件平台,它有丰富的寄存器资源、运算资源、存储资源、IO资源和高速接口,便于卷积运算单元和流水线结构的设计,也方便CNN网络中间数据的缓存以及与片外存储的交互。这些优势都很适合于CNN推理阶段的应用。因此,有许多研究人员提出了基于FPGA的深度学习算法的硬件快速运算方案[3]。
Chen等[4]设计的CNN专用芯片将中间缓存数据存储在内部,能获得较高的并行度,但其结构固定、灵活性较差,不具有通用性。Lu等[5-8]采用Winograd算法来实现卷积运算,能够有效减少数字信号处理单元(digital signal processor,DSP)资源的消耗,不过这种快速算法只适合于较小尺寸卷积核的CNN,不适用于通用的卷积网络。Zhang等[9]提出采用快速傅里叶变换(fast Fourier transform,FFT)的方法将卷积运算转换到频域,通过这种方式乘累加运算就变为了点乘运算,计算性能得到提高,但是只适用于较大尺寸的卷积核。Qiu等[10]提出了单指令多数据(single instruction multiple data,SIMD)的加速器模型,有效地解决了中间数据的存储问题,但是由于没有考虑传输时延,其实际性能与理论相差较大。……