深度学习网络处理方法、装置与编译器制造方法及图纸

技术编号:24252326 阅读:40 留言:0更新日期:2020-05-22 23:58
本申请提供一种深度学习网络处理方法、装置与编译器,涉及深度学习技术领域,其中,该方法包括:将深度学习网络拆分为至少一个网络层分组,其中,每个网络层分组均包含多个连续的运算操作;对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片;对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块。本申请提供的技术方案可以在编译器内实现网络层分组的切分和分片的运算操作组合过程,有效提升深度学习处理器的性能。

Deep learning network processing method, device and compiler

【技术实现步骤摘要】
深度学习网络处理方法、装置与编译器
本申请涉及深度学习
,尤其涉及一种深度学习网络处理方法、装置与编译器。
技术介绍
近年来,深度学习网络在各领域的应用日益广泛,基于深度学习网络的各种深度学习框架和终端也越来越多。其中,目前主流的深度学习框架有TensorFlow、MXNet、Keras和PyTorch等,终端包括中央处理器(CentralProcessingUnit,CPU)、图形处理器(GraphicsProcessingUnit,GPU)和现场可编程门阵列(Field-ProgrammableGateArray,FPGA)等通用的深度学习处理器和其他专用的深度学习处理器等,这些深度学习框架和终端之间都有所不同,显而易见,以点到点方式实现不同深度学习框架对所有种类的终端进行后端支持是不现实的,因此一款支持前端各种深度学习框架和后端各种终端的编译器显得尤为重要。基于上述需求,基于端到端优化编译器堆栈的深度学习编译器应运而生,它可以将不同的深度学习框架部署到多种终端上,同时满足轻量级、高性能、灵活性与开发容易等要求。另外,用户可以通过深度学习编译器优化深度学习网络的编译过程,以提升深度学习处理器的处理速度。但是,基于目前的编译技术,深度学习处理器与片上存储单元仍需要进行频繁的访存,因而处理性能有限。
技术实现思路
有鉴于此,本申请提供一种深度学习网络处理方法、装置与编译器,用于提升后端深度学习处理器的性能。为了实现上述目的,第一方面,本申请实施例提供一种深度学习网络处理方法,包括:将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;对于每个网络层分组,对网络层分组进行切分,得到网络层分组的分片,其中,网络层分组的每个分片在网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;对于网络层分组的每个分片,将与分片相关的各运算操作组合在一起,编译生成目标代码块,分片相关的各运算操作包括该分片对应的所有子特征图所涉及的运算操作。第二方面,本申请实施例提供一种深度学习网络处理装置,包括:拆分模块,用于将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;切分模块,用于对于每个网络层分组,对网络层分组进行切分,得到网络层分组的分片,其中,网络层分组的每个分片在网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;组合模块,用于对于网络层分组的每个分片,将与分片相关的各运算操作组合在一起,编译生成目标代码块,分片相关的各运算操作包括分片对应的所有子特征图所涉及的运算操作。第三方面,本申请实施例提供一种编译器,包括:存储单元和处理单元,存储单元用于存储计算机程序;处理单元用于在调用计算机程序时执行上述第一方面或第一方面的任一实施方式所述的方法。第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的方法。本申请实施例提供的深度学习网络处理方法、装置与编译器,通过在编译器内将深度学习网络拆分为至少一个均包含多个连续的运算操作的网络层分组,然后对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片,最后对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块,可以使后端的深度学习处理器在处理完一个分片在网络层分组中相关的所有op后才将该分片的处理结果存储在片上存储单元,从而可以大幅减少深度学习处理器与片上存储单元之间的访存,有效提升深度学习处理器的性能。附图说明图1为本申请实施例提供的垂直切分片的切分示意图;图2为本申请实施例提供的水平切分片的切分示意图;图3为本申请实施例提供的在垂直和水平两个方向切分片的切分示意图;图4为本申请实施例提供的LG的切分示意图;图5为本申请实施例提供的一种深度学习网络处理方法的流程示意图;图6为本申请实施例提供的深度学习网络拆分示意图;图7为本申请实施例提供的切分网络层分组的方法流程示意图;图8为本申请实施例提供的另一种深度学习网络处理方法的流程示意图;图9为本申请实施例提供的深度学习网络处理装置的结构示意图;图10为本申请实施例提供的编译器的结构示意图。具体实施方式为了便于理解本申请施例中的技术方案,下面首先对本申请实施例中所涉及的部分术语进行解释:op:operation,运算操作。深度学习网络中的一个独立操作,比如:卷积操作、池化操作和激活操作等;深度学习网络的一个网络层(layer)中包含至少一个op。LG:LayerGroup,网络层分组;通过对深度学习网络进行拆分得到,其中,每个LG包括多个连续的op。在具体拆分时,一个LG也可能只包含一个op,本申请实施例中是针对包含多个op的LG进行处理。LG切分技术:对LG的特征图进行切分。其中,对单个op的切分操作过程如下:对op的切分实际上是对op的输入特征图的切分,假设深度学习处理器的乘加(mac)单元是224个(每个mac单元处理一个像素点),内部存储单元为224×128(最大支持存储宽度为224、高度为128个像素点的图片)。下面举例说明三种切分方式:一种垂直切tile的方式如下(op的输入特征图的尺寸为320×128像素):图1为本申请实施例提供的垂直切分片的切分示意图,如图1所示,某op的输入特征图的宽度为320像素,超过深度学习处理器最大支持的图片宽度224,则将输入特征图垂直切分为两个分片,其中一个分片(TileA)的宽度为224+2p像素,另一个分片(TileB)的宽度为96+2p像素,其中,2p为切分分片时输入与输出之间的缩水尺寸,为了保证数据的完整性,每个分片均增加一缩水尺寸。对应的,该op可以被认为切分为两个op,其中一个op的输入特征图为TileA,另一个op的输入特征图为TileB,即同一op切分得到的各op的区别之处只是在于输入特征图不同。一种水平切tile的方式如下(op的输入特征图的尺寸为224×200像素):图2为本申请实施例提供的水平切分片的切分示意图,如图2所示,某op的输入特征图的高度为200像素,超过深度学习处理器最大支持的图片高度128,则将输入特征图水平切分为两个分片,其中一个分片(TileX)的高度为120+2p像素,另一个分片(TileY)的高度为80+2p像素。一种垂直、水平方向均切tile的方式如下(op的输入特征图的尺寸为896×600像素):图3为本申请实施例提供的在垂直和水平两个方向切分片的切分示意图,如图3所示,某op的输入特征图的尺寸为896×600像素,超本文档来自技高网...

