【《基于分布式存储的卷积计算过程案例分析》6600字(论文)】_第1页
【《基于分布式存储的卷积计算过程案例分析》6600字(论文)】_第2页
【《基于分布式存储的卷积计算过程案例分析》6600字(论文)】_第3页
【《基于分布式存储的卷积计算过程案例分析》6600字(论文)】_第4页
【《基于分布式存储的卷积计算过程案例分析》6600字(论文)】_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

基于分布式存储的卷积计算过程案例分析目录TOC\o"1-3"\h\u14692基于分布式存储的卷积计算过程案例分析 1155391.1卷积神经网络的并行性分析 117271.1.1卷积核并行加速分析 2299891.1.2输入与输出特征图通道并行加速分析 4110121.1.3层级间并行加速分析 846401.2分布式存储卷积计算设计 9242741.2.1分布存储神经网络并行结构设计 9240941.2.2分布卷积计算设计 14117131.2.3分布存储卷积计算整体结构 17卷积神经网络硬件加速的根本策略是提升层内、层间运算的并行性。除此之外,卷积神经网络运算涉及大量的数据与参数,而数据与参数的存储方式也严重影响系统的性能。适用于卷积神经网络运算特点的存储方式不但可以简化数据与参数的调度,还有利于克服系统外部总线带宽的限制,提升系统的整体并行性与运算效率。1.1卷积神经网络的并行性分析在进行卷积层运算时,由于资源有限,无法同时进行所有乘加运算,需要采用多次循环计算得到结果。如图1.1所示为一层卷积层计算的循环伪代码。设输入特征图大小与输出特征图大小一致,高为,H宽度为W,输入特征图个数为ni∗N,输出特征图个数为mi图1.1卷积层计算循环伪代码由图1.1的伪代码可见,卷积层的并行加速的核心就是针对卷积的循环乘法和加法进行展开,并行计算,提升达到系统的运算效率。设计卷积神经网络通用加速系统时,可以基于循环的结构,根据数据是否相关进行从内循环到外循环的并行展开。1.1.1卷积核并行加速分析在卷积神经网络中,卷积核的大小往往为K×K。在对输入图像进行卷积运算,需要k2次乘法运算。硬件加速设计可以采用k2个乘法器并行计算。如图图1.23×3卷积核并行计算在进行卷积核相加时,由于相加数的个数较多,组合逻辑电路时延较长,导致系统的时钟工作频率较低。在硬件电路设计中,为了减少关键路径的延迟,经常采用流水线方法,提升系统的工作频率。流水线工作原理是将任务分级完成,在关键路径上添加寄存器,保证每级能在高频率下完成,其工作时序图如图1.3所示,设有K级流水线的情况下,其结果将在K+1个时钟周期输出,图中为三级流水线。图1.3三级流水线时序使用流水线技术在关键路径添加寄存器,能够提高系统的频率,提升系统的运算效率。比如在卷积核为3×3的并行加速中需要进行九个结果的相加,可以采用加法树流水线操作,其结构图如图1.4所示,采用三级流水线操作,用加法树实现卷积乘法结果的累加。图1.4加法树结构电路计算时序图如图1.5所示,输入计算数据,经过加法树相加,两个时钟周期输出第一个相加结果,以后每个时钟周期依次输出一个累加结果,保证系统运行在高频率下,提升整个系统的运行效率。图1.5加法树时序图1.1.2输入与输出特征图通道并行加速分析在卷积过程中,同一层卷积的输入特征图通道和输出特征图通道之间数据是没有相关性的,可同时计算几个输入特征图通道和输出特征图通道,提高系统的并行性,加速神经网络系统运算效率。卷积层的输入特征图往往是多通道,在进行卷积计算一个输出特征图时,需要将全部输入通道特征图分别与不同的卷积核计算并将结果进行累加得到输出结果。如图1.6所示为四通道输入特征图卷积计算得到单通道输出特征图的计算过程,由于只有一个乘法器,因此需要四次大循环才能计算出结果。图1.6四通道输入特征图单通道输出特征图卷积计算过程由于每个通道的输入特征图的计算都是彼此不相关的,因此可以进行并行计算,将多个通道输入特征图与卷积核一起并行计算,设输入特征图通道数为N,最大可以将N个输入特征图通道一起进行并行计算,总共需要N个乘法器与N-1个加法操作。图1.7即为输入特征图通道数为4,采用四个乘法器,进行四个输入通道特征图并行运算的过程。图1.7四通道输入特征图并行计算在输入特征图通道并行的情况下加入卷积核的并行,所需乘法器数目为N×K×K,需要N×K×K-1加法可以得到输出结果。图1.8即为三通道输入特征图与卷积核大小为3×3的卷积共同并行计算的结构图,需要27个乘法器,26个加法器。图1.8三通道输入特征图与卷积核并行计算结构图卷积层的输出特征图是下一层卷积的输入特征图,也具有多个通道,同一输入通道特征图与不同卷积核卷积计算可以得到多个输出通道特征图。图1.9即为单输入通道特征图与四个卷积核卷积计算得到四输出通道特征图的运算过程。图1.9单输入特征通道多输出特征通道卷积计算过程卷积层计算每层都会得到多个通道输出特征图,每个通道的输出特征图的结果与输入通道特征图有关,但是每个输出特征图通道之间的结果没有关联性,因此可以将同一输入特征图通道与不同卷积核并行卷积计算,得到多个通道的输出特征图。设输出特征图的通道个数为M则输出的特征图最大并行度是M,图1.10为计算单输入通道特征图四输出通道特征图的并行计算过程。图1.10单输入通道特征图四输出通道特征图并行卷积计算输入特征图通道计算可以和输出特征图通道计算一起并行运行,最大程度加速整个系统。同时该方法还可以提高数据的复用率,减少带宽的需求。采用输入特征图通道为N和输出特征图通道为M时一起并行计算时需要N×M个乘法器,以及(N−1)∗M个加法器。图1.11所示为输入特征图通道数为3和输出特征图通道数为3的并行计算结构,其中共需要9个乘法器。图1.11输入特征图通道与输出特征图通道并行计算当将卷积核并行运算也加入进来,其乘法器数量需要N×K×K×M,加法器需要N−1∗M∗K∗K。图1.图1.12输入特征图通道与输出特征图通道以及卷积核并行计算1.1.3层级间并行加速分析卷积神经网络包括卷积层、激活函数以及池化层。层与层之间没有数据关联,为了加速系统,每层可以并行运行,层与层之间采用流水线操作,同时运行卷积层、激活函数以及池化层。在激活函数层运算时,由于卷积层一次输出一个计算结果,可以采用流水线操作,在硬件电路中实现常用的ReLU激活函数只需要加入一个比较器和一个数字选择器两个组合电路即可完成数据处理,其结构图如图1.13所示,在实现Sigmoid函数和Tanh函数时,由于涉及到e的幂指数运算,以及除法运算,关键路径时延较长,因此采用流水线设计。图1.13ReLu激活函数硬件电路池化层主要是对卷积层的结果进行降采样,池化层需要等待卷积层的卷积计算完成,但是在进行池化操作时不需要等待卷积全部完成,只需要池化的窗口数据完成就可进行池化操作,池化操作处理数据能力快于前面,不影响卷积的计算,在卷积层与池化层之间加入一个小的缓存,等待缓存的数据够池化层窗口,池化层就可进行流水线的池化操作,结构图如图1.14所示。图1.14池层并行计算结构图1.2分布式存储卷积计算设计为了提升并行卷积运算结构的运算并行性,必须要保证运算所需数据的提供,即卷积神经网络加速研究还必须解决以下两个问题:1)内部存储RAM需求高的限制;2)数据外部存储带宽限制。因此本文提出分布式存储卷积神经网络加速架构解决这两个问题,满足并行运算的数据需求,同时提高数据的复用率,提高整个带宽的利用率,提升整个系统的性能。1.2.1分布存储神经网络并行结构设计理想的加速神经网络系统设计是采用流水线形式进行全部层次的展开,结构图如图1.15所示。整个系统被全部展开,其数据主要存储在片内缓存,在初始运行时,第一个输出结果有很大的延时,但当第一个结果输出后,下一个结果紧随而来,具有很好的并行效果,然而该架构下的并行模式对计算资源和内部缓存资源以及外部存储带宽具有很高的要求,只适合特定小型网络,在深度网络以及多种神经网络上无法通用。图1.15理想卷积加速结构本文设计的分布存储卷积计算架构是一个通用网络架构,可实现卷积层、激活函数以及池化层计算的灵活重构。系统进行运算时,通过片上嵌入式CPU或者外部总线进行命令的传递。控制模块接受到指令后,根据指令调度各个运算层,重构各种卷积神经网络。该结构对神经网络的深度没有限制,并且系统可以重构多种网络,提高网络的通用性;同时该架构可以通过较小的片上存储缓存,充分利用外部带宽,该模型的结构图如图1.16所示。图1.16通用加速系统架构(因特网改为外部总线)图1.16中通用CNN加速网络结构如图1.17所示,主要包括N个输入模块、N个缓存填充模块、N×M个卷积并行加速模块、M个激活函数模块、M个池化模块、M个输出缓存模块。图1.17通用CNN加速模块架构根据卷积的特性,本文为了最大程度增加系统的并行行,系统采用输入特征图通道、卷积核以及输出特征图通道一起并行计算的结构,设输入特征图通道并行度为N,卷积核大小为K,以及输出特征图通道为M,最小的卷积计算模块为卷积核K×K并行的计算结构,输入和输出特征图并行需要N×M个卷积计算模块,整个系统需要N×M×K×K个乘法器,M×(K×K×N-1)个加法器。采用该并行计算模式,不仅最大程度增加系统的并行性,同时每个模块的计算互不影响,提高了数据的复用率;在只采用卷积核并行运算的情况下,系统的并行度只有K×K,计算效率太低,同时采用多输入特征图通道N并行计算,可以增加整个神经网络系统的并行性,但是只增加输入特征图通道进行卷积并行仅输出一个特征图通道数据,导致对输入特征图通道数据的利用率较底,每计算一个输出特征图通道数据就需要从DDR中读取所有输入特征图通道数据,设卷积层i的输入特征图通道数为Xi,输出特征图通道数为Yi,进行一层卷积计算,需要从DDR中读取数据的次数Zi Zi=Xi数据的利用率较低,系统对外部读取数据的DDR带宽要交较高,为了提升读取数据的复用率,采用M个输出通道图通道并行计算输出,N个输入特征图通道数据进行复用同时计算出M个输出特征图通道,采用该方式下,卷积层i从DDR中读取数据的次数变为下式1.2,对读取数据的带宽需求减M倍。在进行N输入特征图通道,M输出特征图通道并行计算,导致整个卷积层的结果按照M个通道分块存储,而非传统连续存储。 Zi=Xi与系统的并行结构适配的存储方式为采用N个输入缓存模块和N个缓存填充预处理模块,N个并行模块将输入特征图数据传递给N×M个卷积计算模块,同时在卷积的运算过程中,由于权重的共享,权重数据的需求较少,对图像数据的需求量较大,因而图像数据存储占用FPGA端的DDR存储,为了减少对DDR带宽的占用,权重数据从嵌入式系统上cpu端进行数据的传输,同时设置权重缓存模块提高权重数据;为了满足后续对M个输出特征图通道的激活函数以及池化处理,同样采用M个并行激活函数、池化以及输出缓存模块。在采用多输入特征图通道、卷积核以及多输出特征图通道同时并行计算时,整个系统的计算能力大幅度提高,但是该方案带来了数据需求量的增加,同时由于输入特征图通道并行度为N,当卷积层的输入特征图通道数大于N,不能一次得到卷积输出结果,需要将输入特征图通道循环计算,等待所有输入特征图通道计算结束并进行累加才能得到最终的卷积输出。采用传统的计算过程,会导致带宽的浪费,如图1.18所示,设输入特征图通道个数为nN,一次计算输入特征图并行通道个数为N,因此卷积完成需要循环n次,设第一批N个输入特征图通道的卷积输出计算结果为A,如果将临时结果A写入DDR,等待第二批N输入特征图通道卷积结果B计算输出,需要从DDR中读取上一批次结果A进行累加,如图中红色框内读写DDR数据,整个卷积过程会循环n次无用读写DDR,这样就增添的带宽需求,降低了DDR的利用率,引起了DDR存储带宽不足的问题。图1.18两批N输入特征图通道卷积计算过程针对该问题,本改变传统的计算存储模式,在神经网络系统中加入临时缓存模块,将卷积数据分布存储在M个临时缓存中,采用该缓存提高数据复用率解决了DDR带宽的问题。缓存主要存储卷积临时结果,其计算流程图如图1.19所示,第一批次N个输入特征图通道数据卷积完成后与临时缓存数据进行累加(初始化为0),并判断是否完成卷积,如果没有就继续等待下批次卷积结果进行累加,以此叠加,如果卷积完成则将结果进行激活函数操作,同时清空缓存数据为0,随后判断是否池化,最后将M个输出特征图通道卷积结果写入DDR,判断本层卷积是否完成,没有完成就进行循环计算余下的输出特征图通道卷积,采用该设计减少了临时卷积结果对DDR读写的操作,提高了DDR读写的利用率,解决了带宽不足问题。图1.19加入临时卷积计算流程图1.2.2分布卷积计算设计在卷积网络内部加入临时缓存模块,减少了DDR带宽不足问题,然而缓存过大会导致对片上资源的需求高,而且随着图像尺寸的增大,缓存也会依次增加,假设输入图像大小为500×500数据位宽为16位,输出通道并行度为16,系统需要的缓存大小为7.62MB(500×500×16×16Bit),由于在芯片内部设计SRAM的集成面积大,不能设计大规模缓存。针对此问题,本文提出了输入卷积特征图分块卷积的运算策略。进行卷积操作时,输入特征图通道数据时不是一次性执行完全部特征图的卷积,而将输入特征图分为上、中、下三大块进行卷积。如图1.20所示,小的图像在临时缓存中能够完全缓存下,进行全部卷积,对于大图像进行分块卷积,先卷积输入特征图的上半部分,等全部输入特征图通道数据卷积结束并累加完成后将临时缓存的结果输出到DDR中,清空临时缓存开始卷积计算中间部分,依次类推,最后卷积最后的下层部分完成整个输入特征图卷积。图1.20输入特征图分块卷积模型该运算过程将图1.1的二维循环变为三维循坏,其伪代码如图1.21所示,将输入特征图通道和输出特征图通道二维循环结构,变为三维循环结构增加一层输入特征图上、中、下循环。图1.21卷积循环操作伪代码采用此运算模块可以大幅度减少缓存的需求,小的缓存可以满足所有输入特征特征图数据,例如设输入特征图大小为500×500,缓存大小为2MB时,可以将图像分为四部分进行卷积,先卷积图像第一部分0-130行,卷积结束后,继续循环卷积第二部分131-260行,依次卷积261-390以及391-500部分。该结构可以根据片上内存大小进行修改设计,将卷积分块进行,卷积结果分布存储,卷积完成的部分存入DDR,未完成的存入到临时缓存,同时由于输出通道的并行,输出缓存个数与并行度M相同,未完成的临时结果分别存储在M个缓存中,如图1.22所示。图1.22分块卷积的分布存储采用该架构卷积需要注意各部分的填充,在计算上部分时,要注意上边沿以及左右边沿的填充操作,但是下边沿不填充,但是根据卷积核的大小需要多读取(K/2)行中间部分数据组成完正的卷积窗口;中间部分上下边沿不需要填充但是需要多读取几行数据找到卷积的窗口数据以及注意左右边沿的填充;下层部分上边沿无需填充但需要进行多读取几行数据,左右以及下边沿需要进行填充操作组成卷积所需的窗口数据。例如卷积核大小为3×3,在进行上部分下边沿卷积时,需要多读取1(3/2)行数据组成窗口数据。如图1.23所示,在进行上部分卷积计算时,为零保证卷积窗口数据的准确性,需要多读取一行待计算的输入特征通道数据

温馨提示

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

评论

0/150

提交评论