版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式存储可重构卷积神经网络加速器的设计案例目录TOC\o"1-3"\h\u24915分布式存储可重构卷积神经网络加速器的设计案例 1201461.1分布存储架构的硬件实现 16861.1.1输入特征图数据缓存的设计 2157761.1.2权重缓存设计 4262501.1.3临时缓存设计 68261.1.4输出特征图数据缓存设计 6145491.2可重构卷积神经网络加速器的设计 7161731.2.1预处理模块设计 861681.2.2卷积模块设计 15259031.2.3激活函数模块设计 18254321.2.4池化层模块设计 21127431.3加速器在FPGA平台上的实现 24164271.3.1卷积核硬件固化 24272921.3.2卷积神经网络的重构 31251841.3.3性能分析 36相对于特定卷积神经网络加速器,可重构卷积神经网络加速器具有灵活性,可面向应用重构卷积神经网络,适用范围更广。本章将基于分布式存储架构、卷积神经网络的通用可重构架构,完成通过可重构卷积神经网络加速器的设计。1.1分布存储架构的硬件实现在整个卷积神经网络系统中分布式存储按照功能可以分为四部分缓存:输入特征图数据缓存、权重缓存、临时数据缓存以及输出特征图数据缓存。设计输入特征图数据缓存和输出特征图数据缓存是因为DDR是半双工的,无法实时对DDR进行读写操作,由于本文采用的是N个输入特征图通道和M个输出特征图通道并行计算,因此在输入缓存中设置了N个输入特征图数据缓存,在输出通道设置了M个输出特征图缓存,以便实时读写DDR中的数据,达到网络高速运行;在权值缓存设计中,本文的权重数据与图像数据分布存储在PS端DDR以及PL端DDR中,读写PS端口的DDR数据需使用AXI-HP高速接口,本文在设计接口短接,为了保证权重数据能够实时提供,设置了权重缓存;临时缓存模块的数量与输出通道特征图个数一致,为M个临时缓存。1.1.1输入特征图数据缓存的设计进行卷积运算时,输入图像应按顺序处理,故将输入特征图数据缓存设计成FIFO,由于片外存储基本为DDR系列,DDR读取数据采用的是猝发模式,设片外DDR的位宽为Xb(基本为32、64、128),在进行读取DDR时,在核心频率为f,预读取个数为P,即一个时钟周期读取的位数为Xb×P,在输入特征图通道设置了N个输入缓存,为了不浪费DDR的带宽,设计的缓存FIFO为输入位宽和输出位宽不同,输入为Xb×P图1.1输入缓存依次写入结构图在卷积层的输入通道个数小于N时,卷积过程不需要循环,卷积结果需要马上写出DDR到,此时如果输入特征通道小于N会导致ni为1,采用图1.1所示模型卷积对带宽的需求变为下式1. Q总=(M此时系统的带宽的需求较高,此时输入特征特征图的通道小于N,设输入3通道数据时,读取DDR数据的利用率只有3/N,会浪费读取的数据,浪费带宽,因此本文为了不浪费系统的带宽,在轮流输入到输入缓存中进行了指令控制,结构变为如图1.2,指令中用五位数据(最大32输入通道)进行表示输入特征图通道的个数,该方法将3输入通道数据的带宽需求变为下式1.2,此方法提高了带宽的利用率,减少带宽对系统性能的影响。图1.2控制器控制输入缓存结构图 Q总=MN模块的仿真图如图1.3所示,图中采用的是输入特征图通道N为8,卷积层输入通道为3时的仿真,数据根据指令控制依次轮流写入设计的前3个FIFO中。图1.3输入缓存仿真图1.1.2权重缓存设计权重缓存主要是为卷积操作以及偏置准备权重数据,本文在权重的存储采用的是PS端DDR数据,图像数据和权重分开存储,采用PS端的DDR存储数据,读取数据时需要通过ARM核,本文通过四个AXI-HP高速接口读取权重数据,其中系统的模块图如图1.4。图1.4AXI-HP的模块图权重数据是利用了片上PS端的DDR,其中通讯采用的是高速AXI-HP接口,在片内设置四个FIFO缓存进行缓存数据,由于并行度为N个输入特征图通道,K×K大小的卷积核,以及M个输出特征图通道,在一层卷积完成时需要更换N×K×K×M个16位数权重数据,在卷积层换层时,瞬间的带宽需求很高,本文采用寄存器进行缓存数据,如图1.5所示将权重数据缓存到寄存器中等卷积完成一起传递给卷积层,然后开始准备下次的权重。图1.5权重预准备结构图权重模块的仿真如图1.6,图中仿真采用的卷积核大小为3×3,模块在换层卷积后,进行多个时钟周期进行数据的缓存,将数据保存到寄存器中,等待下次卷积换层的请求,一个周期进行N×K×K×M个16位权重数据的更换,随后该模块准备下批次权重数据。图1.6权重缓存仿真图1.1.3临时缓存设计临时缓存也是被设计成FIFO,系统中设置了M个输出特征通道临时缓存模块,主要是进行卷积数据临时缓存,等后续卷积结果进行累加操作,减少对DDR的读取,临时缓存仿真如图1.7,图中仿真图是输出特征图通道为16时,随着最后一批次卷积完成,临时缓存数据与本批次卷积结果累加后将结果输出给激活函数模块。图1.7临时缓存仿真图1.1.4输出特征图数据缓存设计输出特征图数据缓存主要是进行缓存M个输出特征图通道的数据,输出缓存对与输入缓存是一个相反的过程,卷积结果输出位宽为16位,但是DDR一次读写的位宽为Xb×P,因此设置的M个输出缓存FIFO写数据位宽为16位,读数据位宽位Xb×P,由于输出为M个通道,为了保持与输入读取数据一致,输出也是采用M个输出依次轮流输出,如图图1.8控制器控制输入缓存结构图模块仿真如图1.9所示,图中设置输出通道数为16,依次从0-15个缓存中输出数据到DDR中,如图所示每个时钟周期对读取的FIFO进行一个更换,同时系统的输出缓存模块设计反馈信号,当输出的缓存数据接近满时,会反馈前方处理模块进行停止计算,待输出缓存数据少于某个值时撤销反馈信号,继续开始运算。图1.9输出模块仿真1.2可重构卷积神经网络加速器的设计基于分布式存储、可重构架构的通用可重构卷积神经网络加速器的结构框图如图1.10所示。图中可重构控制模块已完成,本章将完成预处理模块、卷积模块、激活函数模块以及池化模块的硬件实现。图1.10补全一个整体的结构框图1.2.1预处理模块设计卷积操作是对一个特定窗口进行一个乘加操作,如图1.11所示,图中描述的卷积核大小为3×3,输入特征图数据被卷积核滑动遍历,经过与卷积核的运算,才能得到输出特征图结果。图1.11滑动卷积过程设计预处理模块功能主要是对数据进行填充以及输出卷积核K×K大小的窗口数据,因此需要对输入数据进行一个行缓存,在进行窗口数据缓存时,主要有以下三种方法:1)利用BRAM生成RAM,RAM可以进行地址读写,可以按照数据存储的地址进行读取数据,获得窗口数据。2)利用寄存器进行数据缓存,将寄存器当作软件学的“数组”来运用,最后得到窗口数据。3)利用BRAM生成FIFO,用FIFO的先进先出的特性进行数据缓存,由于数据具有一定的相关性,可以减少资源利用。方法1)在对RAM进行地址操作时,地址的控制比较复杂,对控制系统要求比较高,不考虑使用。本文将对在方法2)和方法3)进行分析比较。方法2中用到了寄存器较多,而且由于需要进行多个寄存器的操作,逻辑资源需求量倍增,方法3主要是利用了FIFO进行缓存数据,用K-1个FIFO缓存K-1行数据。在进行数据缓存时,需要考虑数据之间的关联性,利用数据之间的复用性能提升效率,减少周期浪费,如图1.12所示,图中是卷积核大小为3×3(K=3),步长为1时的卷积计算图,前一个周期需要的窗口数据3×3(K×K)和下一周期所需的3×3(K×K)数据有2×3((K-1)×K)个数据是复用的,在硬件设计时采用寄存器移位操作即可,为了得到窗口数据,需要缓存K-1行数据并用K×K个16位寄存器,第一个卷积窗口数据正确时,在随后的同一行卷积窗口数据中可以通过移位操作来完成。图1.12卷积的数据复用采用方法2)进行缓存K-1行数据并选择窗口数据传递给寄存器电路图如图1.13所示。主要是利用多个寄存器进行数据缓存,等待缓存够K-1行数据后,根据指令进行数据选择,将缓存数据传递给K2个十六位寄存器,随后将K图1.13寄存器缓存数据电路图采用方法3)FIFO进行数据缓存时的电路如图1.14所示,主要是设计K-1个fifo进行缓存K-1行数据。等待K-1个FIFO模块缓存K-1行数据后第K行数据输入时,将其数据一方面传输到FIFO中进行更新,另一方面传输给寄存器,进行窗口数据输出。图1.14FIFO缓存数据电路图在FPGA中实现两种方案的资源利用如表1.1所示,表中是采用3×3卷积核缓存行数据最大为512为例子。方案1,采用寄存器进行缓存数据,方案2采用fifo进行缓存,有表可知,方案以使用较多的FF以及LUT,未利用BRAM资源,方案2,使用了一个BRAM块,但是减少了LUT以及FF的需求。表1.1缓存方案资源需求对比表资源LUTFFBRAM方案112433100400方案253710321对输入特征图进行数据填充时主要是有两种方法(下面以卷积核大小为3×3为例):(1)在进行数据缓存时进行数据填充,如图1.15所示,在进行缓存时将填充数据加入到缓存中,然后进行窗口数据输出。采用该方法会浪费时钟周期,在进行数据输入时,填充0数据会占用时钟周期,同时进行填充卷积时,需要缓存2(K-1行)数据,其中包含1(K-2)行填充数据;其次是进行窗口数据输出时会浪费时钟周期,如图1.16所示,在窗口移动到一行的结束时,后续的两个时钟周期的数据无法进行卷积运算,降低了系统的效率。图1.15缓存时进行填充图1.16换行浪费卷积周期(2)在输出数据时进行数据选择,这样在图像进行填充的时候只需要缓存1(K-2)行数据,就可进行卷积运算,使用额外9(K2)个寄存器,利用状态机进行数据的选择赋值,如图1.17所示,等待缓存1(K-2)行数据时卷积就可进行,利用9(K2)个寄存器就可得到第一个卷积窗口的数据,然后状态机对数据进行传递给下层9(K2图1.17输出时进行数据缓存图1.18换行时无时钟周期浪费本文最终设计采用第二种方法进行填充,如图1.19所示为3×3卷积核的第一行卷积窗口数据,输出九个寄存器分别进行了上边沿填充以及左侧填充。图1.19上边沿以及左侧填充仿真图在图1.20的仿真可以看出,在进进行输入特征图进行更换时,进行上下行的填充,不浪费时钟周期,每个时钟周期输出9(K2图1.20更换输入特征图仿真图在实现卷空洞卷积时,为了获得卷积窗口数据,就需要对图像进行缓存多行,常规的方法需要利用多个fifo进行缓存,这样与传统的卷积不能够兼容,经过研究,本文提出了一种与原始卷积通用的缓存模式。如图1.21是空洞卷积核大小为3×3空洞为2的空洞卷积,图中同一颜色为同一个卷积窗口,在传统模式下,需要多行缓存进行预处理获得卷积窗口,经过图像变形,得到如图1.22所示,将多行数据当作一层进行缓存,在这种情况下缓存模式与传统卷积核大小为3×3的缓存是一样的,可以通用,只是需要用多个寄存器进行数据的暂存,以获得所需的空洞卷积窗口,该方式的后续处理如图1.23所示,其中寄存器的个数跟空洞大小有关,设空洞大小为Cx,则所需寄存器个数为(Cx(K−1)+K)图1.21空洞为2的空洞卷积窗口数据图1.22空洞输入特征图行变换图1.23空洞卷积窗口数据获取电路如图1.24是对空洞卷积的仿真,由于空洞卷积的左右边沿填充数据多少与空洞有关,在图中可见连续的填充数据0。图1.24空洞卷积仿真1.2.2卷积模块设计卷积模块主要是对输入的特征图数据以及权重数据进行乘加操作,其中在进行乘法操作时,利用逻辑单元实现的乘法器工作频率较低,因此在片内都是采用硬核DSP资源进行乘法计算,然而在进行浮点计算时,使用的DSP较多,因此在硬件实现时,为了减少资源的使用,将数据进行定点量化。本文对权重和原始数据进行定点量化,采用16位有符号数表示,由于权重数据都比较小,根据权重的分布,16位数据1位符号位,3位整数位,12位小数位,最大误差为1/4096,如图1.25所示。图1.25定点位宽在进行乘法运算时,设A位16位有符号数,B为16为有符号数,C是32位有符号数,D为16为有符号数。 C=A×B; (1.3)要得到16位乘法结果,需要将C右移小数位12位,然后进行截取结果即可。 D=(A×B)>>12 (1.4)卷积模块主要是对数据进行一个乘加,本文对卷积主要是采用了嵌套模式,设计最小的卷积核并行PE模块,结构如图1.26为卷积核大小3×3的PE模块,一个PE模块包括九个乘法器,4个加法器,在设计中四个16位数据相加,系统可以运行在200M时钟周期,在加法器中间插入寄存器进行保存结果,采用流水线操作,流水线为两级;卷积核大小为5×5的PE模块,结构类似,需要25个乘法器,以及12个加法器,流水线为三级;卷积核大小为7×7的PE模块,需要49个乘法器,26个加法器,流水线为四级,由于硬件的结构不同,无法采用参数进行设计,设计该模块全部进行硬件实现,在综合实现时借用宏参数进行选择。1.26PE模块模块仿真图如图1.27(3×3卷积核),可见待输入图像数据后,经过乘法器以及流水线累加树,在三个周期以后陆续输出卷积结果;图1.27PE模块仿真由于采用的N个输入特征图通道输入,那么输出一个输出通道需要例化N个PE块,并将结果累加,其结构如图1.28所示,简成为输出一个特征图通道模块。图1.28输出通道模块结构图为了增加卷积的并行度,以及提高数据的复用率,并行输出M个特征图通道,嵌套例化M个输出通道模块,如图1.29所示为8个输入通道的数据进行复用,16个输出通道的结构图。图1.29输出特征图通道并行结构图1.2.3激活函数模块设计激活函数是为了让卷积神经网络完成非线性操作,激活函数常用的主要是Sigmoid函数、Tanh函数以及ReLu函数,在硬件设计中ReLu函数最容易实现,且需要的资源很少,Sigmoid函数和Tanh函数在硬件的实现较困难,实现所需资源较多,这两种函数里面包含了e的幂指数运算,以及除法操作。本文实现了三种激活函数,其结构图如图1.30所示,三种激活函数并行计算,其中Sigmoid函数和Tanh函数前面计算e的幂指数合用,三个激活函数采用宏参数设置,可以选择综合。图1.30激活函数模块本文在计算e的幂指数运算时采用的是泰勒展开进行计算,泰勒展开公式如下式 ƒ(x)=ƒ( (1.5)当ƒ(x)=e ex=1+x+x2在进行整个计算时,进行8级泰勒展开后,系统的误差为18!在进行实现泰勒展开计算时,对于乘法采用DSP进行计算,一个展开式需要用7个乘法DSP资源,模块采用流水线操作,如图1.31所示,整个模块利用7个乘法器完成泰勒展开,并最后采用加法树进行累加。图1.31e的幂指数泰勒展开电路结构在进行Sigmoid函数和Tanh函数计算时由于涉及到除法运算,除法运算使用逻辑电路实现,整个电路的时序不能满足200M,在进行泰勒展开计算时,除法操作是固定数除法,最大值为8,在电路中除以8可以直接进行移位操作,因此最大除法是除以7,该模块在芯片中时序可以工作在100M时钟下,在后续进行Sigmoid函数和Tanh函数结果计算时,涉及到16位的除法,系统的工作频率在50M,为了不影响整个系统的运算,因此采用同相位的异步时钟多通道进行并行处理,多通道并行处理结构图如图1.32所示。利用BRAM设计FIFO缓存,为了达到200M的数据处理需求,采用两个100M的e幂指数的泰勒展开计算模块并行计算,在后续Sigmoid函数和Tanh函数的计算中采用四个50M的处理模块,最后将数据写入到缓存中,下一级的数据处理才用200M。采用该模式的计算方式,不影响前面的卷积计算以及后续的池化操作,提高系统的效率。图1.32激活函数结构激活函数模块的仿真如图1.33所示,模块采用流水线操作,在第一个数据输入时会产生延时,在随后的时序一个周期输出一个计算结果。图1.33激活函数仿真1.2.4池化层模块设计池化层主要是对图像一个降采样,池化层模块的设计难点在于对数据的缓存设计,缓存池化窗口大小的数据,然后进行对数据的处理,池化分为最大池化和平均池化,本文对两种方法都进行了实现,池化窗口主要分为两种2×2窗口和3×3窗口。在整个模块实现时对于输入特征图大小不是2或3的倍数时,要进行额外处理。如进行2×2池化时,当输入特征图大小是奇数时,最后一列直接进行两行数据对比,最后一行数据,直接进行两列对比输出,最后一个数据进行直接输出结果,如图1.34为输入特征图大小为5×5,采用窗口2×2的池化计算过程。当采用3×3窗口进行池化时,操作类似,其输入特征图不是3的倍数时,特殊处理。图1.34图像大小为奇数时池化运算结构缓存模块的设计有两种方案,一种是对数据边计算边缓存数据,减少后续运算;另外一种是进行先缓存,等处理窗口数据缓存完整后进行数据运算。由于本文同时实现了最大值池化和均值池化,需要对窗口数据比较和累加,因此系统采用的是第二种方法,首先是对行数据进行缓存,后续进行数据处理,2×2池化窗口池化需要缓存数据一行,3×3的池化窗口需要图像缓存两行。池化模块池化窗口为2×2窗口的池化步骤如下,如图1.35所示,当缓存一行数据时,缓存输出一个数据给寄存器1,与此同时上层处理模块输入一个数据给寄存器2,然后在一个时钟周期内进行比较和累加,将输出数据分别传递给寄存器3和寄存器4。图1.352×2窗口池化第一时钟周期下一个时钟周期,如图1.36所示,FIFO缓存输出一个数据到寄存器1,上层处理模块输入一个数据到寄存器2,然后将寄存器3的数据与寄存器1和寄存器2的数据进行一起比较,输出最大结果到选择器,同时寄存器1、寄存器2和寄存器4的数据进行累加并进行平均,输出结果到选择器,选择器根据指令进行输出选择结果。图1.362×2窗口池化第二时钟周期窗口为2×2的池化仿真图如图1.37所示,图中显示的是对卷积结果进行最大池化的结果,由图可知,池化层对第一行数据进行缓存,等待第二行数据输入,随后经过逻辑运算,每两个时钟周期输出一个数据。图1.372×2窗口池化仿真实现池化窗口为3×3的过程与上述过程类似,在缓存图像数据时,需要缓存两行数据开始计算,同时第三行数据到来时,每三个时钟周期输出一个池化结果。1.3加速器在FPGA平台上的实现1.3.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.96406卷积神经网络的重构本文将重构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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西水利电力职业技术学院公开招聘专任教师43人备考题库有答案详解
- 2026年中山纪念中学火炬一中招聘备考题库及1套完整答案详解
- 2026年威海市环翠区民兵训练基地公开招聘事业单位工作人员备考题库参考答案详解
- 2026年北京协和医院内分泌科于淼课题组合同制科研助理招聘备考题库及1套参考答案详解
- 2026年乐业文山每日招聘备考题库(第三百五十五期)丘北智拓职业技能培训学校招聘备考题库附答案详解
- 2026年北京中煤矿山工程有限公司招聘备考题库附答案详解
- 2026年中国热带农业科学院招聘备考题库及完整答案详解1套
- 2026年吉水县城控人力资源服务有限公司面向社会公开招聘劳务派遣人员至吉水县审计局的备考题库及完整答案详解1套
- 2026年广州万宝电机有限公司招聘备考题库及完整答案详解1套
- 2026年南昌市安义县总医院县人民医院院区编外合同制工作人员招聘备考题库及一套完整答案详解
- CJ/T 312-2009建筑排水管道系统噪声测试方法
- 大棚施工合同(7篇)
- 25春国家开放大学《学前儿童音乐教育活动指导》期末大作业答案
- DB31/ 807.1-2014重点单位保安服务要求第1部分:基本要求
- 提优点7 衍生数列问题
- 工程造价审计服务投标方案(技术方案)
- 工程质量通病防治手册(房建类)
- 采购石粉合同协议
- 驾考试题100道及答案
- 2025潍坊护理职业学院辅导员考试题库
- 麻醉科工作总结
评论
0/150
提交评论