首页> 中国专利> 一种基于遗传算法的自动优化算子的方法和系统

一种基于遗传算法的自动优化算子的方法和系统

摘要

本发明提供一种基于遗传算法的自动优化算子的方法和系统,获取算子的多个初始的调度方案,将每个调度方案分别作为个体以形成种群;分别采用每个个体运行算子,并根据算子在应用神经网络模型的后端设备上的运行性能分别计算种群中的每个个体的适应度;根据适应度对种群中的个体进行筛选,得到被保留的至少一个个体;判断是否达到终止条件:若是,对被保留的至少一个个体执行变异操作以产生新的个体并组成新一代的种群;若否,输出适应度最高的个体,以作为算子的调度方案,随后退出。能通过遗传算法自动搜索出目标硬件上的调度策略及其调度参数,生成高性能算子,大大提高了高性能算子开发效率。

著录项

  • 公开/公告号CN113326917A

    专利类型发明专利

  • 公开/公告日2021-08-31

    原文格式PDF

  • 申请/专利权人 开放智能机器(上海)有限公司;

    申请/专利号CN202110475679.X

  • 发明设计人 吕春莹;黄明飞;王海涛;

    申请日2021-04-29

  • 分类号G06N3/04(20060101);G06N3/08(20060101);G06N3/12(20060101);

  • 代理机构31272 上海申新律师事务所;

  • 代理人党蕾

  • 地址 200233 上海市徐汇区桂箐路65号1幢4层402-128单元

  • 入库时间 2023-06-19 12:24:27

说明书

技术领域

本发明涉及人工智能技术领域,尤其涉及一种基于遗传算法的自动优化算子的方法和系统。

背景技术

遗传算法是用于解决最优化的一种启发式搜索算法,其思想是模拟生物进化过程,通过选择若干局部最优解,模拟遗传基因的一些行为(交叉重组,变异)来寻求更优的解。由于遗传算法不受搜索空间的限制性假设的约束(不要求函数连续性,可导等性质),以及其具有内在的隐并行性和全局寻优能力,目前在在许多科学研究和工程领域得到广泛运用。

目前大多数人工智能应用都用到了深度学习技术。深度学习模型能否成功在终端落地应用,满足产品需求,一个关键的指标就是神经网络模型的推理性能。良好的推理性能要求深度学习推理框架要有适应不同硬件后端的高性能的优化算子的实现。然而,目前大部分的高性能算子需要靠高级优化工程师来手工优化实现,开发适应不同后端的高性能算子是一个花费大量人力和时间的过程。于是,高性能算子开发的自动化成为的最近比较热的课题。参见图1,现有的方法是将算法的计算实现和优化调度策略分离,算法部分是专用领域专用语言(Domain Specified Language)描述的纯算法计算逻辑,和硬件无关。优化调度策略部分可以通过增加数据并行性,调整计算顺序掩盖数据加载延迟,从而获得性能上的提升。已有常见的调度策略有:向量化,即对某个维度进行向量化计算,每n个元素作为一个向量进行计算;并行化,即对某个维度进行线程级并行化;分块计算,即把某个循环分为两个循环,内循环和外循环。虽然现有的技术在一定程度上提高了优化算子开发的效率,直接指定优化策略可以生成相应后端的代码,但是需要手动去选择优化调度策略,确定优化调度策略的调度参数,对于不同的硬件需要不同的参数。

发明内容

本发明提供一种基于遗传算法的自动优化算子的方法和系统,旨在解决现有技术中手动优化调度策略和参数效率低等技术问题。

一种基于遗传算法的自动优化算子的方法,应用于神经网络模型,神经网络模型中包括用于执行遗传算法的算子,包括如下步骤:

步骤S1,获取算子的多个初始的调度方案,将每个调度方案分别作为个体以形成种群;

步骤S2,分别采用每个个体运行算子,并根据算子在应用神经网络模型的后端设备上的运行性能分别计算种群中的每个个体的适应度;

步骤S3,根据适应度对种群中的个体进行筛选,得到被保留的至少一个个体;

步骤S4,判断是否达到终止条件:

若是,则执行步骤S6;

若否,则执行步骤S5;

步骤S5,对被保留的至少一个个体执行变异操作以产生新的个体并组成新一代的种群,随后返回步骤S2;

步骤S6,输出适应度最高的个体,以作为算子的调度方案,随后退出。

进一步的,调度方案包括算子的调度策略以及与调度策略相适应的调度参数。

