Skip to main content
QUICK REVIEW

[论文解读] CodeX: Bit-Flexible Encoding for Streaming-based FPGA Acceleration of DNNs

Mohammad Samragh, Mojan Javaheripi|arXiv (Cornell University)|Jan 17, 2019
Advanced Neural Network Applications参考文献 32被引用 8
一句话总结

CodeX 引入了一种适用于基于流式处理的FPGA加速的位灵活、非线性编码框架,通过硬件优化的流式缓冲区和受强化学习启发的位宽自动调优算法,实现了片上编码激活的执行。与仅权重编码相比,其吞吐量提高了4.65倍;在ImageNet上,相比全精度DNN加速器,吞吐量和每瓦性能分别提升了3.6倍和2.54倍。

ABSTRACT

This paper proposes CodeX, an end-to-end framework that facilitates encoding, bitwidth customization, fine-tuning, and implementation of neural networks on FPGA platforms. CodeX incorporates nonlinear encoding to the computation flow of neural networks to save memory. The encoded features demand significantly lower storage compared to the raw full-precision activation values; therefore, the execution flow of CodeX hardware engine is completely performed within the FPGA using on-chip streaming buffers with no access to the off-chip DRAM. We further propose a fully-automated algorithm inspired by reinforcement learning which determines the customized encoding bitwidth across network layers. CodeX full-stack framework comprises of a compiler which takes a high-level Python description of an arbitrary neural network architecture. The compiler then instantiates the corresponding elements from CodeX Hardware library for FPGA implementation. Proof-of-concept evaluations on MNIST, SVHN, and CIFAR-10 datasets demonstrate an average of 4.65x throughput improvement compared to stand-alone weight encoding. We further compare CodeX with six existing full-precision DNN accelerators on ImageNet, showing an average of 3.6x and 2.54x improvement in throughput and performance-per-watt, respectively.

研究动机与目标

  • 解决基于FPGA的加速器中DNN激活内存占用过高的问题,该问题限制了片上流式执行并增加了对片外DRAM的访问。
  • 通过为微分不可导的非线性编码函数开发梯度近似方法,克服训练非微分可导非线性编码DNN的挑战。
  • 自动化逐层编码位宽选择,以在最小化精度损失的同时最大化内存节省,避免手动且次优的调优。
  • 提供高层级、开源的API,实现从PyTorch模型到FPGA硬件的快速生成,降低非重复工程成本。
  • 通过片上流式缓冲区实现端到端、位灵活的编码DNN硬件加速,消除对片外内存的访问。

提出的方法

  • 引入在线、非线性编码DNN激活,显著降低内存占用,实现无需片外DRAM访问的完整片上流式执行。
  • 为非微分可导的编码函数开发可微分的梯度近似方法,以支持编码DNN的端到端反向传播与微调。
  • 采用受强化学习启发的算法,基于状态-动作-奖励的建模方式,自动选择在精度与内存节省之间取得平衡的逐层编码位宽。
  • 设计支持可变精度定点算术和片上缓冲的位灵活、流式感知计算单元(MVAUs)的硬件库。
  • 构建高层级编译器API,将高层级的PyTorch风格DNN描述转换为适用于Vivado HLS的C++代码,以实现FPGA部署。
  • 采用流式数据流架构,中间特征在运行时被即时编码,并通过片上缓冲在层间流式传输,完全消除对片外内存的访问。

实验结果

研究问题

  • RQ1如何将DNN激活的非线性编码集成到训练与推理流程中,在不损失精度的前提下显著降低内存占用?
  • RQ2是否存在一种有效且自动化的逐层编码位宽确定方法,可在模型精度与内存节省之间实现最佳平衡?
  • RQ3能否在不访问片外DRAM的情况下实现编码DNN的片上流式执行?其性能提升如何?
  • RQ4与手工设计或启发式方法相比,所提出的基于强化学习的位宽选择策略在精度与效率方面表现如何?
  • RQ5高层级、开源的API在多大程度上能简化编码DNN的FPGA部署,实现极低工程投入?

主要发现

  • 在MNIST、SVHN和CIFAR-10数据集上,CodeX相比独立权重编码实现了平均4.65倍的吞吐量提升。
  • 在ImageNet上,CodeX相比六种现有全精度DNN加速器,吞吐量提升3.6倍,性能每瓦提升2.54倍。
  • MVAU引擎中编码/解码的运行时开销可忽略不计,超过90%的周期用于VDP计算,编码/解码操作占不到10%。
  • 基于强化学习的位宽选择算法成功识别出接近最优的配置,在最小化精度损失的同时最大化内存压缩。
  • 该框架通过仅使用片上流式缓冲区,实现了DNN的完整片上执行,消除了对片外DRAM的访问,显著降低功耗与延迟。
  • 开源API可实现将PyTorch风格DNN模型直接转换为FPGA优化硬件代码,工程投入极低。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。