基于FPGA的稀疏神经网络加速系统和设计方法与流程

文档序号:14941243发布日期:2018-07-13 20:52阅读:123来源:国知局

本发明涉及算法的硬件加速器领域,具体地涉及一种针对稀疏神经网络的fpga加速系统设计和方法。



背景技术:

近年来,随着神经网络(nn)算法广泛应用于图像处理,语音识别,自然语言处理等多个领域,对神经网络进行硬件加速,相比cpu和gpu有更好的能效。由于对准确度要求的提升,神经网络的层数和参数规模增大,产生大量冗余计算。在保证准确度的同时,使用剔除小权值参数,重新训练等多种方法的稀疏化的神经网络,减少神经网络结构对存储空间与计算资源的要求,有更加广泛的应用前景。

稀疏型神经网络与传统神经网络相比,其计算形式由规则的密集型矩阵的操作,变为对不规则的稀疏型矩阵进行操作,处理稀疏矩阵的两类方法,一是对稀疏矩阵填充零值元素,转换为规则矩阵进行操作,增加了额外的存储空间和无效计算;二是对稀疏矩阵进行压缩存储,并对由此对后续计算引起的访存数量增加等影响进行优化。

针对稀疏神经网络参数存储和计算特点实现稀疏神经网络硬件加速器,对于硬件加速平台的选择,常用有gpu,fpga和asic三种。对比三种实现方式,fpga相比gpu与asic,硬件结构能够针对专门的设计需求配置调整,开发周期短,单次开发成本低,难度较小,是对稀疏神经网络硬件加速结构进行研究的理想平台。



技术实现要素:

有鉴于此,本发明目的是:提供了一种基于fpga的稀疏神经网络加速系统及其设计方法,能够针对稀疏型的神经网络预测阶段的计算加速,对比通用处理器和传统基于fpga的硬件加速器达到更好性能和更低功耗的要求。

本发明的技术方案是:

一种基于fpga的稀疏神经网络加速系统设计方法,包括以下步骤:

s01:通过分析稀疏神经网络的关键计算,对系统平台做出软硬件划分,形成系统软硬件协同工作的整体框架;

s02:利用通用深度学习框架提取和存储稀疏神经网络结构的各层参数;

s03:根据预测阶段关键计算的特征和访存特征,设计硬件加速器整体框架,实现处理单元ip核;

s04:根据硬件资源和带宽情况,确定处理单元数量,均衡划分计算任务;

s05:将操作系统烧写到控制端,编写硬件加速器设备驱动及调用接口。

优选技术方案中,所述s01分析稀疏神经网络训练阶段和预测阶段,其中训练阶段关键计算为求导操作,采用通用深度学习框架处理,以达到快速准确的效果,预测阶段关键计算为卷积操作和矩阵乘法操作,用于硬件加速。

优选技术方案中,所述s02包括以下步骤:

针对常用的稀疏神经网络中计算密集型结构卷积层和存储密集型结构全连接层,比较二者的计算方式,基于提高数据复用,减少访存次数的原则,确定统一的计算参数表示方式;通过统计每层中权值矩阵的稀疏度,比较稀疏矩阵常用压缩存储格式的数据量大小和稳定程度,选取参数压缩存储使用格式,所述的稀疏度=非零权值数量/全部权值数量。

优选技术方案中,为增大数据的复用程度,减少数据的复制,降低访存次数,选择将全连接层的输入向量和权值向量分别映射为全连接层的输入特征图和卷积核矩阵。

优选技术方案中,稀疏矩阵压缩存储格式采用压缩稀疏行/列方式,即csr/csc。

优选技术方案中,所述s03分为以下步骤:

针对预测阶段的计算流程设计硬件加速器整体架构,多层复用处理单元迭代计算,包括数据传输模块,计算处理模块,数据缓存模块;数据传输模块使用dma流式读入和写回;计算处理模块包括多个处理单元,多个矩阵定点乘法器和二叉树累加器;缓存模块包括三个缓存结构,分别暂存计算所需输入,权值和输出中间结果。

