计算图的处理方法、装置、设备及存储介质与流程

文档序号:37935571发布日期:2024-05-11 00:14阅读:15来源:国知局
计算图的处理方法、装置、设备及存储介质与流程

本技术涉及计算机,特别涉及一种计算图的处理方法、装置、设备及存储介质。


背景技术:

1、计算图(computational graph)是一种通用的计算过程表示方法,用于描述函数的有向无环图,普遍应用在各类数据处理平台上,一个计算图包括多个节点和有向边。以机器学习领域为例,计算图用于表示神经网络涉及的计算逻辑,其中,计算图中的每个节点表示神经网络的计算任务(如,add节点表示一个加法运算的计算任务),有向边将前一个节点(可称为前节点或父节点)连接至后一个节点(可称为后节点或子节点),表示父节点的输出作为子节点的输入。

2、相关技术中,继续以机器学习为例,对计算图的处理方式通常如下:对神经网络的代码文件进行编译处理,得到该神经网络的计算图,按照计算图中各节点的拓扑排序结果,将这些排好序的节点所指示的计算任务一一加载到硬件上,由硬件上具体执行计算任务的硬件资源来执行各个计算任务。然而,随着神经网络的计算规模和网络复杂度不断提升,对计算图进行处理所耗费的算力资源也越来越庞大,因此,亟需一种能够有效节约算力资源,提升资源利用率的计算图的处理方法。


技术实现思路

1、本技术实施例提供了一种计算图的处理方法、装置、设备及存储介质,能够有效节约算力资源,提升资源利用率。该技术方案如下:

2、第一方面,提供了一种计算图的处理方法,该方法包括:

3、基于目标硬件中多个硬件资源的数量,对目标程序的计算图进行切分,得到该目标程序的多个子计算图,该计算图包括多个计算节点和有向边,该计算节点指示该目标程序的计算任务,该有向边指示计算节点所指示的计算任务之间的数据流向;

4、基于多个该硬件资源之间的通信参考信息和多个该子计算图的计算任务,获取该计算图的算力部署结果,该通信参考信息指示硬件资源之间数据传输所耗费的通信资源,该算力部署结果指示多个该硬件资源所执行的多个该子计算图的计算任务。

5、在上述方法中,对于目标程序的计算图,基于目标硬件中多个硬件资源的数量,将该计算图切分为多个子计算图,从而根据各个硬件资源之间的通信参考信息,将多个子计算图的计算任务分别部署到多个硬件资源上去执行,得到计算图的算力部署结果。在这一过程中,由于对完整的计算图进行了切分,且算力部署过程中涉及的通信参考信息能够指示硬件资源之间进行数据传输所耗费的通信资源,因此最终得到的算力部署结果能够有效节约算力资源,提升资源利用率。

6、在一些实施例中,基于目标硬件中多个硬件资源的数量,对目标程序的计算图进行切分,得到该目标程序的多个子计算图,包括:

7、获取该计算图的节点权重和该计算图的有向边权重,该节点权重指示计算节点所指示的计算任务在该目标程序中的重要程度,该有向边权重指示有向边所指示的数据流向在该目标程序中的重要程度;

8、基于多个该硬件资源的数量、该计算图的节点权重以及该计算图的有向边权重,对该计算图进行切分,得到多个该子计算图,以使切分后的多个该子计算图的数量等于多个该硬件资源的数量,且该子计算图中计算节点和有向边的重要程度符合目标条件。

9、通过上述方法,能够确保各个子计算图中计算任务总量之间达到均衡,且各个子计算图中计算任务和数据流向的重要程度达到均衡,实现计算图的平衡最小切分,便于后续将这些子计算图分别部署至多个硬件资源上,以提升资源利用率。

10、在一些实施例中,该方法还包括:

11、以该计算图中的父计算节点为起点,对该多个计算节点进行第一拓扑排序,得到第一排序结果,该第一排序结果指示各个计算节点所属的第一层级;

12、以该计算图中的子计算节点为起点,对该多个计算节点进行第二拓扑排序,得到第二排序结果,该第二排序结果指示各个计算节点所属的第二层级;

13、基于该第一排序结果和该第二排序结果,确定该计算图的节点权重和该计算图的有向边权重。

14、在一些实施例中,基于该第一排序结果和该第二排序结果,确定该计算图的节点权重和该计算图的有向边权重,包括:

