掌桥专利:专业的专利平台
掌桥专利
首页

一种用于深度学习编译器的算子优化加速方法及装置

文献发布时间:2024-04-18 19:53:47


一种用于深度学习编译器的算子优化加速方法及装置

技术领域

本发明涉及深度学习、编译技术、高性能计算交叉技术应用领域,尤其是涉及一种用于深度学习编译器的算子优化加速方法及装置。

背景技术

近年来,深度学习技术飞速发展并在机器视觉、自然语言处理、自动驾驶等多个领域取得了巨大成功。随着深度学习应用场景的不断增加,对深度学习模型的部署提出了更高的要求,其中一个重要的优化目标就是模型的推理速度。一般地,使用Tensorflow,Pytorch等深度学习框架训练的模型都可以导出为计算图的形式,在部署时,会以上述计算图为输入先进行计算图优化,如算子融合等,这类优化是与硬件平台无关的。然后将优化后的计算图中的算子映射到硬件供应商提供的计算库来获得高效执行。

硬件供应商提供的计算库往往具有很高的性能,比如NVIDIA公司的cuDNN,但是这种高性能计算库的构建和调优需要耗费巨大的工程量,随着新的神经网络结构不断被提出,工程上的压力也越来越大。另一方面,设计新的神经网络加速硬件也需要开发对应的高性能计算库,这也增大了工程负担。

为了解决上述问题,通过编译技术将不同深度学习框架产生的计算图映射到不同硬件并产生目标硬件可执行代码的方案获得了显著效果。一种比较高效的神经网络编译器包含以下流程:首先导入各种深度学习框架输出的计算图为高级中间表示(IntermediateRepresentation,IR),并进行图级别的优化,然后将优化后的高级IR转化为低级IR,并进行算子级别的优化,最后进行代码生成,将低级IR转化为目标硬件的可执行代码。TVM,Halide等深度学习编译器便采用了与上述流程相近的方案。

当进行算子级别的优化时,需要先定义算子的搜索空间,然后设计算法对搜索空间进行搜索,获得最佳的优化方案。一般地,搜索方案包括代价模型和搜索算法。其中代价模型用于预测算子在硬件上的运行时间,以减少在硬件上实测的开销。在每一轮迭代中,基于代价模型,搜索算法寻找一批最优的候选程序在硬件上运行,并根据实测的运行时间,构建数据集对代价模型进行更新。搜索过程按照上述流程进行循环,直到满足退出条件。

一般情况下,算子的搜索空间是高维的且往往非常大,因此,对于常用的搜索算法比如模拟退火和遗传算法等效率仍然偏低,以及导致算子优化的时间非常长的问题也需更新技术进行解决。

发明内容

针对现有技术的不足,本发明提出一种用于深度学习编译器的算子优化加速方法; 该方法改善编译器在算子优化过程中的时间开销;

本发明采用如下技术方案来实现的:

一种用于深度学习编译器的算子优化加速方法,包括如下步骤:

S1,将神经网络模型导入为计算图形式的高级IR;

S2,对计算图形式的高级IR进行图优化;

S3,将高级IR转化为低级IR,并为每个算子定义搜索空间;

S4,采用LightGBM作为代价模型,粒子群优化算法作为搜索算法并结合候选集采样对算子的搜索空间进行搜索;

S5,选择搜索到的最优算子进行代码生成,生成目标硬件的可执行代码。

具体地,所述S4中LightGBM是一种梯度提升树算法。

具体地,所述S4中粒子群优化算法是一种受鸟群觅食行为启发的元启发式算法,适用于算子优化的场景,用于加速算子优化速度;

进一步地,所述算子优化具体为:

假设待搜索的参数维度为

进一步地,所述S4粒子群优化算法的流程步骤如下:

S4.1,本轮搜索开始,初始化参数,包括迭代次数

S4.2,第一轮搜索随机初始化粒子群位置z

S4.3,判断是否满足结束条件,如满足结束条件,跳至步骤S4.9,否则跳至步骤S4.4;

S4.4,基于代价模型

S4.5,更新每个粒子的最优位置