进一步的,在步骤S3中,挑选出适应度最高的个体,以完成对种群的筛选;

则步骤S5中,对被保留的适应度最高的个体执行变异操作以产生新的个体。

进一步的,步骤S3中,淘汰适应度最低的个体,以完成对种群的筛选;

则步骤S5中,对被保留的所有个体分别执行变异操作以产生新的个体。

进一步的,步骤S4中,终止条件为:

当前的迭代次数是否达到预设的最大迭代次数;或者当前最高的适应度是否达到预设的合格适应度。

进一步的,在步骤S5中,随机挑选以下变异操作之一进行变异得到新的个体;

当调度策略中包含分块操作时,交换分块操作后形成的内循环和外循环的尺寸;

改变调度策略中按序执行的多个调度策略之间的执行顺序;以及

改变调度策略所对应的调度参数的参数尺度。

一种基于遗传算法的自动优化算子的系统,其特征在于,前述的一种基于遗传算法的自动优化算子的系统,包括:

设置模块,用于算子的多个初始的调度方案,将每个调度方案分别作为个体以形成种群;

适应度计算模块,连接设置模块,用于分别采用每个个体运行算子,并根据算子在应用神经网络模型的后端设备上的运行性能分别计算每个个体的适应度;

筛选模块,连接适应度计算模块,用于根据适应度对种群中的个体进行筛选,得到被保留的至少一个个体;

判断模块,连接筛选模块,用于判断是否达到种群中个体的适应度计算的终止条件,并输出判断结果;

变异模块,连接判断模块,用于在判断结果为到终止条件时,对被保留的至少一个个体执行变异操作以产生新的个体并组成新一代的种群;

适应度计算模块还用于连接变异模块,用于计算新的种群中每个个体的适应度;

输出模块,连接变异模块,用于连接判断模块,用于输出适应度最高的个体。

进一步的,调度方案包括算子的调度策略以及与调度策略相适应的调度参数。

进一步的,终止条件为:

当前的迭代次数是否达到预设的最大迭代次数;或者当前最高的适应度是否达到预设的合格适应度。

进一步的,变异模块用于随机挑选以下变异操作之一进行变异得到新的个体;

当调度策略中包含分块操作时,交换分块操作后形成的内循环和外循环的尺寸;

改变调度策略中按序执行的多个调度策略之间的执行顺序;以及

改变调度策略所对应的调度参数的参数尺度。

本发明的有益技术效果是:本发明提供一种基于遗传算法的自动优化算子的方法和系统,对比现有计算,省去手工指定调度策略,能通过遗传算法自动搜索出目标硬件上的调度策略及其调度参数,生成高性能算子,大大提高了高性能算子开发效率。

附图说明

图1为现有技术优化算子的模块示意图;

图2为本发明基于遗传算法的自动优化算子的方法的步骤流程图;

图3为本发明基于遗传算法的自动优化算子的方法的模块示意图;

具体实施方式

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

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

参见图2,一种基于遗传算法的自动优化算子的方法,应用于神经网络模型,神经网络模型中包括用于执行遗传算法的算子,其特征在于,包括如下步骤:

步骤S1,获取算子的多个初始的调度方案,将每个调度方案分别作为个体以形成种群;

步骤S2,分别采用每个个体运行算子,并根据算子在应用神经网络模型的后端设备上的运行性能分别计算种群中的每个个体的适应度;

步骤S3,根据适应度对种群中的个体进行筛选,得到被保留的至少一个个体;

步骤S4,判断是否达到终止条件:

若是,则执行步骤S6;

若否,则执行步骤S5;

步骤S5,对被保留的至少一个个体执行变异操作以产生新的个体并组成新一代的种群,随后返回步骤S2;

步骤S6,输出适应度最高的个体,以作为算子的调度方案,随后退出。

具体的,适应度是指算子在设备后端的运行时间的倒数,即时间越短,性能越高,适应度越高。

进一步的,调度方案包括算子的调度策略以及与调度策略相适应的调度参数。

算子的调度策略包括在高维度、宽维度和通道数维度方面的调度策略,高维度、宽维度和通道数维度的调度策略分别具有相应的调度参数。

具体的,调度策略包括向量化计算、并行化计算和循环展开计算;调度参数包括向量化尺度、并行化尺度和循环展开尺度。

进一步的,在步骤S3中,挑选出适应度最高的个体,以完成对种群的筛选;

则步骤S5中,对被保留的适应度最高的个体执行变异操作以产生新的个体。

