计算图执行方法、计算机设备及存储介质技术

技术编号:24171302 阅读:85 留言:0更新日期:2020-05-16 03:02
本申请实施例公开了一种计算图执行方法、计算机设备及存储介质,其中,所述计算图执行方法包括:通用处理器对具有融合算子的计算图进行编译时,根据所述融合算子的操作指令获得所述计算图对应人工智能处理器执行的二进制指令。

Execution method of calculation diagram, computer equipment and storage medium

【技术实现步骤摘要】
计算图执行方法、计算机设备及存储介质
本申请涉及信息处理
,尤其涉及一种计算图执行方法、计算机设备及存储介质。
技术介绍
深度学习框架是整个深度学习生态体系中直面应用的第一层。早期在Caffe中,Layer被当做是构建卷积神经网络的基本元素,而在之后的深度学习框架,例如TensorFlow、MXNet中,虽然采用了不同的称呼,比如Operator,但与Caffe的Layer在核心思想上依旧是相似的,都是将神经网络计算进一步拆分为各类常见的面向张量数据的算子,使用者通过组合算子与数据来构建神经网络模型。以上是深度学习框架面向更上层的应用的接口设计思想,同时也是深度学习框架向下对接的思想。在神经网络处理器或者专用加速器兴起前,深度学习领域中主流的计算设备是CPU和GPU,深度学习框架需要将上层应用通过图结构所表达的深度学习任务具体化成可以在CPU或者GPU执行的指令和数据。在这个过程中,深度学习框架采用算子作为落实计算任务的具体元素。具体来说,深度学习框架对作为“积木”来搭建网络的每个算子都提供了其在CPU或者GPU上执行的核函数(Kernel),根据上层应用给出的抽象计算图,深度学习框架调度执行图结构中每个算子对应的核函数,完成整个神经网络的计算。算子在向设备上的具体实现的映射过程中,最简单的方法是通过编程语言来实现。这种方式的好处是灵活度高,对于CPU和提出了CUDA编程架构后的GPU来说,算法的开发者可以使用编程语言来完成特定算子的实现。但另一方面,算子的实现可能并不能够完全挖掘硬件设备的性能,无法达到效率的最大化。在此基础上,更进一步的方式是使用高性能计算库来完成计算图中的抽向算子向具体核函数的映射,典型的例子是Nvidia开发的GPU上的算子计算库cuDNN。cuDNN直接在算子的粒度上向使用者提供在GPU上执行的核函数,深度学习框架在具象化计算图的过程中,只需要把图中的每个抽象算子映射为计算库中与之对应的内核函数实现,而不需要自己用CUDA进行开发。在这种情况下,深度学习框架直接对接底层设备制造商所提供的计算库,相比普通开发者使用CUDA实现的核函数,cuDNN往往可以在性能上得到更好的表现。实际上,对计算库提供了实现的算子,深度学习框架也倾向于直接调用计算库,一方面,这减轻了深度学习框架本身的负担,另一方面也确实得到了更好的性能,由底层设备制造商开发的高性能计算库理论上最大程度地发掘单个算子在特定设备上的性能极限,但单个算子的优化是存在上限的。对算子实现的优化,不外乎通过调整实现中计算与访存的关系,最大限度地减少不必要的访存行为同时避免运算单元的空闲。如果运算单元在整个任务的执行阶段始终处于满负荷运转的状态,代表着硬件在深度学习计算中的效率达到了100%,这是软硬件优化所追求的理想目标。但即便算子内的计算优化到极致,也不能让运算单元一直满载计算,原因是优化最终会受限于算子间的隔阂。算子在CPU和GPU上的核函数实现,无论是自己实现或者调用计算库,都是一种“片外存储→片上计算→片外存储”的模式,即算子的输入数据和输出数据存于全局存储中,核函数需要由全局存储中读取输入数据,完成计算,将结果存回全局存储中。这带来了两个问题,首先,每个算子关于输入数据和输出数据的访存无法通过算子内的优化来避免;其次,每个算子都需要启动开销,对通用处理器之外的异构计算设备来说更是如此。
技术实现思路
本申请实施例提供了一种计算图执行方法、计算机设备及存储介质,可以解决人工智能处理器执行学习任务时的IO瓶颈。为解决上述问题,本申请提出一种计算图执行方法,包括:通用处理器对具有融合算子的原始计算图进行编译时,根据所述融合算子的操作指令获得所述原始计算图对应人工智能处理器执行的二进制指令;其中,所述融合算子的操作指令获得步骤包括:通用处理器根据所述原始计算图中算子的执行设备对所述算子进行第一次划分,获得原始子图;其中,所述执行设备包括通用处理器和人工智能处理器;所述通用处理器根据所述人工智能处理器的学习库中算子的规则对所述原始子图中的算子进行检查,根据检查结果对所述原始子图作第二次划分,获得目标子图;所述通用处理器对所述目标子图进行编译,获得所述融合算子对应的操作指令。可选地,获得原始子图的步骤包括:获取所述原始计算图,从所述原始计算图中确定第一类算子;其中,所述第一类算子对应的操作指令能够运行在人工智能处理器上;根据所述原始计算图中算子之间具有的有向边,获取所述第一类算子构成的计算图,在所述第一类算子构成的计算图中提取原始子图;其中,所述原始子图包含多个输入算子和/或多个输出算子;所有原始子图构成原始子图集合。可选地,获得目标子图的步骤包括:所述通用处理器根据所述人工智能处理器的学习库中算子的规则对所述原始子图中的算子进行检查,获得检查结果;利用检查结果,对所述原始子图中没有通过检查的算子删除,将所述原始子图中剩余算子构成的计算图进行剪枝,得到对应的目标子图;其中,所述目标子图包含一个输入算子和一个输出算子。可选地,将所述原始子图中剩余算子构成的计算图进行剪枝的步骤包括:所述原始子图中剩余算子构成的计算图中包含一个输入算子和多个输出算子、多个输入算子和一个输出算子、多个输入算子和多个输出算子中的至少一种的情况下,对所述原始子图中剩余算子构成的计算图进行迭代剪枝,得到目标子图。可选地,在满足所述原始子图中剩余算子构成的计算图包含一个输入算子和多个输出算子的情况下,对所述原始子图中剩余算子构成的计算图进行剪枝,包括:根据所述原始子图中剩余算子构成的计算图中算子之间具有的有向边,在同一所述原始子图中剩余算子构成的计算图中,以所述原始子图中剩余算子构成的计算图的输出算子为起始点,反向遍历对应所述原始子图中剩余算子构成的计算图,遍历到其他的输出算子作为遍历终止条件;在满足反向遍历到的算子构成的计算图为目标子图的情况下,停止迭代剪枝。可选地,在满足所述原始子图中剩余算子构成的计算图包含多个输入算子和一个输出算子的情况下,对所述原始子图中剩余算子构成的计算图进行剪枝,包括:根据所述原始子图中剩余算子构成的计算图中算子之间具有的有向边,在同一原始子图中剩余算子构成的计算图中,以所述原始子图中剩余算子构成的计算图的输入算子为起始点,正向遍历对应所述原始子图中剩余算子构成的计算图,遍历到其他的输入算子作为遍历终止条件;在满足正向遍历到的算子构成的计算图为目标子图的情况下,停止迭代剪枝。可选地,在满足所述原始子图中剩余算子构成的计算图包含多个输入算子和多个输出算子的情况下,对所述原始子图中剩余算子构成的计算图进行剪枝,包括:根据所述原始子图中剩余算子构成的计算图中算子之间具有的有向边,在同一所述原始子图中剩余算子构成的计算图中,以所述原始子图中剩余算子构成的计算图的输入算子为起始点,正向遍历所述原始子图集合中每个原始子图,遍历到其他的输入算子作为遍历终止条件;在满足正向遍历到的算子构成的计算本文档来自技高网
...

