一种神经网络加速方法和装置与流程

专利2022-06-29  90


本发明涉及神经网络训练领域,更具体地,特别是指一种神经网络加速方法和装置。



背景技术:

随着科学计算技术的发展,神经网络已经取得了飞速的发展,同时由于gpu的可编程性不断增强,gpu的应用能力已经远远超出了图形渲染任务,而不断应用到新的领域,由于gpu出色的并行处理能力,gpu被广泛的应用到神经网络的训练和推理,目前推理主要应用nvidia的tensorrt,而tensorrt调用cudnn来进行推理的加速。

随着gpu技术的发展,并行计算计算量已经可以达到tflops的级别,可以为神经网络提供高效的推理速度,但是仍然不能够满足日益增长的训练和推理任务,因此如何更加高效的应用gpu就成为了关键。cudnn是nvidia专门为深度学习开发的动态库,可以执行深度学习中的前向卷积、后向卷积、矩阵乘等操作,每种操作需要占用一定大小的显存(即workspacesize),同时也与输入矩阵的维度大小有关,后向卷积同样如此。

ucudnn是在cudnn基础上发展起来的。ucudnn的出现为gpu的高效利用提高了思路,在有限制的显存空间内(workspacesize限制),通过把batchsize拆分成更小的batchsize并且选择最快的算法不仅可以加快网络的训练,也可以节省显存,但是ucudnn的一个明显的缺点是在进行网络训练不考虑workspacesize限制(即workspacesize足够大)情况下,卷积执行最快的算法就是占用workspace最大的算法(即卷积占用显存的大小和卷积执行最快的算法呈线性关系),因此没有起到加速的作用。

针对现有技术中深度学习动态库在显存足够大时没有加速效果的问题,目前尚无有效的解决方案。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种神经网络加速方法和装置,能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度,进而提高图形处理器利用率和工作效率。

基于上述目的,本发明实施例的第一方面提供了一种神经网络加速方法,包括执行以下步骤:

读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络。

在一些实施方式中,最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

在一些实施方式中,最优化加速求解架构为完全np问题。

在一些实施方式中,前向卷积函数和后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

在一些实施方式中,遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为可配置级的大小的倒数。

本发明实施例的第二方面提供了一种神经网络加速装置,包括:

处理器;以及

存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现以下步骤:

读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络。

在一些实施方式中,最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

在一些实施方式中,最优化加速求解架构为完全np问题。

在一些实施方式中,前向卷积函数和后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

在一些实施方式中,遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为可配置级的大小的倒数。

本发明具有以下有益技术效果:本发明实施例提供的神经网络加速方法和装置,通过读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络的技术方案,能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度,进而提高图形处理器利用率和工作效率。

附图说明

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

图1为本发明提供的神经网络加速方法的流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

基于上述目的,本发明实施例的第一个方面,提出了一种能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度的神经网络加速方法的一个实施例。图1示出的是本发明提供的神经网络加速方法的流程示意图。

所述神经网络加速方法,如图1所示,包括执行以下步骤:

步骤s101:读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

步骤s103:根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

步骤s105:以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

步骤s107:使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

在一些实施方式中,最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

在一些实施方式中,最优化加速求解架构为完全np问题。

在一些实施方式中,前向卷积函数和后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

在一些实施方式中,遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为可配置级的大小的倒数。

根据本发明实施例公开的方法还可以被实现为由cpu(中央处理器)执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。

下面根据具体实施例来进一步阐述本发明的具体实施方式。

在workspacesize足够大的情况下,最优化加速过程的求解相当于求解np完全问题:

其中,mk(c)和tk(c)分别表示卷积执行空间大小和执行时间的长短,bk(c)表示在当前配置下的batchsize大小,xk,c表示在网络层k层时的配置,为1时表示当前配置被选中。公式(2)中m表示gpu显存大小,公式(1)单位为batchsize/s,衡量ucudnn的卷积运算效率,ck表示网络层为k时的可配置集,k为网络总层数。

根据公式可以看出对于可配置集的搜索复杂度非常大,约为其中mmin表示当前选用占用最小workspacesize的卷积算法,显然是不能够在实际运算当中进行搜索的。因此将该问题转化为多重背包问题,则多重背包问题的状态转移方程为:

其中适应函数为公式(1)。

最后采用遗传算法方法来搜索全局最优解。设定可配置集ck的大小,并确定拆分workspace的因子的最细粒度值,当ck的最大配置值为32时可将workspace最细拆分为1/32,选中m大小,可以通过gpu的信息获得显存大小。

例如,设置个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数 1,变量的二进制位为20位,变异概率为0.1,交叉概率为0.9,由于训练时的batchsize一般为2的倍数,因此编码时可以以2为步进量,而每层网络参数配置为1/n(n为1中ck中的配置),表示拆分workspace的因子,而在网络中拆分后microbatchsize的大小和算法的选择主要通过递减batchsize来获取空间和算法的确切值来和当前最快的算法作比较来找出合适的microbatchsize和算法。

