一种残差网络的加速方法、装置、设备及存储介质与流程

文档序号:18062624发布日期:2019-07-03 03:11阅读:368来源:国知局
一种残差网络的加速方法、装置、设备及存储介质与流程

本发明涉及算法加速领域,特别是涉及一种基于dla的残差网络的加速方法,本发明还涉及一种基于dla的残差网络的加速装置、设备及存储介质。



背景技术:

fpga(field-programmablegatearray,现场可编程门阵列)因其低功耗、可编程、高度并行等特性,已经成为互联网公司提高数据中心服务器性能及降低功耗的最佳解决方案之一,特别是近年来fpga在对cnn(convolutionalneuralnetworks,卷积神经网络)的加速过程中显示出非常具有潜力的高性能,例如利用fpga实现对cnn中的alexnet网络的加速等,然而现有技术中无法利用fpga对cnn中的残差网络进行加速,也即无法利用fpga运行残差网络,而只能够利用cpu等运行残差网络,cpu对于残差网络的运行速度较慢,且能耗较高。

因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种基于dla的残差网络的加速方法,能够利用fpga对残差网络进行加速,降低了能耗;本发明的另一目的是提供一种基于dla的残差网络的加速装置、设备及存储介质,能够利用fpga对残差网络进行加速,降低了能耗。

为解决上述技术问题,本发明提供了一种基于dla的残差网络加速方法,应用于现场可编程门阵列fpga,包括:

响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算;

根据预先接收的控制参数,判断是否需要对经过所述卷积计算的所述预设数据进行残差计算;

若是,则对经过所述卷积计算的所述预设数据进行所述残差计算,并对经过所述残差计算的所述预设数据执行所述dla中所述卷积计算后的相关计算操作;

否则对经过所述卷积计算的所述预设数据直接执行所述dla中所述卷积计算后的相关计算操作。

优选地,所述对预设数据进行卷积计算具体为:

将外部存储器中的所述预设数据中的第一预设子数据以及第二预设子数据写入自身的片上缓存中的第一预设区域;

从所述第一预设区域获取所述第一预设子数据以及所述第二预设子数据;

对所述第一预设子数据以及所述第二预设子数据分别进行卷积计算,并将所述第一预设子数据的第一卷积计算结果写入所述片上缓存的第二预设区域,将所述第二预设子数据的第二卷积计算结果写入所述片上缓存的第三预设区域;

则所述若是,则对经过所述卷积计算的所述预设数据进行所述残差计算具体为:

若是,则从所述第二预设区域获取所述第一卷积计算结果,从所述第三预设区域获取所述第二卷积计算结果;

对所述第一卷积计算结果以及所述第二卷积计算结果进行所述残差计算。

优选地,所述第一预设区域、所述第二预设区域以及所述第三预设区域均为预先在所述片上缓存中划分的区域;

其中,所述第一预设区域、所述第二预设区域以及所述第三预设区域的存储量不小于预设数值。

优选地,所述外部存储器为双倍速率同步动态随机存储器ddr。

优选地,所述ddr为ddr4。

优选地,所述响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算具体为:

响应于对深度学习加速器dla的执行指令,对经过winograd转换的预设数据进行卷积计算。

为解决上述技术问题,本发明还提供了一种基于dla的残差网络加速装置,应用于fpga,包括:

第一控制模块,用于响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算;

判断模块,用于根据预先接收的控制参数,判断是否需要对经过所述卷积计算的所述预设数据进行残差计算,若是则触发第二控制模块,否则触发第三控制模块;

所述第二控制模块,用于对经过所述卷积计算的所述预设数据进行所述残差计算,并对经过所述残差计算的所述预设数据执行所述dla中所述卷积计算后的相关计算操作;

所述第三控制模块,用于对经过所述残差计算的所述预设数据直接执行所述dla中所述卷积计算后的相关计算操作。

优选地,所述对预设数据进行卷积计算具体为:

将外部存储器中的所述预设数据中的第一预设子数据以及第二预设子数据写入自身的片上缓存中的第一预设区域;

从所述第一预设区域获取所述第一预设子数据以及所述第二预设子数据;

