基于FPGA的深度卷积神经网络加速器及其设计方法

文档序号:37154233发布日期:2024-02-26 17:13阅读:18来源:国知局
基于FPGA的深度卷积神经网络加速器及其设计方法

本发明涉及人工智能与电子信息交叉,特别是涉及一种基于fpga的深度卷积神经网络加速器及其设计方法。


背景技术:

1、dcnn(deep convolutional neural network)是一种特殊类型的神经网络,它对特征的多阶段提取,使其具有强大的学习能力,可以自动学习数据特征,被广泛应用于图像分类、语义分割、目标检测、自然语言处理和语音识别。如今,随着现代互联网技术的不断发展,网络数据呈几何级数增长,大数据时代已经到来。网络中的海量数据信息蕴含着大量的行业资源,如何正确快速处理所需的数据信息,成为各行业面临的重要课题。传统dcnn算法难以适应数据量的爆炸增长,模型训练代价和复杂程度也随着数据规模增大不断提升。因此,改进dcnn算法使其适用于大数据环境具有十分重要的意义。

2、当前,dcnn的部署多选用图形处理器(graphics processing unit,gpu)、张量处理器(tensor processing unit,tpu)等器件作为平台来承载算法。但是由于gpu等器件具有能耗高、体积大等缺点,人们在小型移动系统和可穿戴设备等嵌入式场景中难以对其进行应用,这也导致了当前能够使用dcnn作为解决方案的工业级产品多为大型设备,或者通过网络将数据上传到云端服务器端进行处理。因此现场可编程门阵列(fieldprogrammable gate array,fpga)和专用集成电路(application specific integratedcircuit,asic)以其更低的能耗、更小的体积和更快的计算速度逐渐走进人们的视线,尤其是考虑到灵活性和可重构性,越来越多的关注点放在了基于fpga的神经网络加速器上面。

3、fpga是由大量的逻辑门电路和查找表组成的一种可编程硬件,通过程序控制小型查找表来实现内部逻辑门的控制,能够直接综合、布线得到可执行的逻辑电路。相比于gpu可以并行的对不同的数据执行相同的操作,fpga还能够并行的执行不同的操作,这大大降低了fpga处理多路并行任务的延迟,能够得到更快的计算速度。经过几十年的发展,fpga的片上资源越来越丰富,并大量嵌入了诸如块状随机存取存储器(bram)、数字信号处理(dsp)单元、锁相环(pll)等电路作为可调用的硬核。目前,fpga在信号处理、检索、矩阵运算等计算密集领域得到了广泛的应用,近年来在百度和微软等公司的数据中心也都得到了大规模部署,以提供庞大的算力和足够的灵活性。虽然相对于asic而言,fpga会占用更大的体积,速度也会略慢一筹,但由于其设计灵活、造价低、开发周期短,获得了更多的关注。

4、但随着深度学习技术的不断发展,dcnn(深度卷积神经网络)的结构越来越复杂,参数数量也越来越多,这导致了更高的计算量和更大的内存需求。这种复杂性同时也增加了模型训练的难度和代价。这给在fpga上加速部署dcnn带来了巨大的挑战。

5、因此,针对上面提到的情况,需要一种基于fpga的深度卷积神经网络加速器的设计方法,从而提升fpga的资源利用效率,提升fpga的计算速度。


技术实现思路

1、本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种面向fpga的深度卷积神经网络加速器。

2、为了实现本发明的上述目的,本发明提供了一种面向fpga的深度卷积神经网络加速器,包括:dcnn模型优化单元、dcnn模型量化单元和硬件结构设计单元;各个单元之间彼此相连作用,最终得到基于fpga的dcnn加速器;所述dcnn模型优化单元包括冗余特征压缩、模型并行训练和参数并行合并。

3、进一步地,包括以下步骤:

4、s1,对dcnn模型进行并行优化型训练;

5、s01,采用基于自适应混沌人工蜂群算法的参数并行训练策略mpt-ascabc进行模型并行训练,所述基于自适应混沌人工蜂群算法的参数并行训练策略mpt-ascabc包括参数初始化和参数并行更新,所述参数初始化包括:

6、s001,使用tent混沌序列初始化蜜源,步骤如下:

7、1)随机产生(0,1)内的初始值z0,记i=0;

8、2)对下式进行迭代,产生z序列,i自增1;

9、

10、其中rand(0,1)是[0,1]范围内随机数,n是序列内粒子个数;

11、mod表示取模运算;

12、3)如果达到最大迭代次数,程序结束,保存产生的z序列;

13、s002,雇佣蜂阶段:雇佣蜂在分配的蜜源附近寻找新的蜜源xk,记录搜索次数,直到搜索到适应度更高的蜜源;在雇佣蜂阶段采用公式(14)更新蜜源,并通过式(36)计算蜜源适应度fit(xi):

14、

15、

16、其中,xid、xjd、xkd分别表示蜜源xi、xj、xk在维度d上的值。

17、i=1,2,...,n;j=1,2,...,n;k=1,2,...,n;d=1,2,...,d;j≠i,表示在i的周围随机选择一个不等于i的蜜源;

18、n是序列内粒子个数,d是搜索空间的维度;

19、xi={xi1,xi2,…,xid,…,xid};

20、f(xi)表示问题的目标函数;

21、e-λtcos(t)表示基于阻尼运动的自适应步长因子β,λ是阻尼系数,t为迭代次数;

22、为随机搜索步长,是[-1,1]均匀分布的随机数;

23、在该阶段设计了基于阻尼运动的自适应步长因子β改进了随机邻域搜索步长从而实现加快蜜源搜索速度,提升收敛精度的效果。

24、s003,跟随蜂阶段:雇佣蜂搜索到更高适应度的蜜源,完成觅食返回蜂巢,向跟随蜂传递蜜源信息,跟随蜂以概率p选择蜜源进行搜索;概率p的计算公式如下:

25、

26、s004,侦查蜂阶段:雇佣蜂对所在蜜源的搜索次数达到阈值limit,表示所在蜜源附近无更优蜜源,则放弃该蜜源,转变为侦查蜂,在全局范围内随机搜索新蜜源,所述搜索采用人工蜂群算法进行蜜源更新,表达式如下:

27、xid=xid,min+(xid,max-xid,min)×γ     (16)

28、其中xid,min和xid,max分别是搜索空间的上下限;

29、γ为tent混沌中随机选取的混沌数;

30、在该阶段设计了蜜源侦查参数γ,将式(16)中的随机数替换为tent混沌变量,提高了全局搜索性能。

31、s005,重复s002、s003、s004直至收敛,得到最终蜜源,即模型初始参数;

32、通过基于自适应混沌人工蜂群算法的参数并行训练策略mpt-ascabc能有效解决大数据环境下卷积神经网络收敛速度慢、参数寻优能力不佳的问题。

33、s02,参数并行合并

34、(1)数据采样:使用蓄水池采样算法,通过采样得到的一部分key分布近似完整中间数据的key分布;

35、(2)数据倾斜检测:检测中间数据倾斜程度;

36、(3)数据分配:确定数据倾斜后,若中间数据倾斜程度超过阈值,则重分配中间数据;

37、s2,将训练完毕后的dcnn模型进行量化处理,以适应fpga的硬件特性。然后将量化后的dcnn模型部署到fpga:根据量化后的dcnn模型和fpga的资源限制,设计合理的硬件并行化结构,以优化计算和存储资源的利用;在此结构下,根据dcnn模型的不同层设计了不同的硬件单元,所述硬件单元包括计算单元、控制单元和存储单元;将量化后的dcnn模型根据此硬件并行化结构部署在fpga当中。通过这种部署方式,我们可以充分利用fpga的并行计算能力和优化后的存储资源,实现高效的计算和推理。

38、对dcnn模型进行并行训练和量化处理可以进一步提高模型的性能和精度,使其更适合在fpga上实现高效的计算和推理。

39、进一步地,根据数据倾斜因子,检测中间数据倾斜程度;所述数据倾斜因子dsf的计算公式如下:

40、

41、其中pair(ci,j)为中间数据第j个桶第i个簇的键值对的数量;

42、|·|为绝对值符号;