S4.6,更新全局最优位置

S4.7,计算每个粒子的速度

S4.8,根据公式

S4.9,输出每个粒子的历史最优位置

S4.10,本轮搜索结束;

所述粒子群优化算法的相关符号如下:迭代次数为T;粒子数量为

具体地,所述S4.7计算每个粒子的速度

其中,

具体地,所述候选集采样,具体为,在每轮搜索中,粒子群优化算法会输出一批候选最优解,采用了一种基于密度聚类的算法DBSACN,对每轮搜索后的候选解进行聚类,对于聚类后的每一个类进行随机采样,得到需要在硬件上待实测的候选解。

一种用于深度学习编译器的算子优化加速装置,该装置包括以下模块:

导入模块:将神经网络模型导入为计算图形式的高级IR;

优化模块:对计算图形式的高级IR进行图优化;

转化模块:将高级IR转化为低级IR,并为每个算子定义搜索空间;

搜索模块:采用LightGBM作为代价模型,粒子群优化算法作为搜索算法并结合候选集采样对算子的搜索空间进行搜索;

生成模块:选择搜索到的最优算子进行代码生成,生成目标硬件的可执行代码。

一种电子设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的方法。

一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现所述方法的步骤。

本发明的有益效果如下:

本发明提出的方法主要针对深度学习编译器的算子优化过程,它可以自动地为各种算子搜索高效的代码实现,极大降低了工程师手工优化的工作量,为深度学习模型的部署提供了方便。之前的算子优化方案的一个痛点是算子优化时间长,本发明以LightGBM为代价模型可以高效地训练并评估算子的运行时间;以粒子群优化算法为搜索算法可以使各样本点进行充分的信息交互,从而加快搜索过程。另外,在每轮搜索中,对搜索算法输出的候选解采用DBSCAN进行聚类和采样,减少在硬件上的实测次数。通过上述方案,可以对整个算子优化过程进行加速,从而提升模型的部署效率。

附图说明

图1为本发明的算子优化示意图;

图2为本发明的粒子群优化算法流程图;

图3为本发明的算子优化流程图;

图4为本发明的装置流程图;

图5为本发明的电子设备结构图。

具体实施方式

为了使本发明的技术方案及优点更加清楚明白,以下对本发明中的算法流程进行进一步详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限定本发明。

本发明的技术方案如下:

一种用于深度学习编译器的算子优化加速方法,包括如下步骤:

S1,将神经网络模型导入为计算图形式的高级IR;

S2,对计算图形式的高级IR进行图优化;所述图优化包括但不限于对计算图形式的高级IR进行常量折叠、死码消除、公共子表达式消除等操作;

S3,将高级IR转化为低级IR,并为每个算子定义搜索空间;

S4,采用LightGBM作为代价模型,粒子群优化算法作为搜索算法并结合候选集采样对算子的搜索空间进行搜索;

S5,选择搜索到的最优算子进行代码生成,生成目标硬件的可执行代码。

对于步骤S4,详细说明如下:

所述LightGBM是一种梯度提升树算法,相较深度学习模型有更快的训练速度,即使相较同属于梯度提升树的XGBoost也有更好的性能。

所述粒子群优化算法:粒子群优化算法是一种受鸟群觅食行为启发的元启发式算法,具有参数少、收敛速度快等优点,尤其在高维问题和大搜索空间上被实践证明有良好的表现,适合算子优化的场景。基础的粒子群优化算法仅支持连续空间的优化,而算子优化场景是离散优化问题,需要进行调整。

算子优化,即假设待搜索的参数维度为

其粒子群优化算法的流程步骤描述如下:

S1,本轮搜索开始,初始化参数,包括迭代次数

S2,第一轮搜索随机初始化粒子群位置

S3,判断是否满足结束条件,如满足结束条件,跳至步骤S9,否则跳至步骤S4;

S4,基于代价模型

S5,更新每个粒子的最优位置

S6,更新全局最优位置

S7,根据公式

计算每个粒子的速度,并向下取整

S8,根据公式

计算每个粒子的新位置,若

