天天看点

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

论文笔记一(卷积神经网络嵌入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,明显优于以前的方法。

一、论文贡献介绍

CNN在各类比赛中明显高于其他传统的图像分类方法。大多数基于CNN的方法必须依赖于大型服务器。然而,对于需要高精度和实时对象识别能力的嵌入式系统,如自动驾驶汽车和机器人来说,已经形成了一个不可忽视的市场。但是对于嵌入式系统来说,有限的资源和能耗是严重的问题。为了解决这个问题,许多研究人员从计算或内存访问方面提出了各种CNN加速技术[6,7,8,9,10,11,12,13]。然而,大多数以前的技术只考虑小型CNN网络,如5层LeNet,用于简单的任务,如MNIST手写数字识别[14]。用于大规模图像分类的最先进的CNN模型具有极高的复杂性,因此只能存储在外部存储器中。以这种方式,存储器带宽成为加速网络的一个严重问题,特别是对于嵌入式系统。

论文深入研究了如何在FPGA平台上部署全CNN系统到加速器。提出了一种用于Image-Net大规模分类的CNN加速器,能够以4.45 fps的速度执行非常深的VGG16-SVD模型。具体而言,本文做出以下贡献。

1)深入分析了用于大规模图像分类的最先进的CNN模型。研究表明,最先进的CNN模型极其复杂(例如,VGG16模型有1.38亿个权重,需要超过30个GOP),CONV层以计算为中心,FC层以内存为中心。

2)提出了动态浮动数据量化的自动化流程,并探索了各种数据配置。提出了动态精确数据量化的自动流程,并探索了各种数据质量。

3)发现FC层的性能主要受嵌入式FPGA平台上的内存带宽限制,这与CONV层不同。通过这种方式,我们将SVD应用到第一个FC层的权重矩阵中,减少了该层85.8%的内存占用,设计了可以计算FC层的卷积器,降低了资源消耗,并提出了加速FC层的数据排列方案。

4)提出了一种基于嵌入式FPGA平台的CNN加速器设计,用于大规模图像分类。在Xilinx Zynq平台上,我们的系统在150兆赫频率下,CONV层和CNN的性能分别达到了187.8和137.0。使用VGG16SVD网络,我们的实现以4.45 fps的速度实现了86.66%的前5名精度。

二、背景

对于嵌入式FPGA平台,我们只专注于加速一个CNN的推理过程。

这篇论文使用ILSVRC 2014训练数据集对所有CNN模型进行训练,并使用ILSVRC 2014验证集进行评估。

为了加速CNN,从软件和硬件两个角度进行研究。从软件的角度来看,目标是压缩CNN模型,以减少内存占用和操作数量,同时最大限度地降低精度损失。从硬件角度来看,特定的架构和模块旨在重用数据,增强数据的“局部性”,并加速卷积运算。为了在嵌入式系统上部署CNN模型,与在CPU或GPU平台上相比,运算符和权重的位宽通常会减小。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

三、相关工作

1)模型压缩:网络剪枝和分解被广泛用于压缩CNN模型。在早期的工作中,网络修剪被证明是降低网络复杂性和过度拟合的有效方法[17,18,19]。在[20]中,Han等人对神经网络中影响较小的连接进行了删减,在不损失精度的情况下,实现了CaffeNet和VGG16模型的9倍和13倍压缩。SVD分解 [21]经常用于减少内存占用。在[22]中,Denton等人使用SVD和过滤器聚类来加速CNNs的前两个FC层。张等[23]提出了一种在更深层次模型上进行测试的方法,该方法使用网络参数的低秩分解并考虑了非线性单元。Jaderberg等人[24]使用秩1滤波器来近似原始滤波器。