【技术保护点】
1.一种深度学习网络处理方法,其特征在于,包括:/n将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;/n对于每个网络层分组,对所述网络层分组进行切分,得到所述网络层分组的分片,其中,所述网络层分组的每个分片在所述网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;/n对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,编译生成目标代码块,所述分片相关的各运算操作包括所述分片对应的所有子特征图所涉及的运算操作。/n

【技术特征摘要】
1.一种深度学习网络处理方法,其特征在于,包括:
将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
对于每个网络层分组,对所述网络层分组进行切分,得到所述网络层分组的分片,其中,所述网络层分组的每个分片在所述网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,编译生成目标代码块,所述分片相关的各运算操作包括所述分片对应的所有子特征图所涉及的运算操作。


2.根据权利要求1所述的方法,其特征在于,所述对所述网络层分组进行切分,包括:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,所述目标分片数量为所述网络层分组在所述目标切分方向下待切分的分片数量;
根据所述目标分片数量和所述目标切分方向对所述网络层分组进行切分。


3.根据权利要求2所述的方法,其特征在于,所述根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,包括:
对于所述网络层分组中的每个运算操作,根据所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述运算操作对应的切分方向和分片数量,所述运算操作对应的分片数量为所述运算操作的输入特征图在所述运算操作对应的切分方向下的最小分片数量;
将确定出的各切分方向确定为所述网络层分组的目标切分方向;
对于每个目标切分方向,将所述目标切分方向下数量最多的分片数量确定为所述网络层分组在所述目标切分方向下的目标分片数量。


4.根据权利要求2所述的方法,其特征在于,所述根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,包括:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述网络层分组的目标切分方向和分片数量范围,所述分片数量范围指示了所述网络层分组的输入特征图在所述目标切分方向下的最小分片数量和最大分片数量;...

【专利技术属性】
技术研发人员:王东
申请(专利权)人:深圳云天励飞技术有限公司
类型:发明
国别省市:广东;44

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

1