论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)

论文笔记一(卷积神经 络嵌入FPGA平台的研究)

文章目录

  • 论文笔记一(卷积神经 络嵌入FPGA平台的研究)
  • 摘要
  • 一、论文贡献介绍
  • 二、背景
  • 三、相关工作
  • 四、CNN复杂度分析
    • 4.1 时间复杂度
    • 4.2 空间复杂度
    • 4.3 复杂度分析
  • 五、数据量化
    • 5.1 量化流
      • 5.1.1 权重量化
      • 数据量化
    • 5.2 不同策略的分析
  • 六、系统设计
    • 6.1 整体架构
    • 6.2 PE 架构
    • 6.3 详细设计
      • 6.3.1 工作计划
      • 6.3.2 控制器系统
  • 七、存储系统
    • 7.1 缓冲设计
    • 7.2 CONV图层的数据排列
    • 7.3 FC层的数据排列
  • 八、系统评估
    • 8.1 理论估算
      • 8.1.1 卷积层估算
      • 8.1.2 FC层估算
    • 8.2 技术性能分析
    • 8.3 设计比较
  • 总结
  • 分析

摘要

基于CNN的方法计算量大、资源消耗大。因此集成到智能手机、虚拟现实和机器人等嵌入式系统中,FPGA是最有希望加速CNN的平台之一,但有限的带宽和片上内存大小限制了FPGA加速器对CNN的性能。
论文深入研究嵌入式FPGA平台对CNN的加速,提出了一种基于FPGA的CNN加速器设计,用于大规模图像分类。首先对最先进的CNN进行了深入分析,并表明卷积层以计算为中心,全连接层以内存为中心。为了提高带宽和资源利用率,提出了一种动态精度数据量化方法和一种适用于CNN所有层类型的高效卷积器设计。
实验结果,当使用8/4位量化时,对于非常深的VGG16模型,数据量化流程仅引入了0.4%的精度损失。提出了一种数据排列方法,以进一步确保外部存储器带宽的高利用率。最后,作案例研究,在嵌入式FPGA平台上实现了一个最新的CNN,VGG16-SVD。VGG16-SVD是迄今为止在FPGA上实现的最大、最精确的 络。Xilinx Zynq ZC706板上的系统采用16位量化,帧率为4.45 fps,前5位精度为86.66%。在150兆赫兹工作频率下,卷积层和CNN的平均性能分别为187.8和137.0,明显优于以前的方法。


一、论文贡献介绍

二、背景

对于嵌入式FPGA平台,我们只专注于加速一个CNN的推理过程。
这篇论文使用ILSVRC 2014训练数据集对所有CNN模型进行训练,并使用ILSVRC 2014验证集进行评估。
为了加速CNN,从软件和硬件两个角度进行研究。从软件的角度来看,目标是压缩CNN模型,以减少内存占用和操作数量,同时最大限度地降低精度损失。从硬件角度来看,特定的架构和模块旨在重用数据,增强数据的“局部性”,并加速卷积运算。为了在嵌入式系统上部署CNN模型,与在CPU或GPU平台上相比,运算符和权重的位宽通常会减小。

五、数据量化

论文提出了一个动态精度数据量化流程,并将其与广泛使用的静态精度量化策略进行了比较。

5.1 量化流

提出的量化流程主要包括两个阶段:权重量化阶段和数据量化阶段

5.1.1 权重量化

其中W是权重,W(bw,fl)表示给定bw和fl下W的定点边界。
在这一阶段,首先分析每一层中权重的动态范围。之后,fl被初始化以避免数据溢出。此外,我们还在初始fl的相邻域中寻找最优fl。

数据量化

数据量化阶段旨在为两层之间的一组特征图找到最佳fld。在此阶段,使用贪婪算法逐层比较定点CNN模型和浮点CNN模型的中间数据,以减少精度损失。对于每一层,优化目标如下所示:

六、系统设计

6.1 整体架构

提出了一个CPU+FPGA的异构架构来加速中枢神经系统。下图显示了系统架构。整个系统可以分为两部分:可编程逻辑(PL)和处理系统(PS)。

卷积器采用经典的行缓冲器设计[29],如下图所示。当输入数据以主要行布局通过缓冲器时,行缓冲器释放输入图像上的窗口选择功能。因此,由乘法器和加法器树跟随的选定窗口将计算卷积结果,每个周期一个数据。由于FC层的瓶颈出现在带宽上,所以我们使用这个模块来计算FC层的矩阵向量乘法,即使效率并不好。为了实现这个功能,我们通过在每一行的末尾使用一个多路复用器,将行缓冲器的每一行的延迟设置为与内核大小相同。在建议的实现中,内核大小为3。当输入数据通过缓冲器时,我们在选定的窗口中每9个周期得到一个全新的向量,并进行向量内积。因此,卷积器可以做一个矩阵乘以大小为9的向量。

6.3.2 控制器系统

太复杂,后期更新。

七、存储系统

7.1 缓冲设计

PL端有两个片内缓冲器,即输入缓冲器和输出缓冲器。输入缓冲器存储偏差、图像数据和权重。输出缓冲区保存从PE生成的结果,并在适当的时候向PE提供中间结果。为了简化说明,我们定义了三个参数,如下图所示

7.3 FC层的数据排列

FC层的计算速度主要受带宽的限制。提出的系统使用其中一个PEs中的卷积器复合体来进行FC层的计算。在这种情况下,我们需要充分利用当前PL结构的外部存储器的带宽。
在我们的系统中,我们为一个PE中的64个计算复合体中的每一个分配一个长度为900的缓冲区,即相同的Tr × Tr。在计算CONV图层时,会逐个填充缓冲区。为了减少用于填充缓冲区的额外数据路由逻辑,同时在为计算FC层提取数据时保持较长的突发长度,我们在外部存储器中安排权重矩阵。我们首先将整个矩阵分成64×9列100行的块,这样一个块可以在一个阶段中处理。在每个块中,数据的排列如图(b)所示。如果没有FC层的数据排列,如图(a)所示,当突发长度仅为9时,我们需要64×100个DMA事务来加载一个数据块。通过按照图9 (b)排列数据,我们只需要一个DMA事务来加载整个块,长的突发长度确保了外部存储器带宽的高利用率。

8.1 理论估算

8.1.1 卷积层估算

CONV层,当采用平铺时,一个CONV层所需的相数可以通过以下公式计算:

8.1.2 FC层估算

FC层,不同任务的阶段数和时间可以用以下公式估算:

8.3 设计比较

如表7所示,我们将我们的CNN加速器与之前的工作进行了比较。在[30]中,该设计在3个模型上进行了验证,包括单个CONV层、用于人脸识别的由2个CONV层组成的模型以及用于没有结构细节的街道解析的模型。由于第一个模型缺乏通用性,并且没有提供第三个模型的结构细节,因此采用了两层CNN模型的结果进行比较。我们还将[6]中的单位GF LOP转换为GOP进行比较。


总结


分析

第五章可用于后期优化方案。数据量化和权重量化的方案和对比方式
第三章用于 络复杂度分析。
第六章系统参照。
第七章存储系统参照。
第八章系统评估参照。(先做理论估值、再做实际)

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树首页概览11212 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月14日
下一篇 2021年7月14日

相关推荐