2)数据量化:在专用集成电路和现场可编程门阵列上实现定点运算单元比浮点运算单元更有效。因此,大多数CNN加速器使用定点数而不是浮点数[7,25,26,6]。较短的权重和数据定点表示也可以显著减少内存占用和计算资源。例如,陈等证明了在65nm制作工艺下,16位乘法器的面积和功率分别是32位乘法器的0.164倍和0.136倍[7]。以前的工作大多采用16位量化策略[27,25,7,8]。在[7]中,Chen等证明了用16位数代替32位数在数据集上只增加0.26%的错误率。在[8]中,推理过程中使用了16位数字,而训练过程中使用了32位数字,在MNIST数据集上的结果显示准确率仅降低了0.01%。为了在嵌入式FPGA平台上加速大型CNN模型,数据量化相当重要,引入可忽略精度损失的较短表示总是可以预期的。

3)CNN加速:CNN加速器设计一般可以分为两组:第一组侧重于计算引擎,第二组旨在优化内存系统。CNN是计算密集型的,因此需要强大的计算引擎来加速它们。Chakaradhar等人在[11]中提出了一种CNN的动态可配置架构。他们在计算模块之间增加了专用开关,以实现跨不同CNN的动态配置设计空间探索。还提出了一个联合编译器来充分利用CNN工作负载之间的并行性。CNN的CONV层中的权重在计算中被多次使用,因此频繁的内存访问会显著降低整体性能。在[7]中,Chen等人使用了数据重用的切片策略和专用缓冲区来减少总通信量。

4)带宽问题:CONV层以计算为中心:它们包含很少的参数,但需要大量的操作;FC层以内存为中心:它们通常包含数亿个权重,每个权重仅使用一次。因此,从外部存储器加载权重会显著降低FC层的性能。换句话说,带宽限制了FC的性能。

四、CNN复杂度分析

4.1 时间复杂度

计算方法:通过推理过程中乘法运算的次数来评估。在CONV层,每个卷积核是应用于r×c维输入特征映射的k×k滤波器。核的数量等于n×n。该CONV层的复杂性为

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析
论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

4.2 空间复杂度

空间复杂度指的是内存占用。对于CONV层,有n×n卷积核,每个核有k方个weights。因此,CONV层的空间复杂度为

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析
论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

4.3 复杂度分析

CONV层的操作构成了CNN模型的大部分总操作,因此CONV层的时间复杂度远高于FC层。因此,对于CONV层,应该更加注意加速卷积运算。

对于空间的复杂性,情况就大不相同了。FC层贡献了大部分权重。由于FC层中的每个权重在一个推理过程中仅使用一次,没有机会重用,有限的带宽会显著降低性能,因为加载这些权重可能需要很长时间。

下图,(a)为操作数分布,(b)为权重数分布。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

五、数据量化

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

5.1 量化流

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

5.1.1 权重量化

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

权重量化阶段旨在找到一个层中权重的最佳fl。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

其中W是权重,W(bw,fl)表示给定bw和fl下W的定点边界。

在这一阶段,首先分析每一层中权重的动态范围。之后,fl被初始化以避免数据溢出。此外,我们还在初始fl的相邻域中寻找最优fl。

数据量化

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

无论是CONV层还是FC层,直接结果x+都比给定标准具有更长的位宽。因此,优化fl时需要截断。最后,生成整个数据量化配置。

5.2 不同策略的分析

不同的数据量化策略如下,所有结果都是在Caffe框架下得到的[28]。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

1)对于CaffeNet,如Exp 1所示,当使用32位浮点数时,前5名的准确率为77.70%。当采用静态精度16位量化和8/4位动态精度量化时,前5位精度结果分别为77.12%和76.64%。

2)在Exp 4到Exp 8中测试了具有静态精度量化策略的VGG16网络。如Exp 4所示,单浮点数VGG16网络88.00%前5精度。使用16位量化配置时,精度损失仅为0.06%。然而,当采用8位静态精度量化时,没有可用的配置,因为FC层之间的特征映射被量化为0。如Exp 8所示,当使用8位量化时,至少需要两个精度,在这种情况下,精度会大大降低。