获取workspacesize和algorithm的函数分别为:cudnngetconvolutionbackwarddataworkspacesize和cudnngetconvolutionbackwarddataalgorithm,cudnngetconvolutionbackwardfilterworkspacesize和cudnngetconvolutionbackwardfilteralgorithm(后向卷积)、cudnngetconvolutionforwardworkspacesize和cudnngetconvolutionforwardalgorithm(前向卷积),通过遗传算法的迭代,最终可以找到最优值。

从上述实施例可以看出,本发明实施例提供的神经网络加速方法,通过读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络的技术方案,能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度,进而提高图形处理器利用率和工作效率。

需要特别指出的是,上述神经网络加速方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于神经网络加速方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

基于上述目的,本发明实施例的第二个方面,提出了一种能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度的神经网络加速装置的一个实施例。神经网络加速装置包括:

处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现以下步骤:

读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络。

在一些实施方式中,最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

在一些实施方式中,最优化加速求解架构为完全np问题。

在一些实施方式中,前向卷积函数和后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

在一些实施方式中,遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为可配置级的大小的倒数。

从上述实施例可以看出,本发明实施例提供的神经网络加速装置,通过读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于可配置级的大小来确定拆分工作空间所使用因子的最细粒度;根据总显存大小、可配置级的大小、和最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络的技术方案,能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度,进而提高图形处理器利用率和工作效率。

需要特别指出的是,上述神经网络加速装置的实施例采用了所述神经网络加速方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述神经网络加速方法的其他实施例中。当然,由于所述神经网络加速方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述神经网络加速装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。


技术特征:

1.一种神经网络加速方法,其特征在于,包括执行以下步骤:

读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于所述可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

根据所述总显存大小、所述可配置级的大小、和所述最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

以所述最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于所述最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代所述状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为所述最优批次尺寸和所述最优网络层配置来加速神经网络。

2.根据权利要求1所述的方法,其特征在于,所述最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

3.根据权利要求1所述的方法,其特征在于,所述最优化加速求解架构为完全np问题。

4.根据权利要求1所述的方法,其特征在于,所述前向卷积函数和所述后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

5.根据权利要求1所述的方法,其特征在于,所述遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为所述可配置级的大小的倒数。

6.一种神经网络加速装置,其特征在于,包括:

处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现以下步骤:

读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,并基于所述可配置级的大小来确定拆分工作空间所使用因子的最细粒度;

根据所述总显存大小、所述可配置级的大小、和所述最细粒度生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;

以所述最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成基于所述最优批次尺寸、卷积时间复杂度、和卷积空间复杂度的多重背包的状态转移方程;

使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代所述状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为所述最优批次尺寸和所述最优网络层配置来加速神经网络。

7.根据权利要求6所述的装置,其特征在于,所述最优化加速求解架构包括:卷积运算效率边界条件、显存最大值边界条件、神经网络每层配置边界条件。

8.根据权利要求6所述的装置,其特征在于,所述最优化加速求解架构为完全np问题。

9.根据权利要求6所述的装置,其特征在于,所述前向卷积函数和所述后向卷积函数包括由图形处理器的ucudnn动态库提供的以下函数:前向卷积工作空间大小函数、前向卷积工作算法函数、后向卷积数据工作空间大小函数、后向卷积数据工作算法函数、后向卷积过滤器工作空间大小函数、后向卷积过滤器工作算法函数。

10.根据权利要求6所述的装置,其特征在于,所述遗传算法的个体数目为40,最大迭代次数为2000,变量维数为神经网络的网络层数加一,变量二进制位为20位,变异概率为0.1,交叉概率为0.9,编码步进量为2,每层网络参数配置为所述可配置级的大小的倒数。

技术总结
本发明公开了一种神经网络加速方法和装置,方法包括:读取用于执行神经网络计算的图形处理器可用的总显存大小,设定可配置级的大小,确定拆分工作空间所使用因子的最细粒度;生成用于确定使卷积执行最快的最优批次尺寸和最优网络层配置的最优化加速求解架构;以最优化加速求解架构中的卷积运算效率边界条件作为适应函数,来生成多重背包的状态转移方程;使用以前向卷积函数和后向卷积函数作为评价依据的遗传算法来迭代状态转移方程直到获得收敛的批次尺寸和网络层配置,并将其作为最优批次尺寸和最优网络层配置来加速神经网络。本发明能够在任何大小的显存环境下都提高深度学习动态库的神经网络运行速度,进而提高图形处理器利用率和工作效率。

技术研发人员:孙红岩
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2020.01.19
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-15939.html

最新回复(0)