【技术保护点】
1.一种计算图执行方法,其特征在于,包括:/n通用处理器对具有融合算子的计算图进行编译时,根据所述融合算子的操作指令获得所述计算图对应人工智能处理器执行的二进制指令;其中,所述融合算子的操作指令获得步骤包括:/n通用处理器根据原始计算图中算子的执行设备对所述算子进行第一次划分,获得原始子图;其中,所述执行设备包括通用处理器和人工智能处理器;/n所述通用处理器根据所述人工智能处理器的学习库中算子的规则对所述原始子图中的算子进行检查,根据检查结果对所述原始子图作第二次划分,获得目标子图;/n所述通用处理器对所述目标子图进行编译,获得所述融合算子对应的操作指令。/n

【技术特征摘要】
1.一种计算图执行方法,其特征在于,包括:
通用处理器对具有融合算子的计算图进行编译时,根据所述融合算子的操作指令获得所述计算图对应人工智能处理器执行的二进制指令;其中,所述融合算子的操作指令获得步骤包括:
通用处理器根据原始计算图中算子的执行设备对所述算子进行第一次划分,获得原始子图;其中,所述执行设备包括通用处理器和人工智能处理器;
所述通用处理器根据所述人工智能处理器的学习库中算子的规则对所述原始子图中的算子进行检查,根据检查结果对所述原始子图作第二次划分,获得目标子图;
所述通用处理器对所述目标子图进行编译,获得所述融合算子对应的操作指令。