3)VGG16网络的动态精度量化结果见Exp 9和Exp10。当数据和权重均采用8位动态精度量化时,前5位精度为87.38%。对CONV层和光纤通道层的权重分别使用8/4位动态精度量化甚至可以获得更高的精度。如Exp 10所示,在这种情况下,前5名的准确率为87.60%。

4)VGG16-SVD网络的结果如Exp 11至Exp 13所示。与浮点VGG16模型相比,浮点VGG16-SVD只引入了0.04%的精度损失。然而,当采用16位动态精度量化时,前5位精度下降到86.66%。采用8/4位动态精度量化,前5位精度进一步降至86.30%。

结果表明,动态精度量化比静态精度量化更有利。借助动态精度量化,我们可以使用更短的运算表示,同时仍能达到相当的精度。例如,与16位量化相比,8/4位量化将中间数据的存储空间减半,并减少了CNN模型四分之三的内存占用。此外,带宽的利用率也可以显著提高。

六、系统设计

6.1 整体架构

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

PL是FPGA芯片,在上面放置计算单元、片上缓冲器、控制器和内存。计算单元由处理元件组成,处理元件负责CNN中的大多数计算任务,包括CONV层、池化层和FC层。片内缓冲器,包括输入缓冲器和输出缓冲器,准备供PEs使用和存储结果。控制器从外部存储器获取指令,并对它们进行解码,以编排PL上除DMAs之外的所有模块。DMA用于在PS端的外部存储器和PL端的片内缓冲器之间传输数据和指令。

ps由通用处理器和外部存储器组成。所有CNN模型参数、数据和指令都存储在外部存储器中。处理器运行裸机程序,并通过配置DMAs帮助编排整个推理阶段。我们还在CPU上实现Softmax功能,考虑到它由FPGA实现会带来不可避免的设计开销,而且性能提升不大,因为这个功能只在整个CNN的最后一层调用。

使用所提出的CNN加速器对图像的完整推断过程由三个步骤组成,这些步骤依次执行:数据准备、数据处理和结果输出。

1)数据准备。在这个阶段,计算中所需的所有数据,包括图像数据、模型数据和控制数据,都存储在外部存储器中。控制数据包括直接内存分配使用的缓冲区描述符和控制器使用的指令。图像数据还没有从相机获得也是一个重要的处理过程。

2)数据处理。当所有数据准备就绪后,中央处理器主机开始用预存储在外部存储器中的内存分配表配置内存分配表。所配置的直接存储器存取将数据和指令加载到控制器,触发PL上的计算过程。每当一个直接存储器存取中断被断言时,中央处理器主机为每个直接存储器存取的内存分配列表添加自我维护的指针地址,并用新的内存分配来配置它们。这个阶段一直工作到最后一个BD被转移。

3)结果输出。处理器主机收到来自DMA的最后一个BD的中断后,对来自PEs的最终结果应用Softmax功能,并将结果输出到UART端口。

6.2 PE 架构

一个PE由五部分组成,包括卷积器、加法器树、非线性模块、最大池模块和偏置移位。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

加法器树(AD)将来自卷积器的所有结果相加。如果需要,它可以添加来自输出缓冲器的中间数据或来自输入缓冲器的偏置数据。

非线性模块对输入数据流应用非线性激活功能。

最大池化模块利用行缓冲器对输入数据流应用特定的2 × 2窗口,并输出其中的最大值。

偏置移位模块和数据移位模块旨在支持动态量化。输入偏置将根据层的量化结果通过偏置移位进行移位。对于16位实现,偏置扩展到32位,与卷积结果相加。输出数据将被数据移位,并切回原始宽度。

6.3 详细设计

6.3.1 工作计划