优选技术方案中,所述s04分为以下步骤:

充分利用fpga硬件资源dsp,bram和lut数量,以及带宽情况,确定处理单元数量和缓存大小;根据输入特征图矩阵与卷积矩阵稀疏度,在每一次迭代计算时均衡处理单元间计算任务。

优选技术方案中,处理单元的计算任务划分方案采取在每一次迭代计算前,静态划分的方式;所述的静态划分方式,统计卷积核矩阵中非零值数量,按照计算单元缓存卷积核稀疏度近似的原则,整合并划分多个卷积核矩阵;统计输入特征图矩阵中非零值数量,按照计算单元中输入特征图矩阵稀疏度近似的原则,对特征图矩阵进行行列划分;整合并划分多个卷积核,保证每个硬件处理单元计算量近似;在神经网络算法图像处理应用中,在每层输出结果,引入新的零值,在每次复用计算单元迭代计算前,重新进行计算任务划分。

优选技术方案中,所述s05包括以下步骤:

在cpu控制端运行linux系统,采用字符设备框架为硬件加速器模块编写设备驱动程序,同时方便后续使用,完成调用接口函数;其中,在dma驱动程序中采用内存映射的方式进行数据的填充,将虚拟地址空间中的内核空间某段地址映射到用户空间中,减少数据的搬运操作。

本发明又公开了一种基于fpga的用于稀疏神经网络的加速系统,其特征在于,系统包括通用处理器、现场可编程门阵列以及存储器,包括:

cpu通用处理器,运行操作系统,对计算参数进行压缩处理,控制硬件加速器的运行。

ddr存储器,分别存储稀疏神经网络参数,输入特征图数据以及加速器回传结果。

fpga硬件加速器包括,数据传输模块,通过dma进行数据的流式传输,进行数据读取与写回;计算处理模块,采用与划分计算量相等的矩阵定点乘法器,通过二叉树累加器累加中间结果;数据缓存模块,存储计算所需的输入特征图矩阵,卷积核矩阵与输出结果数据。

优选技术方案中,所述处理硬件加速结构的控制器为通用处理器,通过控制总线控制计算处理单元的数据读取和写回,同时通过任务划分策略均衡计算任务的分配。

优选技术方案中,所述计算所需卷积核数据与输入特征图数据压缩存储ddr中,通过dma与硬件加速器进行数据传输,同时存储硬件加速器计算的回传结果。

优选技术方案中,所述预测阶段计算模块通过将dma读入的权值数据和输入数据在片上进行缓存,其中输入缓存与输出缓存交替使用的方式,在计算的同时读入下一次迭代所需的数据,形成流水化操作。设计乘法器的大小与任务分配量相等,使用二叉树累加器进行中间结果的归约操作降低算法时间复杂度,将输出数据进行缓存,缓存区满后一次性写回,降低访存的数量和数据传输延迟。

与现有技术相比,本发明的优点是:

本发明可以有效的加速稀疏神经网络的预测过程,针对稀疏神经网络的权值参数不规则计算和访存特点,采用软硬件协同工作方式,相对通用处理器和原有的fpga神经网络加速器有更高的性能和更低的功耗。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1为本发明实施例的基于fpga的稀疏神经网络算法加速系统设计方法100的流程图;

图2是稀疏神经网络模型的算法阶段示意图,对输入数据集的处理分为训练阶段和预测阶段;

图3是本发明实例稀疏神经网络加速系统软硬件协同框架图;

图4是基于fpga的稀疏神经网络加速系统总体架构图;

图5(a)是卷积层的计算示意图,(b)是全连接层的计算示意图;

图6是全连接层参数到卷积层参数的映射;

图7是稀疏矩阵的压缩稀疏矩阵行/列格式示意图;

图8是本发明实例稀疏神经网络fpga加速器计算处理单元结构图;

图9是本发明实例稀疏神经网络加速fpga加速器数据缓存结构图,使用bram缓存计算硬件加速器计算所需数据;

图10是本发明实例稀疏神经网络fpga加速器dma数据传输示意图;

