Skip to main content
QUICK REVIEW

[论文解读] A flexible FPGA accelerator for convolutional neural networks

Kingshuk Majumder, Nema, Shubham|arXiv (Cornell University)|Dec 16, 2019
CCD and CMOS Imaging Sensors参考文献 31被引用 4
一句话总结

本文提出了一种基于FPGA的灵活CNN加速器,采用处理单元(PE)的一维Systolic数组,可动态适应不同形状的CNN层,无需重新配置,通过全面的数据重用最大限度减少资源闲置和片外内存访问。该设计在真实的Xilinx VC709 FPGA上实现了高性能——持续维持理论峰值的显著比例,且通过硬件-软件协同设计的软件栈实现了完整的TensorFlow集成。

ABSTRACT

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 生成,并经人工编辑审核。