对所述第一预设子数据以及所述第二预设子数据分别进行卷积计算,并将所述第一预设子数据的第一卷积计算结果写入所述片上缓存的第二预设区域,将所述第二预设子数据的第二卷积计算结果写入所述片上缓存的第三预设区域;

则所述若是,则对经过所述卷积计算的所述预设数据进行所述残差计算具体为:

若是,则从所述第二预设区域获取所述第一卷积计算结果,从所述第三预设区域获取所述第二卷积计算结果;

对所述第一卷积计算结果以及所述第二卷积计算结果进行所述残差计算。

为解决上述技术问题,本发明还提供了一种基于dla的残差网络加速设备,应用于fpga,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上任一项所述基于dla的残差网络加速方法的步骤。

为解决上述技术问题,本发明还提供了一种计算机可读存储介质,应用于fpga,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述基于dla的残差网络加速方法的步骤。

本发明提供了一种基于dla的残差网络加速方法,应用于现场可编程门阵列fpga,包括响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算;根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算;若是,则对经过卷积计算的预设数据进行残差计算,并对经过残差计算的预设数据执行dla中卷积计算后的相关计算操作;否则对经过卷积计算的预设数据直接执行dla中卷积计算后的相关计算操作。

可见,本发明中,能够响应于对深度学习加速器dla的执行指令,对预设数据进行dla中第一步的卷积计算,并在卷积计算后,根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算,若是则对经过卷积计算的预设数据进行残差计算后再执行dla中卷积计算后的相关计算操作,若否则直接执行dla中卷积计算后的相关计算操作,由于相对于fpga执行dla时能够实现的alexnet网络来说,残差网络在卷积计算后多了一步残差计算,并且在残差计算前会判断是否需要执行残差计算,只有在需要时才会执行,本发明基于能够在fpga上执行的dla,增加了残差网络中特有的残差计算步骤及执行该残差计算步骤前的判断动作,可以通过fpga实现对残差网络的加速,提高了残差网络的运行速度,且能耗较低。

本发明还提供了一种基于dla的残差网络加速装置、设备及存储介质,具有如上残差网络加速方法相同的有益效果。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种基于dla的残差网络加速方法的流程示意图;

图2为本发明提供的一种dla的原始结构图;

图3为本发明提供的一种基于dla架构的残差网络加速框架的结构示意图;

图4为本发明提供的一种基于dla的残差网络加速装置的结构示意图;

图5为本发明提供的一种基于dla的残差网络加速设备的结构示意图。

具体实施方式

本发明的核心是提供一种基于dla的残差网络的加速方法,能够利用fpga对残差网络进行加速,降低了能耗;本发明的另一核心是提供一种基于dla的残差网络的加速装置、设备及存储介质,能够利用fpga对残差网络进行加速,降低了能耗。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明提供的一种基于dla的残差网络加速方法的流程示意图,包括:

步骤s1:响应于对深度学习加速器dla(deeplearningaccelerator,深度学习加速器)的执行指令,对预设数据进行卷积计算;

为了更好地对本发明实施例进行说明,请参考图2,图2为本发明提供的一种dla的原始结构图,dla在现有技术中用于通过被fpga执行以实现对于alexnet网络加速,本发明实施例中首先利用fpga执行dla中的第一步,即卷积计算,并开始执行对残差网络的加速运算过程。

具体的,执行指令可以由多种,例如可以为外部处理器发送的执行指令,在外部处理器的控制下,fpga开始执行dla中的第一步卷积计算。

其中,预设数据可以为多种类型,例如可以为采集到的人脸数据,残差网络的运算过程即是对人脸数据进行处理等,本发明实施例在此不做限定。

其中,外部处理器可以为多种类型,例如可以为cpu等,本发明实施例在此不做限定。

步骤s2:根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算;

具体的,预先接收的控制参数的来源可以有很多种,例如可以为外部处理器发送的控制参数等,本发明实施例在此不做限定。

为了更好地对本发明实施例进行说明,请参考图3,图3为本发明提供的一种基于dla架构的残差网络加速框架的结构示意图,经过研究发现,残差网络与alexnet网络相比,仅仅是在卷积计算过后,还会判断是否需要执行残差计算,如需要则进行残差计算,即执行图3中的残差计算模块所实现的动作,在执行完dla中的卷积计算步骤后,可以根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算,以便执行后续的步骤,当然,后续两个步骤也是在执行图3中的残差计算模块实现的动作。