图11为本发明实例稀疏神经网络预测阶段计算fpga加速的计算流程图;

图12是稀疏神经网络模型以4个2*2尺寸的卷积为例的卷积核稀疏矩阵划分示意图;

图13是稀疏神经网络模型以2个16*16尺寸的输入特征图稀疏矩阵划分示意图;

图14位本发明实例基于fpga稀疏神经网络加速系统的一个可能应用场景及框架示。

实施例:

本发明实施例中的fpga平台是指同时集成通用处理器(generalpurposeprocessor,简称为“gpp”)和现场可编程门阵列(fieldprogrammablegatearrays,简称为“fpga”)芯片的系统,其中,fpga和gpp之间的数据通路可以采用pci-e总线协议、axi总线协议等进行连接。本发明实施例附图数据通路采用axi总线协议为例说明,但本发明并不限于此。

图1为本发明实施例的基于fpga的稀疏神经网络算法加速系统设计方法100的流程图。该设计方法100包括:

s110:分析稀疏神经网络关键计算,对系统做出软硬件划分,形成整体框架;

s120:获取稀疏神经网络各层的权值参数,重新排列参数矩阵元素,压缩存储参数矩阵;

s130:根据预测阶段关键计算特征和访存特征,设计硬件加速器结构,实现计算逻辑单元;

s140:根据硬件资源和带宽情况,确定固化计算单元数量,均衡分配处理单元件的计算任务;

s150:将操作系统烧通用处理器,编写硬件加速器模块的设备驱动和调用接口函数。

下文中将结合图2,对本发明实例稀疏神经网络加速器系统整体框架的设计进行详细描述。

图2是稀疏神经网络模型算法阶段示意图,对输入数据集的处理分为训练阶段和预测阶段。训练阶段常用的通用处理器与图形处理器,采用反向传播算法等训练方法,通过求导计算迭代更新权值参数,最终得到具有高准确度的神经网络模型。预测阶段在训练后的神经网络基础上,进行前向计算,使用训练后的权值对输入数据求加权和,最终得到输出预测结果。

开源的深度学习框架支持神经网络算法,通过调用相应接口函数生成神经网络模型,获取训练阶段后的权值参数矩阵。因此,结合图2,本发明实例将经过开源深度学习框架训练后的稀疏神经网络权值参数,即稀疏矩阵使用软件函数进行进一步处理,包括重新排列每层权值稀疏矩阵元素,压缩存储稀疏矩阵,达到不同层的计算复用同构处理单元,降低权值参数的存储空间的目的。

图3是本发明实例稀疏神经网络加速系统软硬件协同框架图。该框架包括:

处理系统(processingsystem)210,是系统的控制部件,包括通用处理器(processor)与存储器(ddrmemory)。通用处理器作为控制端运行软件任务,用于控制可编程逻辑块上加速结构的执行,将加速任务加载到可编程逻辑上进行加速工作,同时传输计算数据,控制加速任务的运行,获取工作模块的状态等;

可编程逻辑(programmabelogic)220,是系统的硬件加速部件,能够根据特定的计算任务设计并实现专用的加速ip核,构建自定义的硬件加速器对算法的加速,与处理系统在数据交互完成后独立的并行执行任务。

控制总线(controlbus)230,用于系统控制部件到加速部件的控制信号传输。

数据总线(databus)240,用于系统控制部件与加速部件间的数据传输。

对稀疏神经网络预测阶段进行加速的硬件加速器。

现有的深度学习框架能够快速得到高准确性的稀疏神经网络模型,即得到训练后的神经网络模型每层的权值参数稀疏矩阵。通过编写处理软件处理函数,对提取的权值参数稀疏矩阵进行处理,因此,本发明实例将主要

图4是基于fpga的稀疏神经网络加速系统总体架构图,包括

通用处理器,用于控制硬件加速器的执行,计算数据的传输与计算任务的分配。同时,用于处理稀疏神经网络模型权值参数矩阵的提取与处理。系统控制器运行操作系统,通过接口函数调用硬件加速设备,通过控制总线和数据总线分别控制硬件dma的开启与关闭,将数据从存储模块传输至硬件加速器;

