A Novel FPGA Accelerator Design for Real-Time and Ultra-Low Power Deep Convolutional Neural Networks Compared With Titan X GPU
Abstart
卷积神经网络(CNNs)的深度学习算法需要高数据流和计算强度。对于实时工业应用,需要克服诸如高数据带宽要求和硬件平台上的功耗等问题。本文详细分析了CNN加速器中的数据依赖性,并提出了具体的流水线操作和数据组织方式,在FPGA上设计了一个高吞吐量CNN加速器。
1.Introduction
卷积计算量很大,标准的卷积层是通过乘法累加(MAC)运算来实现的。例如在YOLO V2框架的前向推理过程中,92%的执行时间花费在MAC上。
处理计算量大的网络可以使用GPU,尽管现代高端GPU在DNN性能上具有很高的计算吞吐量,但它也具有较高的功耗,并且与工作站协作的工作量太大,难以携带,降低了其在工业领域的实用性。FPGA是替代GPU的解决方案之一,它具有处理单元大、功耗低、可重构、便携等特点。
但是FPGA也有缺点:与GPU不同,FPGA上的内存没有缓存结构,带宽比高端GPU旧两代(例如FPGA Arria 10上的DRAM是DDR3, GPU Titan X上的内存是GDDR5)。数据依赖和内存带宽等设计挑战使得它很难像高端GPU那样实时快速工作,特别是在低功耗设备上。此外,片上内存大小的限制也是FPGA的瓶颈。片内存储器和片外存储器(例如DRAM)之间的数据移动将引入大的功耗和延迟。
本文主要研究点就是设计一款高吞吐量、低功耗、低延迟的基于FPGA的CNN加速器。主要内容包括:
- 详细分析了CNN加速器中的数据依赖性,提出了一种基于CNN的高吞吐量FPGA加速器。使用流水线的MAC操作结构来消除循环携带的数据依赖性。我们还提出了Zigzag提取单元来消除行数据的依赖性;
- 为实现高功率效率,我们提出了批量归一化(BN)和规模/偏差(SB)的离线预处理和近似表达式相结合的核计算;
- 在目标检测任务中使用了8-16位混合定点数据表示;
- CNN加速器提供了一个可定义的接口来轻松地重新配置新的CNN模型,并且它支持Caffe框架;
2.Background
2.1 Related Work
CNN加速器可以分成三类:处理计算内核中的优化问题、处理带宽优化以提高吞吐量、模型优化。
2.2 FPGA实现方法
实现CNN在FPGA运行的方法有两类:第一类是高层次综合(HLS)方法,指的