具体的,作为一个新的计算组件,残差函数的计算需要有一个新的fpga加速模块作为dla的组成部分,即图3中的残差计算模块,在fpga中实现新的计算组件最大的障碍在于残差计算前后存在严重的数据依赖,较大的影响了其计算性能,因此,重构了dla上所有网络层上的加速计算以适应残差网络fpga加速平台。

其中,可以预先对dla架构进行重构,设计如图3所示的残差计算模块,并实现本发明实施例中的各个步骤。

步骤s3:若是,则对经过卷积计算的预设数据进行残差计算,并对经过残差计算的预设数据执行dla中卷积计算后的相关计算操作;

具体的,如果需要,则对经过卷积计算的预设数据进行残差计算,并对经过残差计算的预设数据执行dla中卷积计算后的相关计算操作,以完成对残差网络的加速过程。

步骤s4:否则对经过卷积计算的预设数据直接执行dla中卷积计算后的相关计算操作。

具体的,如果不需要,则跳过残差计算,直接对经过卷积计算的预设数据直接执行dla中卷积计算后的相关计算操作,以完成对残差网络的加速过程。

值得一提的是,在fpga对残差网络进行加速并对预设数据进行运算时,可以执行本发明实施例中的各个步骤多次,以完成对预设数据的运算过程,本发明实施例在此不做限定。

其中,本发明实施例中,可以基于fpga高级编程语言opencl(opencomputinglanguage,开放运算语言)在dla框架中构造残差网络特有的残差计算模块;基于该方法能够实现残差网络在fpga异构加速卡的移植,利用fpga的硬件流水设计和任务级并行,大幅提高残差网络的推理应用性能。

具体的,深度学习作为机器学习的一个分支,是人工智能中发展迅速的领域之一,可帮助计算机理解大量图像、声音和文本形式的数据。近年来随着caffe(convolutionalarchitectureforfastfeatureembedding,卷积神经网络框架)等深度学习开源工具趋于成熟,深度学习技术发展迅速,目前,深度学习在人脸识别、语音识别、精准医疗以及无人驾驶等领域正被广泛的应用。2015年,imagenet竞赛上,深度学习残差网络(resnet)取得突破进展,其推出152层的网络结构,大幅度提高网络深度,并设计利用连接输入层的残差函数(eltwise操作)取代之前无参照的函数用来学习模型参数,解决了网络深度变深以后的性能退化问题。残差网络在imagenet测试集上的总体错误识别率已经降低到3.57%,而这一结果也获得了ilsvrc2015竞赛中图像分类任务的第一名,引起了深度学习神经领域的强烈反应。

利用gpu(graphicsprocessingunit,图形处理器)s、tpu(tensorprocessingunit,张量处理单元)s和fpgas对深度学习推理应用进行性能优化加速是目前非常热点的解决方案。与cpu相比,gpu能够提升深度学习所需的计算密集型程序的计算速度,但是,gpu高能耗、小缓存等特点限制了其能效的提升与应用范围。而fpga异构平台因其低功耗、可编程、高度并行等特性,已经成为互联网公司提高数据中心服务器性能及降低功耗的最佳解决方案之一。特别是近年来fpga在cnns的实现中显示出非常具有潜力的高性能。为了适应深度学习推理端的实际应用,fpga在平衡系统功耗和灵活性中间扮演着十分重要的角色。fpga异构计算平台采用高层次综合编程模型,基于opencl语言对深度学习神经网络进行研究和优化,完成神经网络算法在fpga平台上的高效移植和部署,通过充分利用板卡硬件流水设计和任务级并行,能够大幅提升了深度学习神经网络算法的计算性能。