内存模块,用于存储稀疏神经网络模型参数数据,模型输入数据,并设置预测阶段结果数据存储区,由处理器控制数据的读取和写回;

控制协议,使用axi-lite协议,用于单个,低吞吐量的内存映射通信,控制和状态的通信;

数据协议,使用axi-stream协议,传数据需无需地址,从关注设备直接连续传输数据。

fpga硬件加速器,用于对稀疏神经网络的预测阶段计算进行加速。通过dma模块进行计算数据的传输,计算处理模块通过多个计算处理单元完成预测阶段的关键计算,读取的计算数据和处理的结果数据用bram缓存进行存储。

下文中将结合图5与图7,对本发明实例权值参数稀疏矩阵与输入数据稀疏矩阵的处理进行详细描述。

图5(a)是卷积层的计算示意图,(b)是全连接层的计算示意图。卷积层采用多个卷积核对输入特征图进行卷积操作,得到输出特征图,其计算数据包括特征图矩阵与卷积核矩阵;全连接层采用权值矩阵与对应输入向量进行加权和操作,得到输出向量,其计算数据包括输入向量与权值矩阵。

卷积层使用卷积矩阵乘法的计算,全连接层使用常规的矩阵乘法计算。在卷积层中,一个卷积核矩阵作为一个滑动窗口,在输入特征矩阵上按照行列以一定的步长间隔滑动,因此,将卷积矩阵操作转换为常规矩阵操作时,会产生大量的数据复制,反之,则不然;

图6是全连接层参数到卷积层参数的映射。全连接层的常规矩阵,转化为卷积矩阵,可以将每输入矩阵映射为一个输入特征矩阵,每个输出向量元素对应的相关权值映射为一个卷积核,该卷积核的尺寸与输入特征图尺寸相同。

图7是稀疏矩阵的压缩稀疏矩阵行/列格式示意图。稀疏神经网络的参数常用规则矩阵的形式存储,其矩阵的稀疏度最高可达到90%以上,按照数组结果存储矩阵浪费大量存储空间。因此,采用常规的稀疏矩阵存储格式,压缩存储参数矩阵,降低存储空间的占用量。采用三个数组结构分别存储按行排列的矩阵非零元素,非零元素对应的列号以及矩阵行的分隔点。

上文中详细描述了本发明实例稀疏神经网络算法的方法,下文中将结合图8与图11,对本发明实例稀疏神经网络预测阶段硬件计算结构的设计进行详细描述。

图8是本发明实例稀疏神经网络fpga加速器计算处理单元结构图,包括:

并行定点乘法器3100,将卷积核数据与输入特征图数据进行卷积乘法计算,采用dsp实现,使用流水线技术进行优化,使每个周期进行多个定点乘法操作,乘法器数量的设定将在后文详述。

二叉加法树累加器3200,将定点乘法器3100结构中或得到结果进行累加操作,采用二叉加法树进行并行计算,进一步消除累加数据的读写依赖,将累加操作的时间复杂度由o(n)降至o(logn)。

激活函数计算器3300,激励函数选取常用的relu=max(x,0)激活函数,将累加后的数据作为输入,将负值数据赋为零值。

非零值滤过器3400,经过激活函数处理的数据存在新的零值,将零值结果进行过滤,减少片上缓存的数据量,最终保存在bram输出缓存上。

图9是本发明实例稀疏神经网络加速fpga加速器数据缓存结构图,使用bram缓存计算硬件加速器计算所需数据,包括:

输入特征图缓存4100,用于存储输入特征图矩阵数据。

卷积核参数缓存4200,用于存储稀疏神经网络模型每层的卷积核矩阵数据。

输出特征图缓存4300,用户存储计算单元输出的结果数据,缓存满后一次性写回到内存中。

