一种应用于AI异构编译器的自动切分神经网络子图方法技术

技术编号:23934097 阅读:36 留言:0更新日期:2020-04-25 02:30
本发明专利技术公开一种应用于AI异构编译器的自动切分神经网络子图方法,其中包括,创建节点列表;预先对神经网络计算图的所有节点进行编号,并记录每个节点的输入依赖关系与输出依赖关系;从神经网络计算图中获取任一输入无依赖关系的节点;删除输入无依赖关系的节点以及以输入无依赖关系的节点为起点的所有连接边,且将删除的节点的编号存储至节点列表中;重复步骤S2与步骤S3,直至神经网络计算图为空,将删除的节点的编号存储至节点列表中;根据节点列表中的节点属性颜色进行自动切分,以处理得到各个神经网络计算子图。有益效果:适用于任一复杂结构的神经网络计算图,解决了神经网络计算图不好切分子图以及不同的计算单元处理子图不好划分的问题。

A sub graph method of automatic segmentation Neural Network Applied to AI heterogeneous compiler

【技术实现步骤摘要】
一种应用于AI异构编译器的自动切分神经网络子图方法
本专利技术涉及AI(ArtificialIntelligence,人工智能)
,尤其涉及一种应用于AI异构编译器的自动切分神经网络子图方法。
技术介绍
随着AI技术的不断发展,目前基于深度学习的神经网络算法已经成为AI研究的主流方式。出于成本,功耗,隐私性等问题的考虑,越来越多的应用场景把AI算法的计算从云端向移动嵌入式终端设备迁移。目前的嵌入式设备芯片往往是多个计算单元并存,除了通用的CPU(CentralProcessingUnit/Processor,中央处理器)外,还有专门为AI算法加速的GPU(GraphicsProcessingUnit,图形处理器),NPU(networkprocessunits,网络处理器),FPGA(Field-ProgrammableGateArray,现场可编程门阵列)等AI加速器。CPU通用性与可编程性好,但是性能和能效比差,AI加速器性能和能效比高,但是可编程性差,比如有些AI加速器不可编程,有些AI加速器可编程,但编程复杂开发周期长,有些AI加速器只支持整形计算导致网络精度损失大。结合CPU和AI加速器的特点,通过对神经网络进行子图切分,把计算密集的算子在AI加速器上计算(比如,卷积算子ConvolutionOp,全连接算子Fully-connectedOp,等等),把一些计算逻辑复杂的算子或者不适合整形计算的算子在CPU上计算(比如检测网络的前后处理等算子),是目前AI异构计算的一个解决方案。>有鉴于此,要实现异构计算,如何对神经网络计算图进行自动子图切分,是目前需要解决的问题。目前已有的方案只适合简单的算子链式相连的神经网络计算图,而越来越多的神经网络计算图包含更复杂的算子连接依赖关系,比如concat算子需要多个输入,比如residualnetwork中的residual模块,都涉及非链式的神经网络计算图。如何找到一种能够对任意的神经网络计算图进行子图切分的计算方法,是AI异构编译器需要解决的一个巨大挑战。目前需要解决的问题是找出一个自动切分子图的算法,将神经网络计算图中部署到不同计算单元的算子节点切分到不同的子图上。
技术实现思路
针对现有技术中存在的上述问题,现提供一种应用于AI异构编译器的自动切分神经网络子图方法。具体技术方案如下:一种应用于AI异构编译器的自动切分神经网络子图方法,用于将神经网络计算图中部署到不同计算单元的算子节点切分到不同的神经网络计算子图上,其中,包括以下步骤:步骤S1、创建一节点列表;步骤S2、预先对所述神经网络计算图的所有节点进行编号,并记录每个所述节点的输入依赖关系与输出依赖关系;步骤S3、从所述神经网络计算图中获取任一输入无依赖关系的节点;步骤S4、删除输入无依赖关系的所述节点以及以输入无依赖关系的所述节点为起点的所有连接边,且将删除的所述节点的编号存储至所述节点列表中;步骤S5、重复所述步骤S2与所述步骤S3,直至所述神经网络计算图为空,同时将删除的所述节点的编号存储至所述节点列表中;步骤S6、获取所述节点列表,根据所述节点列表中的节点属性颜色进行自动切分,并获取与所述节点相关的所述输入依赖关系与所述输出依赖关系处理得到各个所述神经网络计算子图。优选的,于所述步骤S6之前还包括:判断所述神经网络计算图是否为空;若否,则转向所述步骤S3;若是,则转向所述步骤S6。优选的,于所述步骤S6包括以下步骤:步骤S60、创建一子图队列仓库,以存放子图节点队列;步骤S61、从所述节点列表中获取当前的第一个节点;步骤S62、判断所述子图队列仓库中的最后一个所述子图节点队列的颜色,是否与所述节点列表中当前的第一个节点的颜色相同;若是,则转向步骤S63;若否,则转向步骤S64;步骤S63、将所述节点列表中当前的第一个节点添加至所述子图队列仓库中;步骤S64、于所述子图队列仓库中新建一新的子图节点队列,并将所述节点列表中当前的第一个节点作为新的所述子图节点队列的第一个节点;步骤S65、重复步骤S61-S62,直至所述节点列表为空;步骤S66、从所述子图队列仓库中获取各个所述子图节点队列,并根据每个所述节点的所述输入依赖关系与所述输出依赖关系连接各个所述子图节点队列的节点,以得到各个所述神经网络计算子图。优选的,于所述步骤S61之前还包括:判断所述节点列表是否为空;若否,则转向所述步骤S61;若是,则转向所述步骤S66。优选的,于所述步骤S64中,新的所述子图节点队列的颜色与所述节点列表中当前的第一个节点的颜色相同。优选的,于所述自动切分神经网络子图方法中,将所述神经网络计算图分成多个所述神经网络计算子图,并部署在不同的计算单元上计算。优选的,不同的所述计算单元包括中央处理器、图形处理器以及数字信号处理器。本专利技术提供一种应用于AI异构编译器的自动切分神经网络子图方法,有益效果在于:(1)根据神经网络计算图的节点的输入依赖关系与输出依赖关系,自动对神经网络计算图的节点进行排列,从而得到各个所述神经网络计算子图,解决了在神经网络计算图中因复杂的依赖关系结构而不好切分子图的问题,也保证了节点的运行先后依赖顺序,适用于任一复杂结构的神经网络计算图;(2)将神经网络计算图分成多个神经网络计算子图,并部署在不同的计算单元上计算,解决了AI异构编译器对不同的计算单元的神经网络计算图的子图划分的问题,不仅适用于两种计算单元的情况,也适用于多种计算单元的情况,通用性能好,从而充分发挥整个硬件芯片的最佳算力,完成AI算法在实际硬件中的高效异构计算。附图说明参考所附附图,以更加充分的描述本专利技术的实施例。然而,所附附图仅用于说明和阐述,并不构成对本专利技术范围的限制。图1为现有技术中,神经网络计算图的示意图;图2为本专利技术的实施例的应用于AI异构编译器的自动切分神经网络子图方法的步骤流程图;图3为本专利技术的实施例的应用于AI异构编译器的自动切分神经网络子图方法的实施例一的步骤流程图;图4为本专利技术的实施例的应用于AI异构编译器的自动切分神经网络子图方法的实施例二的步骤流程图;图5为本专利技术的实施例的应用于AI异构编译器的自动切分神经网络子图方法的实施例二的神经网络计算图的各个神经网络计算子图的切分图;图6为本专利技术的实施例的应用于AI异构编译器的自动切分神经网络子图方法的实施例三的步骤流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。需要说明的是,本文档来自技高网...