具体的,对种群中的个体进行筛选包括将适应度进行从大到小排序形成每个个体的排名,筛选出适应度最大的个体。

进一步的,步骤S3中,淘汰适应度最低的个体,以完成对种群的筛选;

则步骤S5中,对被保留的所有个体分别执行变异操作以产生新的个体。

对种群中的个体进行筛选淘汰适应度最低的个体。

进一步的,步骤S4中,终止条件为:

当前的迭代次数是否达到预设的最大迭代次数;或者当前最高的适应度是否达到预设的合格适应度。

进一步的,在步骤S5中,随机挑选以下变异操作之一进行变异得到新的个体;

当调度策略中包含分块操作时,交换分块操作后形成的内循环和外循环的尺寸;

改变调度策略中按序执行的多个调度策略之间的执行顺序;以及

改变调度策略所对应的调度参数的参数尺度。

改变调度策略中按序执行的多个调度策略之间的执行顺序为交换并行化计算和向量化计算的顺序。

参见图3,一种基于遗传算法的自动优化算子的系统,应用于前述的一种基于遗传算法的自动优化算子的系统,包括:

设置模块(1),用于算子的多个初始的调度方案,将每个调度方案分别作为个体以形成种群;

适应度计算模块(2),连接设置模块(1),用于分别采用每个个体运行算子,并根据算子在应用神经网络模型的后端设备上的运行性能分别计算每个个体的适应度;

筛选模块(3),连接适应度计算模块(2),用于根据适应度对种群中的个体进行筛选,得到被保留的至少一个个体;

判断模块(4),连接筛选模块(3),用于判断是否达到种群中个体的适应度计算的终止条件,并输出判断结果;

变异模块(5),连接判断模块(4),用于在判断结果为到终止条件时,对被保留的至少一个个体执行变异操作以产生新的个体并组成新的种群;

适应度计算模块(2)还用于连接变异模块(5),用于计算新的种群中每个个体的适应度;

结果输出模块(6),连接变异模块(5),用于连接判断模块(4),用于输出适应度最高的个体。

进一步的,调度方案包括算子的调度策略以及与调度策略相适应的调度参数。

进一步的,终止条件为:

当前的迭代次数是否达到预设的最大迭代次数;或者当前最高的适应度是否达到预设的合格适应度。

进一步的,变异模块(5)用于随机挑选以下变异操作之一进行变异得到新的个体;

当调度策略中包含分块操作时,交换分块操作后形成的内循环和外循环的尺寸;

改变调度策略中按序执行的多个调度策略之间的执行顺序;以及

改变调度策略所对应的调度参数的参数尺度。

具体的,优化算子为卷积算子,卷积算子的一个个体的调度策略可定义为:对高h维度向量化,对通道数c维度并行化,对宽w维度循环展开,优选的,向量化尺度为4,并行化尺度为8,循环展开尺度为4。

具体的,使用AutoKernel作为高性能算子自动优化工具。

具体的,在Halide调度策略中,循环展开(Unroll)是一种牺牲程序的尺寸来加快程序的执行速度的优化方法,目的是:使得更充分利用寄存器,减少循环时每个操作内存加载和保存的次数,提高寄存器的利用率,充分利用寄存器来缓存数据,这样可以大大减少访问内存的延迟,从而有效提升内存带宽。

具体的,Halide调度策略中的向量化(vectorize)是把几个标量计算(scale)转换为一个向量计算(vector),充分利用SIMD向量指令。大部分现代CPU支持SIMD(SingleInstruction Multiple Data,单指令流多数据流)。在同一个CPU循环中,SIMD可在多个值上同时执行相同的运算/指令(如加、乘等)。

具体的,Halide调度策略中的分块(tile)指的是循环分块(loop tiling),通过把一个大循环变成两个循环:外循环和小块的内循环,目的是挖掘最内层循环的时间和空间局部性,从而提高性能。

具体的,改变调度策略所对应的调度参数的参数尺度,例如一个个体的对宽w维度循环展开,循环展开尺度为4,变异操作后,把循环展开尺度改为8。

具体的,交换分块操作后形成的内循环和外循环的尺寸,例如一个个体的分块操作为对h维度进行分块,H维度为128,分块尺寸为16,分块后的外循环(h_outter=128/tile_size=8),内循环(h_inner=tile_size=16),变异操作后的内循环和外循环尺寸为,外循环(h_outter=16),内循环(h_inner=8)。

以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号