目前基于fpga异构计算平台加速cnn的研究大部分只是针对于计算较为复杂的卷积层,使得其他网络层的计算变为整个神经网络的计算瓶颈,这就限制了fpga加速cnn推理应用的优势发挥。虽然一些研究已经实现了将所有网络层的计算移植到fpga,然而跟已知的gpu性能相比,fpga的性能还是有较大的差距。aydonat等人提出了一个全新的cnn实现框架,该框架利用opencl实现了最大化的数据重用和最小的内存带宽开销,完成对alexnet网络实现了异构加速,被称作为深度学习加速器dla,然而alexnet与残差网络resnet之间的网络结构差别导致不能利用dla加速器直接实现对resnet的异构加速,给基于fpga异构加速残差网络实现带来一系列新的挑战。

本发明提供了一种基于dla的残差网络加速方法,应用于现场可编程门阵列fpga,包括响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算;根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算;若是,则对经过卷积计算的预设数据进行残差计算,并对经过残差计算的预设数据执行dla中卷积计算后的相关计算操作;否则对经过卷积计算的预设数据直接执行dla中卷积计算后的相关计算操作。

可见,本发明中,能够响应于对深度学习加速器dla的执行指令,对预设数据进行dla中第一步的卷积计算,并在卷积计算后,根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算,若是则对经过卷积计算的预设数据进行残差计算后再执行dla中卷积计算后的相关计算操作,若否则直接执行dla中卷积计算后的相关计算操作,由于相对于fpga执行dla时能够实现的alexnet网络来说,残差网络在卷积计算后多了一步残差计算,并且在残差计算前会判断是否需要执行残差计算,只有在需要时才会执行,本发明基于能够在fpga上执行的dla,增加了残差网络中特有的残差计算步骤及执行该残差计算步骤前的判断动作,可以通过fpga实现对残差网络的加速,提高了残差网络的运行速度,且能耗较低。

在上述实施例的基础上:

作为一种优选的实施例,对预设数据进行卷积计算具体为:

将外部存储器中的预设数据中的第一预设子数据以及第二预设子数据写入自身的片上缓存中的第一预设区域;

从第一预设区域获取第一预设子数据以及第二预设子数据;

对第一预设子数据以及第二预设子数据分别进行卷积计算,并将第一预设子数据的第一卷积计算结果写入片上缓存的第二预设区域,将第二预设子数据的第二卷积计算结果写入片上缓存的第三预设区域;

则若是,则对经过卷积计算的预设数据进行残差计算具体为:

若是,则从第二预设区域获取第一卷积计算结果,从第三预设区域获取第二卷积计算结果;

对第一卷积计算结果以及第二卷积计算结果进行残差计算。

具体的,考虑到原有的dla框架中,片上缓存中仅有两块缓存区域,但是在残差网络中的卷积计算操作时,两块缓存区域无法满足卷积计算过程的数据读写需求,本发明实施例中在fpga的片上缓存中预先划分了三块区域,即第一预设区域、第二预设区域以及第三预设区域。

其中,fpga可以首先从外部存储器中,将预设数据中的第一预设子数据以及第二预设子数据写入自身的片上缓存中的第一预设区域,方便后续对数据进行计算处理。

具体的,然后fpga从第一预设区域获取第一预设子数据以及第二预设子数据,然后分别对第一预设子数据以及第二预设子数据进行卷积计算,这两个计算过程是并行的,然后将第一卷积计算结果写入片上缓存的第二预设区域,将第二卷积计算结果写入第三预设区域,方便后续的残差计算。

其中,本发明实施例中介绍的过程是需要进行残差计算时,卷积计算的过程,由于在这种情况下有两个卷积计算过程同时进行,产生了两个卷积计算结果,因此需要后续对该两个卷积计算结果进行残差计算,若不需要进行残差计算时,那么卷积计算只有一个卷积计算结果,也就无需对一个卷积计算结果进行残差计算。

具体的,两个卷积计算并行进行的过程中,首先需要从第一预设区域中获取第一预设子数据以及第二预设子数据,然后将两个卷积计算结果分别写入不同于第一缓存区域的两个缓存区域,即第二缓存区域以及第三预设区域中去,便于残差计算时获取两个不同的卷积计算结果以进行残差计算。

其中,在残差计算后,可以将残差计算结果写入第二预设区域或者第三预设区域,方便后续的计算过程中对残差计算结果进行读取,当然,也可以将残差计算结果写入第一预设区域,本发明实施例在此不做限定。

