【《可重构卷积神经网络加速器在FPGA平台上的实现案例分析》6000字】_第1页
【《可重构卷积神经网络加速器在FPGA平台上的实现案例分析》6000字】_第2页
【《可重构卷积神经网络加速器在FPGA平台上的实现案例分析》6000字】_第3页
【《可重构卷积神经网络加速器在FPGA平台上的实现案例分析》6000字】_第4页
【《可重构卷积神经网络加速器在FPGA平台上的实现案例分析》6000字】_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可重构卷积神经网络加速器在FPGA平台上的实现案例分析目录TOC\o"1-3"\h\u383可重构卷积神经网络加速器在FPGA平台上的实现案例分析 151171.1卷积核硬件固化 1230431.2卷积神经网络的重构 9307461.3性能分析 141.1卷积核硬件固化本文采用的FPGA平台为Xilinx的Zynq系列中的XC7Z100-2FFG900芯片。该芯片采用ARM+FPGASOC技术将双核ARM和FPGA可编程逻辑集成在一颗芯片上。ARM端集成了双核64位ARMCortex-A9处理器,成为PS(ProcessingSystem);可编程端具有大量的I/O口以及可编程逻辑资源,可以完成各种逻辑运算,简称为PL(ProgrammableLogic)。其中内部互联结构如图1.38所示,图1.38ZynqPS与PL连接结构图开发板如图1.39所示,在PS端的外部存储为两片MT41J256M16HA-125DDR3存储,PL端口同样接了两片MT41J256M16HA-125DDR3存储。图1.39开发板加速器首先需要固化卷积核,为了便于加速器的扩展与移植,应采用参数化的方法固化卷积核。卷积系统需要N×K×K×M个乘法器,如采用卷积核大小为3×3时,K=3,则系统所需DSP为,N×9×M个DSP,片上DSP资源有2020个,在设计输入特征图通道N和输出特征图M时,考虑到卷积通道的个数为2的幂指数,因此N以及M设为2的幂指数,再根据DSP资N×系统的带宽需求公式如下: Q总=Mn根据式子1.7可以计算出,模型1的带宽需求为: Q总=(2片上的外部存储芯片是DDR3系列,在进行读写数据时,采用的是猝发模式,核心频率为200M,系统读写一次可以获得8个32位数据,片上的总带宽为 Q=32∗8∗200∗10ni是卷积层的输入特征通道循环次数,在n Q总=2+3/8∗此时系统的带宽无法满足,由于本文设计了反馈操作,以及输入缓存和输出缓存的设计,对整个模型1的运行影响较小。采用该方案硬件实现时,临时缓存大小设置为16384可卷积最大图像为128×128,当输入特征图大于该大小时,需要采用分块卷积。系统综合各模块所需资源如表1.2所示,其中控制模块包含所有控制模块,主要是对指令进行一个存储;缓存模块所需资源包含输入缓存、权重缓存、临时缓存以及输出缓存,主要是利用了BRAM进行数据的缓存;表中预处理模块的资源为1个输入特征通道,预处理模块是为整个系统后续运算准确提供数据的模块,该模块的功能复杂,因此使用较多的LUT,由于采用8个输入特征图通道数据并行处理,因此需要例化8个该模块;一个卷积核3×3的PE计算模块,需要使用较多DSP,且整个模型1需要8×16个DSP资源;池化模块主要是包括了窗口2×2和3×3大小的最大池化和平均池化,设置的输出通道为16,模型1需要例化16个池化模块;激活函数模块的资源需求如表1.3所示,其中Relu的资源需求最少,在需要用到Sigmoid以及Tanh函数时,资源需求会增多,且工作频率较低,因此需要翻倍进行例化。表1.2各模块资源需求资源LUTFFBRAMDSP控制模块832106170缓存模块402052512540预处理模块(1个)3332134410卷积模块(1个PE模块)686809池化模块(1个)70486310表1.3激活函数资源需求激活函数LUTFFDSP工作频率MRelu17170200E的幂指数运算16465757100Sigmoid后续计算93851050Tanh后续计算81783050三种激活函数综合实现时所需的总资源如表1.4所示,其中采用Relu资源需求少;在改变激活函数时增加最大的是LUT以及DSP的需求,因为Sigmoid和Tanh函数涉及除法操作,以及幂指数的运算;Sigmoid和Tanh函数同时实现,由于部分资源的共用,因此所需资源并不是两者之和。表1.4系统总资源需求资源LUTFFBRAMDSP采用Relu激活71843674482851152采用Sigmoid激活184258888402851376采用Tanh激活176531908882851376三种激活同时采用时206179925042851376图1.40表示采用三种方案所需的资源利用率,在Relu激活函数中,利用率最高的是DSP资源,其占比为57%,其次是BRAM,占比为37%,在高并行度下,BRAM需求依旧很低,LUT以及FF使用率较低;有图可知在采用Sigmoid和Tanh激活函数后,LUT需求增加最多,其次是DSP占比增高,BRAM持平,FF资源少量增加。图1.40模型1资源利用率如固化卷积核大小为5×5,与3×3固化同样的分析方法,其中(N×M)<(2020/25),可知N×M最大为64,为了减少第一层卷积对带宽影响,设计的输入特征图通道参数为8,输出特征图通道数设为8,充分提升数据的复用率。总体并行结构为8个输入特征图通道进、8个输出特征图通道出以及卷积核公并行,系统一共需要1600(8×25×8)个DSP资源,以下简称为模型2。根据式子1.7可以计算出,模型2的带宽需求为: Q总=(1ni是卷积层的输入特征通道批,n固化该模型2时模块需求资源如表1.5所示,其中控制模块、池化模块以及激活函数模块与前面一致,缓存模块主要减少了输出缓存,但是增加了权重的缓存,采用5×5的卷积核,权重变为8×5×5×8,权重缓存增大;其次是预处理模块需要缓存四(K-1)行数据,并进行数据选择操作,资源增多;卷积计算PE模块随着卷积核的增大,相应资源也增多。表1.5模型2各模块资源利用数据资源LUTFFBRAMDSP缓存模块342650311780预处理模块(1个)5347225320卷积模块(1个PE模块)211216025三种激活函数综合实现时所需的总资源如表1.6所示,在Relu函数上,由于输入并行通道不变,预处理模块的资源增多,该模式比3×3卷积核LUT以及FF资源需求略有增多,同时由于输出并行通道减少,因此BRAM资源减少。在Sigmoid和Tanh激活上,资源的需求大幅度减少,主要是由于输出并行通道减少一半,在后续的激活函数模块例化也相应减少一半。表1.6模型2总资源需求数据资源LUTFFBRAMDSP采用Relu激活86537725802171600采用Sigmoid激活142617832762171712采用Tanh激活138881843012171712三种激活同时采用时153705849722171712图1.41表示在输入特征图通道为8,输出特征图通道为8以及卷积核5×5模型2并行情况下的资源利用率,其中DSP利用率达到了80%左右,系统充分进行了并行加速。图1.41模型2资源利用率若固化卷积核大小为7×7,则(N×M)<(2020/49),可知N×M为32,为了减少第一层卷积对带宽的影响,以及对数据的尽量复用,减少资源的需求,设计的输出特征图通道参数也为8,输入特征图通道数设为4。总体并行结构为4个输入特征图通道进、8个输出特征图通道出以及卷积核共并行,系统一共需要1568(4×49×8)个DSP资源,以下简称为模型3。根据式子1.7可以计算出,模型3的带宽需求为: Q总=(2ni是卷积层的输入特征通道批,n该模型3的模块需求资源如表1.7所示,其中控制模块、池化模块以及激活函数模块与前面一致,缓存模块主要减少了输入缓存,因此BRAM减少,在LUT以及FF资源上由于卷积核的增大,权重缓存增大;其次是预处理模块需要缓存6(K-1)行数据,增加了BRAM需求,其次卷积窗口数据变为7×7,在准备数据时逻辑功能增多,LUT资源增加;卷积计算PE模块随着卷积核的增大相应资源也增多。表1.7模型3各模块资源利用数据资源LUTFFBRAMDSP缓存模块317547851700预处理模块(1个)7284305430卷积模块(1个PE模块)429427049三种激活函数综合实现时所需的总资源如表1.8所示,在Relu函数上,由于输入并行通道减少,总体的资源都相应减少。在采用Sigmoid和Tanh激活函数时,资源的需求与模型2相差不多,主要是由于输出并行通道同为8通道,在后续激活函数上计算量一致,资源需求一致。表1.8模型3总体资源需求资源LUTFFBRAMDSP采用Relu激活72870665022131568采用Sigmoid激活128950771982131680采用Tanh激活125214782232131680三种激活同时采用时140038788942131680图1.42表示为采用三种激活函数的资源利用率,与图1.49和图1.50一致,在采用Sigmoid和Tanh激活函数时,LUT会倍增,其他资源略增。图1.42模型3资源利用率图1.43为采用Relu激活函数时,在三种模型固化时所需资源的对比图,通过对比发现,在卷积核大小的改变对DSP以及BRAM资源的需求变化较大,FF以及LUT资源需求趋于稳定。图1.43Relu激活函数系统三种模型资源利用对比图表1.9为三种模型采用全部激活函数时,系统的最大吞吐率,由于采用3×3卷积核设计的系统采用的DSP资源最少,以及对带宽需求最高,其吞吐率最低,在实现整个系统时可以根据网络类型进行系统的硬件固化选择。表1.9三种模型的最大吞吐率模型模型1模型2模型3工作频率(M)200200200最大吞吐率(GOP/S)423.9640627.21.2卷积神经网络的重构本文将重构Lenet,ZFNet,VGG16以及ResNet四种网络进行系统性能测试,表1.10为四种网络的激活函数类型、卷积核大小以及池化模式,在激活函数上除了Lenet用了sigmoid激活函数,其余都使用了Relu激活函数,在卷积核大小中,Lenet和VGG16为统一的卷积核大小,另外两种网络的卷积核不固定,开始采用大的卷积核,后续采用小的卷积核,四种网络的池化模式都为窗口2×2的最大池化,本节采用上章节固化的三种模型对网络进行验证。表1.10四种网络的结构模型网络激活函数类型卷积核大小池化模式LenetSigmoid5窗口2×2的最大池化ZFNetRelu7、5、3窗口2×2的最大池化VGG16Relu3窗口2×2的最大池化ResNetRelu7、3窗口2×2的最大池化首先采用固化模型1对五种网络进行验证,模型1设计的卷积核大小为3×3,在计算大的卷积核时,需要将卷积分开,如图1.44所示,5×5的卷积核需要根据指令分为四部分,将临时结果存储在临时缓存中,随后进行相加,7×7卷积核类似。图1.445×5卷积核运算划分图固化模型1对网络的工作性能如表1.11所示,网络在计算VGG16的时候性能最好,是因为VGG16的卷积核大小为3×3,不会产生无效的卷积计算,整个系统的效率最高,其中ZFNet中卷积核有7和5大小的,其效率最低,由于ResNet只有一层卷积核为7,因此性能高于ZFNet网络。表1.11模型1运行四种网络的性能模型1工作频率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200317.4311.3727.91ZFNet200304.2311.3726.75VGG16200387.2711.3734.06ResNet200339.4311.3729.85图1.45是对四种网络的吞吐率的对比图,有图可见在计算VGG16时吞吐率较高,其他三种网络吞吐率相差不大。图1.45模型1运行四种卷积网络的吞吐率对比固化模型2采用的是卷积核大小为5×5,在计算7×7的卷积核是与图1.44类似,在计算3×3卷积核时,根据指令采用如图1.46所示,红色部分填充数据为0,让其计算结果为0,采用该方法,整体效率较低。图1.46大卷积核卷积小卷积核结构图表1.12为固化模型2对四种网络的性能,图1.47为吞吐率的对比图,由表核图可以看出,在运行Lenet时系统的表现最好,吞吐率达到576G/S,由于Lenet网络的卷积核大小为5×5,系统运行效率最高;在运行卷积核7×7的卷积时计算效率高于运算卷积核3×3时,由于VGG16的卷积核大小为3×3,因此整个系统中运行四种网络中时,VGG16网络的性能最低。表1.12模型2运行四种网络的性能固化类型工作频率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200576.6110.8253.29ZFNet200332.8410.8230.76VGG16200217.0310.8220.05ResNet200220.1810.8220.35图1.47模型2运行四种卷积网络的吞吐率对比固化模型3采用的是卷积核大小为7×7,在计算5×5和3×3卷积核时,根据指令采用图1.46所示的模式进行计算,在计算卷积核大小为5和3的时整体效率较低。表1.13为固化模型3对四种网络的性能,图1.48为其运行四种网络的吞吐率对比图,由表和图可以看出,在运行大的卷积核时性能最好,随着卷积核大小的改变,性能在大幅度降低,主要是由于PE模块的利用率在降低。表1.13模型3运行四种网络的性能固化类型工作频率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200313.4210.6829.35ZFNet200254.6310.6823.84VGG16200114.7810.6810.75ResNet200121.8310.6811.41图1.48模型3运行四种卷积网络的吞吐率对比图1.49为三种模型对四种网络运行的一个吞吐率对比图,有图可见,在所有的网络与模型中,模型2采用了更多的计算单元,以及与LeNet网络的卷积核大小一致,因此其吞吐率最大;模型3设计大的卷积核结构,在运行卷积核大小为3的VGG16时,由于计算单元利用率较低,系统的性能最低。LeNet网络在三种模型中,由于与模型2的卷积核大小一致,表现最好,在其他两个模型中,计算效率较低,因此性能不高;ZFNet网络的卷积核比较复杂有多种卷积核,在三种模型中总存在计算效率低的卷积层,因此在三种模型中表现都较中庸;VGG16的卷积核大小与模型1的卷积核大小一致,因此在模型1中性能表现最好,随着卷积核的增大,卷积计算效率越低,因此在另外两种模型中,性能逐渐减少;ResNet网络的卷积核大多为3,只有一层卷积核大小为7,因此整体上与VGG16变化一致,但是由于有一层卷积层卷积核大小为7,因此在随卷积核大小增大的过程中,其性能比VGG16变化略小。同时对比发现在小的卷积核上实现四种网络时,性能差别不大,在卷积核越大时,实现多种网络时性能会出现较大差别。在进行网络加速实现时,可以根据网络结构选择固化模型,最大程度提升系统性能。图1.49四种网络在三种模型上运行的吞吐率对比图1.3性能分析表1.14是本文采用模型1情况先重构VGG16网络,与CPU和GPU的性能数据对比,首先本文在采用工艺为28nm的FPGA,以及DDR的位宽比CPU少一半的情况下,是工艺更为先进的14nm的18核心的IntelSkylakeCPU性能上的2.375倍,功耗只是CPU的0.069倍,功耗比是CPU的31.41倍;其次在与16nm工艺下的NVIDIA的1080Ti显卡进行对比时,显卡1080Ti的位宽是本文的11倍,带宽是本文的71.6倍,但是性能只是本文的4.5倍,同时功耗是本文的21.98倍,功耗比只是本文的0.2倍;最后与本文FPGA的工艺同为28nm的Teslak40显卡进行对比,Teslak40的位宽是本文的12倍,带宽是本文的45倍,但是满额计算的性能只是本文的11.3倍,功耗却是本文的20.7倍,功耗比只是本文0.54倍。通过分析可知,本文在制造工艺最低的情况以及DDR的带宽需求最少的情况下,功耗比是CPU的31.41倍,是1080TiGPU的4.97倍,是Teslak40GPU的1.86倍。表1.14VGG16网络不同实现方式的性能对比芯片型号IntelSkylakeCPU(18-core)NVIDIA-1080TiTeslak40Zynq-7100(本文)制造工艺14nm16nm28nm28nm性能(TOP/S)0.1378(VGG16)1.71(VGG16)4.29(ALL)0.38(VGG16)功率(W)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论