43、m为中间数据桶的总数量;

44、n为中间数据簇的总数量;

45、当中间数据偏斜程度越高,dsf的值越大,反之,dsf的值越小。因此数据偏斜因子dsf可以衡量中间数据的倾斜程度。当计算得到中间数据的倾斜程度大于预先设定的阈值ts,则说明中间数据存在明显数据倾斜,需对其进行重新分配。

46、进一步地,所述数据分配包括:

47、对于一个桶bj,其初始键值对数量为0,若其中已放入键值对数小于均衡范围下限;任意选择一个簇ci,若ci放入bj后未超过均衡范围上限,则直接将ci放入该桶;若超过均衡范围上限,此时并不直接将桶分配至最大容量而是分配至均衡值并将剩余键值对放入下一个桶;重复上述过程,直至所有簇完全分配到桶中。

48、进一步地,所述数据分配是根据数据分配函数实现的,数据分配函数daf包括:

49、目标桶中已放入的键值对数量为pairpre,则簇ci应分配进桶的键值对数量pairin(ci)为:

50、

51、其中pair(ci)表示簇ci中的键值对数量。

52、进一步地,在模型并行训练之前,进行冗余特征压缩,冗余特征压缩包括以下步骤:

53、s-1,对特征图进行信息量评价;

54、s-2,特征图信息量评价完成后,对特征图进行尺度空间压缩;

55、s-3,经过特征图压缩,输出特征图x′的一些元素因其对应的感受野计算被跳过而缺失,此时为将特征图x恢复至原始输出特征图的尺寸,使用距离空缺元素最近的元素做近似替代;对于缺失元素将在其附近使用广度优先搜索到的第一个下标满足的元素填入其中i1、j1为的下标值,最后得到尺度空间还原后的特征图x″。

56、进一步地,所述对特征图进行信息量评价,包括:

57、首先,计算特征图单个通道的冯诺依曼熵,得到每个通道的特征图信息量;

58、然后,提出信息量系数,综合特征图每个通道的信息量,计算得到能反映通道信息的特征图信息量评价系数;

59、所述信息量系数的计算包括:

60、已知有尺寸为c×h×w的输入特征图x,其中c为通道数,则该特征图的信息量系数icc(x)为:

61、

62、其中:

63、

64、xc是输入特征图x在通道c上的特征图,h(xc)是特征图在通道c上的冯诺依曼熵,是特征图中的元素x在通道c∈1,2,…,c上出现的概率。

65、进一步地,尺度空间压缩包括:

66、首先,提出特征图压缩因子η,计算目标特征图压缩率;

67、特征图压缩因子η包括:已知输入特征图x的信息量为icc(x),则特征图经过第i个卷积层layeri时的压缩系数为:

68、

69、其中ξ和α是两个常数;

70、ξ表示控制系数对icc(x)的敏感度;

71、α表示控制最大压缩率;

72、e表示自然常数;

73、然后,提出位置判定函数cdf(i,j),根据压缩率随机生成预跳过运算的元素位置;

74、位置判定函数cdf(i,j)包括:已知一个输入特征图x经过卷积后将会得到的一个原始输出特征图的尺度空间为hout×wout,则其做卷积运算时,对于位置(i,j),i≤hout,j≤wout相应感受野内的运算有如下判定:

75、

76、r={r1,r2,…,rθ}         (23)

77、

78、其中r1,r2,…,rθ是[1,hout×wout]中不相等的随机整数;

79、θ是运算跳过的数量;

80、最后,在卷积运算中,跳过卷积核与对应感受野的运算,得到压缩的输出特征图。

81、综上所述,由于采用了上述技术方案,本发明提出的基于fpga的深度卷积神经网络加速器及其的设计方法,不仅能够减少dcnn模型的参数数量和计算量,降低其对存储空间和计算资源的需求,使得在fpga上的部署更为便捷,而且通过设计合理的硬件架构,成功实现在fpga上部署复杂的dcnn模型,极大提升了模型的计算速度。此外,这种方法充分考虑到不同dcnn模型的结构差异,因此对各类dcnn模型具有广泛适用性。

82、本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

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