作为一种优选的实施例,第一预设区域、第二预设区域以及第三预设区域均为预先在片上缓存中划分的区域;

其中,第一预设区域、第二预设区域以及第三预设区域的存储量不小于预设数值。

考虑到在执行图3中的各个计算操作时,所产生的需要缓存的数据块的大小不同,为了能够顺利地存储每个产生的数据块,本发明实施例中,可以将第一预设区域、第二预设区域以及第三预设区域的存储量均设置为不小于预设数值,此种情况下,便能够满足产生的每个数据块的存储需求。

其中,预设数值可以根据实际需求进行自主设定,其不应小于图3中的各个计算操作所能产生的最大数据块所占数据存储空间的数值,本发明实施例在此不做限定。

作为一种优选的实施例,外部存储器为ddr(doubledatarate,双倍速率同步动态随机存储器)。

具体的,ddr具有速率高、寿命长以及成本低等优点。

当然,除了ddr外,外部存储器还可以为其他多种类型,本发明实施例在此不做限定。

作为一种优选的实施例,ddr为ddr4。

具体的,ddr4具有速率高、体积小以及寿命长等优点。

当然,除了ddr4外,ddr还可以为其他类型,本发明实施例在此不做限定。

作为一种优选的实施例,响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算具体为:

响应于对深度学习加速器dla的执行指令,对经过winograd转换的预设数据进行卷积计算。

具体的,为了进一步地提升fpga对残差网络的运算速度,本发明实施例中,可以首先对预设数据进行winograd转换后,再进行后续的各个计算步骤,即首先进行卷积计算,然后再进行后续步骤,能够有效地提升残差网络的运算速度。

当然,除了进行winograd转换外,还可以对预设数据进行其他形式的处理以提升运算速度,本发明实施例在此不做限定。

请参考图4,图4为本发明提供的一种基于dla的残差网络加速装置的结构示意图,应用于fpga,包括:

第一控制模块1,用于响应于对深度学习加速器dla的执行指令,对预设数据进行卷积计算;

判断模块2,用于根据预先接收的控制参数,判断是否需要对经过卷积计算的预设数据进行残差计算,若是则触发第二控制模块3,否则触发第三控制模块4;

第二控制模块3,用于对经过卷积计算的预设数据进行残差计算,并对经过残差计算的预设数据执行dla中卷积计算后的相关计算操作;

第三控制模块4,用于对经过残差计算的预设数据直接执行dla中卷积计算后的相关计算操作。

作为一种优选的实施例,对预设数据进行卷积计算具体为:

将外部存储器中的预设数据中的第一预设子数据以及第二预设子数据写入自身的片上缓存中的第一预设区域;

从第一预设区域获取第一预设子数据以及第二预设子数据;

对第一预设子数据以及第二预设子数据分别进行卷积计算,并将第一预设子数据的第一卷积计算结果写入片上缓存的第二预设区域,将第二预设子数据的第二卷积计算结果写入片上缓存的第三预设区域;

则若是,则对经过卷积计算的预设数据进行残差计算具体为:

若是,则从第二预设区域获取第一卷积计算结果,从第三预设区域获取第二卷积计算结果;

对第一卷积计算结果以及第二卷积计算结果进行残差计算。

对于本发明实施例提供的基于dla的残差网络加速装置的介绍请参照前述残差网络加速方法的实施例,本发明实施例在此不再赘述。

请参考图5,图5为本发明提供的一种基于dla的残差网络加速设备的结构示意图,应用于fpga,包括:

存储器5,用于存储计算机程序;

处理器6,用于执行计算机程序时实现如上任一项基于dla的残差网络加速方法的步骤。

对于本发明实施例提供的基于dla的残差网络加速设备的介绍请参照前述残差网络加速方法的实施例,本发明实施例在此不再赘述。

为解决上述技术问题,本发明还提供了一种计算机可读存储介质,应用于fpga,计算机可读存储介质上存储有计算机程序,计算机程序被处理器6执行时实现如上任一项基于dla的残差网络加速方法的步骤。

对于本发明实施例提供的计算机可读存储介质的介绍请参照前述残差网络加速方法的实施例,本发明实施例在此不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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