S9,输出每个粒子的历史最优位置

S10,本轮搜索结束。

所述粒子群优化算法的相关符号如下:迭代次数为T;粒子数量为

本发明采用的粒子群优化算法,可以使不同候选解之间实现更充分的信息共享,从而提升搜索效率,减少搜索时间。

所述候选解采样:每轮搜索中,粒子群优化算法会输出一批候选最优解,若全部进行代码生成并在硬件上实测效率会很低。考虑到部分候选解在搜索空间中是接近的,硬件实测的运行时间也会比较接近,因此本发明采用了一种基于密度聚类的算法DBSACN,对每轮搜索后的候选解进行聚类。对于聚类后的每一个类进行随机采样,得到需要在硬件上实测的候选解。通过聚类和采样,可以有效减少实测的候选解数量,从而减少时间开销。

实施例

如图1的算子优化示意图和图3所示的算子优化流程图:

所述算子优化是个迭代过程,在每轮迭代中,先利用粒子群优化算法对搜索空间进行搜索,搜索过程中采用LightGBM作为代价模型对样本点的运行时间进行评估。搜索完成后输出一批候选解,采用DBSCAN进行聚类。对于聚类得到的每个类,再进行随机采样。通过上述方法得到需要硬件实测的候选解,它是原始候选解的子集。针对需要实测的候选解进行代码生成,并在硬件上运行得到真实的运行时间。将实测结果构造数据集,用来对LightGBM模型进行更新。至此完成了算子优化的一轮完整迭代。迭代过程持续进行,直到次数用尽后,整个算子优化过程结束,输出经过实测的运行时间最短的算子作为最优算子。

深度学习编译器导入模型后经过图优化并转化为低级IR,假设待优化的算子为矩阵乘算子。

矩阵乘算子可采用的优化方式包括循环展开、平铺、并行化等。以平铺为例,它是指对循环进行拆分,比如原循环范围为512,将其平铺为3个维度,即拆分为3个循环,那么(128*2*2)就是其中一种可行的拆分方法,而这种拆分方法一共有55种。其他变换也有相似的性质。假设示例的矩阵乘算子采用2种变换,每种变换分别对应4、55种可能性,那么搜索空间的大小为220 (220=4*55),对应到优化问题的可行域即参数维度为2维,也即可行解的形式为

如图2所示的粒子群优化算法流程图,下面描述粒子群优化算法的搜索过程:

步骤S1对各参数进行初始化,其中速度更新权重

步骤S2对粒子群的位置和速度进行初始化。首轮迭代中,位置可以随机生成,速度可以初始化为0,比如针对示例任务,编号

步骤S3中的结束条件可以为迭代次数用尽或者早停,其中早停指全局最优位置

步骤S4采用基于LightGBM的代价模型

步骤S5对每个粒子更新历史最优位置,即比较

步骤S6更新全局最优位置,即逐个比较所有粒子最优位置

步骤S7更新粒子速度,第一轮迭代中,对于编号

步骤S8更新粒子位置,对于示例粒子,

如图4所示,是根据一示例性实施例示出的一种用于深度学习编译器的算子优化加速装置,该装置包括以下模块:

导入模块:将神经网络模型导入为计算图形式的高级IR;

优化模块:对计算图形式的高级IR进行图优化;

转化模块:将高级IR转化为低级IR,并为每个算子定义搜索空间;

搜索模块:采用LightGBM作为代价模型,粒子群优化算法作为搜索算法并结合候选集采样对算子的搜索空间进行搜索;

生成模块:选择搜索到的最优算子进行代码生成,生成目标硬件的可执行代码。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

如图5所示,相应的,本申请还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的一种用于深度学习编译器的算子优化加速方法。实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。

相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述的一种用于深度学习编译器的算子优化加速方法。所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。

本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。

相关技术
  • 一种用于加速器区域防护门联锁的急停装置和控制方法
  • 一种用于经优化的Winograd卷积加速器的系统和方法
  • 一种面向深度学习编译器的高效算子优化方法
  • 一种用于深度学习编译器中探索优化空间的加速方法
技术分类

06120116350396