15、基于目标计算节点所属的第一层级与第二层级之间的差值,确定该目标计算节点的节点松弛度,基于该节点松弛度、该目标计算节点所指示的计算任务的数据处理量以及硬件性能参考值,确定该目标计算节点的节点权重,该节点松弛度指示该目标计算节点在该计算图中的重要程度,该目标计算节点为任意一个计算节点;

16、基于目标有向边所连接的起始计算节点所属的第一层级和终止计算节点所属的第二层级之间的差值,确定该目标有向边的有向边松弛度,基于该有向边松弛度和该目标有向边所指示的数据传输量,确定该目标有向边的有向边权重,该有向边松弛度指示该目标有向边在该计算图中的重要程度,该目标有向边为任意一条有向边。

17、通过上述方法,对计算图中的多个计算节点分别进行两次拓扑排序,以得到各个计算节点的节点松弛度和各条有向边的有向边松弛度,从而获取到各个计算节点的节点权重和有向边权重,能够确保在对计算图进行切分时各个子计算图的数据处理量均衡的情况下,减小不同子计算图之间的数据传输量,为计算图的切分提供技术支撑。

18、在一些实施例中,基于多个该硬件资源之间的通信参考信息和多个该子计算图的计算任务,获取该计算图的算力部署结果,包括:

19、基于多个该硬件资源和多个该子计算图,获取该计算图的中间算力部署结果;

20、基于多个该硬件资源之间的通信参考信息、多个该计算图之间的数据传输量以及该中间算力部署结果,获取该中间算力部署结果的通信代价;

21、基于该中间算力部署结果的通信代价,更新该中间算力部署结果,以得到该算力部署结果。

22、应理解,计算图部署的目标是通过合理分配硬件资源,让“距离远”的硬件资源之间的数据传输需求尽量少,而“距离近”的硬件资源之间数据传输需求尽量多(此处“距离”通过通信参考信息来体现)。因此,本技术定义了一种通信代价,通过最小化算力部署结果的通信代价来得到最终的算力部署结果,能够有效节约算力资源,提升资源利用率。

23、在一些实施例中,该方法还包括:

24、基于多个该硬件资源之间的连接关系、带宽信息、时延信息、路线信息以及数据转运信息,获取多个该硬件资源之间的通信参考信息。

25、在一些实施例中,该方法还包括:

26、对该目标程序的代码文件进行编译处理,得到该目标程序的数据文件和任务文件,该数据文件包括该目标程序的数据特征,该任务文件包括该目标程序的任务特征;

27、基于该数据文件和该任务文件,生成该计算图。

28、在一些实施例中,方法还包括:

29、在该计算图还包括多个搬运节点的情况下,基于该任务文件,删除该计算图中的多个该搬运节点,该搬运节点指示该目标程序的数据搬运任务。

30、通过上述方法,对目标程序的代码文件进行编译处理,将其转化为可建模的数据文件和任务文件,从而生成基于计算任务的计算图,为后续对计算图进行切分以实现算力部署的过程提供了技术支撑。

31、在一些实施例中,该方法还包括:

32、调用仿真调度工具,对该算力部署结果进行仿真调度,得到仿真调度结果,该仿真调度结果包括多个该硬件资源执行多个该子计算图的计算任务的仿真调度时间和资源利用率;

33、基于该仿真调度结果,调整该算力部署结果。

34、通过上述方法,调用仿真调度工具,对算力部署结果进行仿真调度,以便快速评估算力部署结果的性能,从而进一步调整算力部署结果,以达到进一步提升资源利用率的效果。

35、第二方面,本技术实施例提供了一种计算图的处理装置,该装置包括至少一个功能模块,用于执行前述第一方面或第一方面的任意一种可能的实现方式所提供的计算图的处理方法。

36、第三方面,本技术实施例提供了一种计算设备,该计算设备包括处理器和存储器;该存储器用于存储至少一段程序代码,该至少一段程序代码由处理器加载并执行如前述第一方面或第一方面的任意一种可能的实现方式所提供的计算图的处理方法。

37、第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储至少一段程序代码,该至少一段程序代码用于实现前述第一方面或第一方面的任意一种可能的实现方式所提供的计算图的处理方法。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,hdd)、固态硬盘(solid state drive,ssd)。

38、第五方面,本技术实施例提供了一种计算机程序产品,当该计算机程序产品在计算设备上运行时,使得该计算设备实现前述第一方面或第一方面的任意一种可能的实现方式所提供的计算图的处理方法。该计算机程序产品可以为一个软件安装包,在需要实现前述计算图的处理方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1