图10是本发明实例稀疏神经网络fpga加速器dma数据传输示意图。processor,ddrmemorycontroller和axidma分别位于系统的处理系统和可编程逻辑上,处理器通过axi-lite总线设置、初始化和控制数据的传输。axi_mm2s和axi_s2mm是内存映射的axi4总线,axis_mm2s和axis_s2mm是无地址的连续数据传输axi4-streaming总线。在处理器的控制下,计算数据在ddr内存与fpga加速器自定义ip核之间传输。

图11为本发明实例稀疏神经网络预测阶段计算fpga加速的计算流程图。通用处理器的控制下,通过dma将存储在内存上的卷积核数据与输入特征图数据传输到fpga加速器进行计算,经过计算处理单元进行乘法运算、累加运算、激励函数等处理,计算完成后再通过dma回传到内存中。

上文所述结合图2至图11描述本发明实例基于fpga的稀疏神经网络加速系统结构,下文将结合图12与图13的简化示例,描述根据计算数据的稀疏度和fpga加速器上处理单元的数量,在每一次迭代计算前进行计算任务的划分。

图12是稀疏神经网络模型多个卷积核稀疏矩阵划分示意图,以4个2*2尺寸的卷积核,2个计算单元为例。统计卷积核矩阵的稀疏度(稀疏度=矩阵非零元素数量/矩阵全部数量),结合fpga加速器上计算单元的数量,在保证每个计算单元中卷积核的稀疏度近似前提下,将卷积核进行组合分配至对应的处理单元中。

图13是稀疏神经网络模型输入特征图稀疏矩阵划分示意图,以2个8*8尺寸的输入特征图为例。上文中图5所示的稀疏神经网络模型中的计算示意图,经过激活函数relu输出的输出特征图包含多个零值元素,且稀疏度动态变化。统计输入特征图矩阵的稀疏度,结合fpga加速器上计算单元的数量,按照每个计算单元中输入特征图矩阵的稀疏度近似的原则,将输入特征图使用行与列的形式进行划分后分配至对应的处理单元中。

图14位本发明实例基于fpga稀疏神经网络加速系统的一个可能应用场景及框架示意图。

这里应用系统的组成是作为示例说明,本发明并不局限于此。用户通过编写应用对系统发出请求,系统控制器将任务分配到相应的软件与硬件计算节点上。在软件节点上进行模型参数的处理工作,将加速任务加载到硬件计算节点上执行计算的加速工作。

基于fpga的计算节点结构由底层硬件至顶层应用组成,包括:

硬件层,由fpga硬件加速器、内存与通用处理器组成,通用处理器作为系统控制器,控制fpga硬件减速器的计算处理单元的执行,数据读取与写回。fpga硬件加速器处理预测阶段的主要计算任务,包括卷积乘法累加运算单元,激活函数单元和非零值滤过单元。计算所需的输入特征图数据与卷积核数据,在通用处理器控制下,通过dma在内存存储区与硬件处理单元之间进行传输;

驱动层,根据烧写的操作系统和硬件设备,使用设备驱动框架为硬件模块编写驱动程序,提供上层接口函数的系统调用实现。

接口层,在实现的驱动模块基础上,封装硬件设备控制调用的接口函数。

应用层,面向用户提供稀疏神经网络预测计算的功能框架。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的系统及其设计方法能够以fpga和cpu的异构系统的形式来实现。更加细节的计算数据分片计算的大小,fpga加速器上固化ip核的数量,fpga硬件处理单元的任务量分配,均与不同种类的输入开源数据集与不同类型的fpga平台上硬件资源与带宽情况有关。专业技术人员可以针对特定的应用或特定类型fpga平台使用不同的任务划分方式,数据分片大小,计算并行度来实现上文描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的实施例中,应该理解到,所揭露的设计方法和硬件结构,可以通过其它的方式实现。例如,以上所描稀疏神经网络应用为深度卷积神经网络是示意性的。例如处理系统(processingsystem)与可编程逻辑(programmablelogic)互联axi总线接口是示意性的,可以根据不同的平台进行选择。例如,卷积核与输入特征图的划分尺寸与计算单元中的并行粒度是示意性的,可以根据具体输入数据结构尺寸与硬件资源情况等进行调整。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1