【技术保护点】
1.一种应用于AI异构编译器的自动切分神经网络子图方法,用于将神经网络计算图中部署到不同计算单元的算子节点切分到不同的神经网络计算子图上,其特征在于,包括以下步骤:/n步骤S1、创建一节点列表;/n步骤S2、预先对所述神经网络计算图的所有节点进行编号,并记录每个所述节点的输入依赖关系与输出依赖关系;/n步骤S3、从所述神经网络计算图中获取任一输入无依赖关系的节点;/n步骤S4、删除输入无依赖关系的所述节点以及以输入无依赖关系的所述节点为起点的所有连接边,且将删除的所述节点的编号存储至所述节点列表中;/n步骤S5、重复所述步骤S2与所述步骤S3,直至所述神经网络计算图为空,同时将删除的所述节点的编号存储至所述节点列表中;/n步骤S6、获取所述节点列表,根据所述节点列表中的节点属性颜色进行自动切分,并获取与所述节点相关的所述输入依赖关系与所述输出依赖关系处理得到各个所述神经网络计算子图。/n

【技术特征摘要】
1.一种应用于AI异构编译器的自动切分神经网络子图方法,用于将神经网络计算图中部署到不同计算单元的算子节点切分到不同的神经网络计算子图上,其特征在于,包括以下步骤:
步骤S1、创建一节点列表;
步骤S2、预先对所述神经网络计算图的所有节点进行编号,并记录每个所述节点的输入依赖关系与输出依赖关系;
步骤S3、从所述神经网络计算图中获取任一输入无依赖关系的节点;
步骤S4、删除输入无依赖关系的所述节点以及以输入无依赖关系的所述节点为起点的所有连接边,且将删除的所述节点的编号存储至所述节点列表中;
步骤S5、重复所述步骤S2与所述步骤S3,直至所述神经网络计算图为空,同时将删除的所述节点的编号存储至所述节点列表中;
步骤S6、获取所述节点列表,根据所述节点列表中的节点属性颜色进行自动切分,并获取与所述节点相关的所述输入依赖关系与所述输出依赖关系处理得到各个所述神经网络计算子图。


2.根据权利要求1所述的自动切分神经网络子图方法,其特征在于,于所述步骤S6之前还包括:判断所述神经网络计算图是否为空;
若否,则转向所述步骤S3;
若是,则转向所述步骤S6。


3.根据权利要求1所述的自动切分神经网络子图方法,其特征在于,于所述步骤S6包括以下步骤:
步骤S60、创建一子图队列仓库,以存放子图节点队列;
步骤S61、从所述节点列表中获取当前的第一个节点;
步骤S62、判断所述子图队列仓库中的最后一个所述子图节点队列...

【专利技术属性】
技术研发人员:黄明飞王海涛吕春莹
申请(专利权)人:开放智能机器上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1