2.如权利要求1所述的方法,其特征在于,获得原始子图的步骤包括:
获取所述原始计算图,从所述原始计算图中确定第一类算子;其中,所述第一类算子对应的操作指令能够运行在人工智能处理器上;
根据所述原始计算图中算子之间具有的有向边,获取所述第一类算子构成的计算图,在所述第一类算子构成的计算图中提取原始子图;其中,所述原始子图包含多个输入算子和/或多个输出算子;所有原始子图构成原始子图集合。


3.如权利要求1或2所述的方法,其特征在于,获得目标子图的步骤包括:
所述通用处理器根据所述人工智能处理器的学习库中算子的规则对所述原始子图中的算子进行检查,获得检查结果;
利用检查结果,对所述原始子图中没有通过检查的算子删除,将所述原始子图中剩余算子构成的计算图进行剪枝,得到对应的目标子图;其中,所述目标子图包含一个输入算子和一个输出算子。


4.如权利要求3所述的方法,其特征在于,将所述原始子图中剩余算子构成的计算图进行剪枝的步骤包括:
所述原始子图中剩余算子构成的计算图中包含一个输入算子和多个输出算子、多个输入算子和一个输出算子、多个输入算子和多个输出算子中的至少一种的情况下,对所述原始子图中剩余算子构成的计算图进行迭代剪枝,得到目标子图。


5.根据权利要求4所述的方法,其特征在于,在满足所述原始子图中剩余算子构成的计算图包含一个输入算子和多个输出算子的情况下,对所述原始子图中剩余算子构成的计算图进行剪枝,包括:
根据所述原始子图中剩余算子构成的计算图中算子之间具有的有向边,在同一所述原始子图中剩余算子构成的计算图中,以所述原始子图中剩余算子构成的计算图的输出算子为起始点,反向遍历对应所述原始子图中剩余算子构成的计算图,遍历到其他的输出算子作为遍历终止条件;在满足反向遍历到的算子构成的计算图为目标子图的情况下,停止迭代剪枝。


6.根据权利要求4所述的方法,其特征在于,在满足所述原始子图中剩余算子构成的计算图包含多个输入算子和一个输出算子的情况下,对所述原始子图中剩余算子构成的计算图进行剪枝,包括:
根据所述原始子图中剩余算子构成的计算图中算子之间具有的有向边,在同一原始子图中剩余算子构成的计算图中,以所述原始子图中剩余算子构成的计算...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海;31

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

1