[论文解读] A flexible FPGA accelerator for convolutional neural networks
本文提出了一种基于FPGA的灵活CNN加速器,采用处理单元(PE)的一维Systolic数组,可动态适应不同形状的CNN层,无需重新配置,通过全面的数据重用最大限度减少资源闲置和片外内存访问。该设计在真实的Xilinx VC709 FPGA上实现了高性能——持续维持理论峰值的显著比例,且通过硬件-软件协同设计的软件栈实现了完整的TensorFlow集成。
Though CNNs are highly parallel workloads, in the absence of efficient on-chip memory reuse techniques, an accelerator for them quickly becomes memory bound. In this paper, we propose a CNN accelerator design for inference that is able to exploit all forms of reuse available to minimize off-chip memory access while increasing utilization of available resources. The proposed design is composed of cores, each of which contains a one-dimensional array of processing elements. These cores can exploit different types of reuse available in CNN layers of varying shapes without requiring any reconfiguration; in particular, our design minimizes underutilization due to problem sizes that are not perfect multiples of the underlying hardware array dimensions. A major obstacle in the adoption of FPGAs as a platform for CNN inference is the difficulty to program these devices using hardware description languages. Our end goal is to also address this, and we develop preliminary software support via a codesign in order to leverage the accelerator through TensorFlow, a dominant high-level programming model. Our framework takes care of tiling and scheduling of neural network layers and generates necessary low-level commands to execute the CNN. Experimental evaluation on a real system with a PCI-express based Xilinx VC709 board demonstrates the effectiveness of our approach. As a result of an effective interconnection, the design maintains a high frequency when we scale the number of PEs. The sustained performance overall is a good fraction of the accelerator's theoretical peak performance.
研究动机与目标
- 通过在多个维度上最大化片上数据重用,解决基于FPGA的CNN加速器中内存受限的性能瓶颈问题。
- 通过使用可灵活适配任意层形状的1D Systolic核心,克服固定2D PE阵列的局限性,避免重新配置。
- 通过支持动态分块与映射CNN层块,最小化因阵列维度非完美倍数导致的资源闲置。
- 通过硬件-软件协同设计的软件栈,实现与TensorFlow等高层框架的无缝集成,抽象低层FPGA复杂性。
- 在真实FPGA硬件上实现高时钟频率与可扩展的性能,适用于不同数量处理单元的配置。
提出的方法
- 设计基于一维处理单元(PE)阵列的核心架构,支持任意形状CNN层块的卷积运算。
- 实现专用互连与数据流机制,以利用输入特征图重用、权重重用、部分和重用以及输入、输出和通道维度上的卷积重用。
- 在硬件-软件协同设计的软件框架内应用分块与调度启发式方法,将层映射到加速器,同时最小化片外内存带宽。
- 开发TensorFlow XLA后端与设备注册机制,实现在无需低层硬件编码的情况下,端到端在FPGA上执行CNN模型。
- 利用高层次综合与硬件感知调度,即使在接近最大PE利用率时,仍能保持高时钟频率。
- 从高层图表示生成低层命令,以在运行时驱动FPGA加速器。
实验结果
研究问题
- RQ1如何在无需重新配置的情况下,使基于FPGA的CNN加速器高效利用所有形式的数据重用(输入、权重、部分和),并适配多样的CNN层形状?
- RQ2与2D阵列相比,1D Systolic阵列架构在减少因层维度不规则导致的资源闲置方面,能实现多大程度的优化?
- RQ3灵活可重构的FPGA加速器能否在扩展处理单元数量的同时,维持高性能与高时钟频率?
- RQ4通过硬件-软件协同设计的软件栈,高层深度学习框架(如TensorFlow)与低层FPGA加速器的集成效率如何?
- RQ5实际性能可达到理论峰值的多少比例?与先前开源的FPGA CNN加速器相比表现如何?
主要发现
- 1D Systolic阵列设计维持了理论峰值性能的高比例——显著高于以往公开的、硬件配置相似的FPGA CNN加速器。
- 即使在扩展处理单元数量时,设计仍能保持高时钟频率,表明资源利用高效,且互连复杂性带来的面积开销极小。
- 软件栈支持通过TensorFlow透明执行CNN模型,自动分块与调度由协同设计流程处理。
- 该加速器使用652个DSP切片,性能高于先前工作如Zhang et al. [36](61.2 GFLOPs)和Caffeine [35](488 GOPs),尽管采用更低精度的int8运算。
- 通过动态将块映射到1D核心,该方法有效减少了因阵列维度非倍数导致的资源闲置,实现了对各种层形状下所有PE的高效利用。
- 基于PCI-Express接口的Xilinx VC709 FPGA上的实验结果证实,该设计在减少片外内存访问和维持高吞吐量方面具有显著有效性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。