并行度:Chakradhar等人指出,CNN并行计算中主要存在三种类型的并行性:操作级(细粒度)并行性、输出内并行性(多个输入特征组合成一个输出)和输入输出并行性(多个独立特征同时计算)[11]。在我们的实现中,考虑了所有三种类型的并行性。用2D卷积器实现了算子级并行。内部输出并行是通过多个卷积器同时在每个PE中工作来实现的。输出间并行是通过放置多个PEs来实现的。

平铺和重复使用:由于片内存储器有限,切片对于CNN是必要的。对于CONV图层中的平铺,我们按照行(列)中的因子Tr(Tc)平铺每个输入图像。我们将输入(输出)特征图按因子TI(To)平铺。对于FC层,我们将每个矩阵平铺成Ti×To的切片。为了重复使用,重用的每个输入平铺块(矢量)的时间大小是reuse_times。我们在图 (a) (b)中展示了这种工作负载调度机制如何应用于CONV层,在图©中展示了光纤通道层。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

6.3.2 控制器系统

太复杂,后期更新。

七、存储系统

7.1 缓冲设计

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

图像数据和权重分别存储在输入缓冲器中,偏差存储在数据缓冲器中。每个缓冲区的总带宽由相应的端口号乘以数据宽度(D_W)定义。

datain_port_num:DMA每个周期可以传输的最大数据量。权重_端口_编号。DMA每个周期可以传输的最大权重。

weightin_port_num:DMA每个周期可以传输的最大权重。

dataout_port_num:DMA每个周期可以传输的最大结果量。

在CONV层中,每个阶段所需的权重总量远远小于图像数据的权重总量,而在FC层中,权重量远远大于输入向量中的数据量。因此,我们将FC层的权重保存在容量大于权重缓冲区的数据缓冲区中,并将输入数据向量保存在权重缓冲区中

7.2 CONV图层的数据排列

为了减少外部存储器不必要的访问延迟,我们优化了数据在存储器空间中的存储模式。原则是最大化每个DMA事务的突发长度。如下图显示了一个简单的例子,说明我们如何使用最大池在一个CONV层中组织输入和输出数据。我们连续存储每张图片中相同相对位置的图块。因此,在每个阶段,我们可以连续加载所有输入切片进行计算。输出要素图将是下一个图层的输入要素图,因此,同样的存储模式也适用。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

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事务来加载整个块,长的突发长度确保了外部存储器带宽的高利用率。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

八、系统评估

使用16位动态精度量化和Xilinx Zynq ZC706来实现。Xilinx Zynq平台由Xilinx Kintex-7 FPGA、双ARM Cortex-A9处理器和1 GB DDR3内存组成。它提供高达4.2GB/s的带宽。所有合成结果均来自Xilinx Vivado 2014.4。首先综合Vivado中的每个模块来计算资源利用率。然后选择最优的参数组,在资源和带宽受限的情况下最大化吞吐量。参数和资源利用率如下表所示。我们可以看到一个参数配置帮助最大化资源利用率。对于在CPU、GPU和mGPU上的实验,操作系统为Ubuntu 14.04,深度学习软件框架为Caffe [28]。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

8.1 理论估算

8.1.1 卷积层估算

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

其中To = reuse_times × PE_num 、T c = T r。

每个阶段计算和加载数据的时间为:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

CONV层通常是计算密集型的。因此,为了保持乒乓机制的工作,通常tload比tcompute小,因此应该有:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

在每个阶段,数据将被重用多次,每次重用都伴随着一组新的权重(对于我们使用的模型,每个内核有9个权重)。因此,对于权重,我们有:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析
论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

时序图。总共有n/T个阶段来生成输出层中的复用次数×像素数量的切片。在每个阶段,加载下一组数据,输出上一阶段预加载的数据,并在reuse_times中重复使用。与此同时,伴随的权重被加载并输出以供重复使用_次,而不重复使用。输出缓冲器在整个阶段收集数据,同时向PEs或外部存储器输出中间数据和最终数据。

由上图,dataout_port_num:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

为了最小化带宽消耗,我们考虑尽可能少地选择weightin_port_num和datain_port_num。在上述约束条件下,我们可以估计一个CONV层的计算时间:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

考虑到CONV层中Ti = convolver_num, Tr = tile_size,

To = reuse_times×P E_num我们进一步得到

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

8.1.2 FC层估算

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

通常,对于FC层,t_load负载比计算的总负载t_compute小得多,因此一个FC层所需的总周期可以估计为:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

总之,在给定的约束下,CONV层和FC层的运行时间可以通过如下来估计:

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

CONV层受到带宽和计算资源的限制。对于FC层,如上图所示,它仅受带宽限制。因此,更高的带宽有助于减少光纤通道层的运行时间。

8.2 技术性能分析

我们的系统、CPU、GPU和mGPU的性能如下表所示。VGG16-SVD网络需要30.764个GOP,包括乘法、加法和非线性函数。我们的系统在CONV层的平均性能为187.80 GOP/s,在整个网络的平均性能为136.97 GOP/s。我们的系统帧率为4.45 fps,比CPU和mGPU平台快1.4倍和2.0倍(CPU和mGPU的功率分别为135W和9W)。GPU的整体性能比我们的实现高13.0倍,但与嵌入式FPGA相比,功耗增加了26.0倍(250瓦对9.63瓦)。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

与理论估计相比,实际测试的性能下降约47%,如上表6的第2列和第3列所示。一个可能的原因是DDR访问延迟。另一个可能的原因是不同的DMA异步工作,因为不同的DMA事务可能会相互影响,降低带宽使用的总效率。

8.3 设计比较

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

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

总之,与以前的设计相比,加速器实现了最高的性能、资源效率和电源效率。应该注意的是,以前设计的所有性能结果都是从CONV层获得的。如果我们只考虑CONV层,我们的系统的平均性能是187.80 34 GOP/s,比以前的设计高几倍。我们的系统在全VGG16-SVD网络下的性能为136.97 GOP/s。

目前,我们的实现使用16位定点数和Zynq板。不同量化策略和平台的预测结果如表8所示。理论上,当使用8位量化时,可以在FPGA上放置2× PEs,因此CONV层上的性能加倍。此外,与16位量化相比,2倍权重可以加载到具有相同带宽的系统中,因此FC层上的性能也翻倍。此外,在部署到VC707板上时,可以多放置一个PE,因此CONV层上的处理能力预计比Zynq平台高1.5倍。对于VC707上采用8位动态精度量化的VGG16-SVD网络,有望实现11.76 fps的帧率。

论文笔记一(Maximizing CNN Accelerator Efficiency Through Resource Partitioning)论文笔记一(卷积神经网络嵌入FPGA平台的研究)摘要一、论文贡献介绍二、背景三、相关工作四、CNN复杂度分析五、数据量化六、系统设计七、存储系统八、系统评估总结分析

总结

有限的带宽是嵌入式系统加速深度CNN模型的瓶颈之一。在本文中,我们对内存占用和带宽问题进行了深入研究,以便在嵌入式FPGA平台上加速最先进的用于图像网络分类的CNN模型。我们表明,CONV层以计算为中心,而FC层以内存为中心。提出了一种动态精度数据量化流程,以减少内存占用和带宽需求,同时保持相当的精度。可用于CONV层和FC层的卷积器旨在节省资源。还提出了FC层的数据排列方案,以确保高带宽利用率。我们在Xilinx Zynq上实现了非常深的VGG16-SVD模型,用于图像网络分类,在16位量化的情况下,实现了4.45 fps的帧速率和86.66%的前5位精度。在150兆赫工作频率下,CONV层和CNN的平均性能分别为187.8和137.0。

分析

第五章可用于后期优化方案。数据量化和权重量化的方案和对比方式。

第三章用于网络复杂度分析。

第六章系统参照。

第七章存储系统参照。

第八章系统评估参照。(先做理论估值、再做实际)

2021.08.18
           

继续阅读