一种基于Tensorflow框架的模型并行方法与流程

文档序号:23263275发布日期:2020-12-11 18:52阅读:284来源:国知局
一种基于Tensorflow框架的模型并行方法与流程

本发明涉及计算机领域,尤其涉及一种基于tensorflow框架的模型并行方法。



背景技术:

自tensorflow开源发布框架以来,有关深度学习的学术和业界研究得到了前所未有的发展,随着相关的模型越来越高级,越来越复杂,分层结构得到的层数越来越多,神经网络模型越来越大,逐渐超过单个设备内存限制,对减少模型训练时间的需求也与日俱增。然而,tensorflow对单个计算节点是具有高度限制性的,尤其是随着数据集大小的增加,其限制表现得更为突出,通过分布式并行的方式来提高深度学习模型的训练效率和解决单个设备对内存的限制瓶颈是一种行之有效的方法。因此,亟需一种提解决神经网络模型过大以致超过超过单个设备内存限制、同时减少模型训练时间的分布式并行算法。



技术实现要素:

为了解决上述问题,本发明实施例提供一种基于tensorflow框架的模型并行方法。

本发明实施例提供一种基于tensorflow框架的模型并行方法,包括:

并行优化算法,实现算法以创新性贪心算法执行模型划分取代原本的随机模型划分模式。

所述模型并行优化算法具有可伸缩性。它使用户能够运行更大的模型,并通过添加更多设备使计算更快完成。

所述模型并行优化算法不是简单地根据经验随机对设备进行划分,其策略是找出计算图谱中的关键路径,然后对执行这条路径的设备执行以最小完工时间为目标的贪心算法,将关键路径上的节点放置于执行速度最快的设备上。

模型划分算法在tensorflow框架平台上的具体实现过程:

输入:带有执行速度描述s的n个设备的集合d,带有计算复杂度描述c的m个计算节点的集合v,计算图谱的边集e。

输出:一个m*n维的矩阵o,表示算法最终的解。矩阵中的元素oi,j表示最终将第j个节点放置在第i块设备上执行,其中,1≤i≤n,1≤j≤m。元素oi,j的取值只能是1或者0,1表示放置,0表示不放置。

1.根据给出的计算节点的集合v和计算图谱的边集e,计算出每个节点基于来源的排序等级。

2.根据给出的计算节点的集合v和计算图谱的边集e,计算出每个节点基于去向的排序等级。

3.将计算出来的每个节点基于来源的排序等级与基于去向的排序等级求和得到最终的排序等级。

4.对每个节点的的最终排序等级进行排序。

5.对n个设备的集合d进行排序。

6.声明一个m*n维的矩阵o,每个元素用来表示节点放置在哪一个设备上执行

7.初始化矩阵o为0元素填充。

8.判断每一个设备是否可以存储和执行已经排序好的计算节点,1表示放置,0表示不放置。

9.当所有节点判断结束后,算法执行完毕。

所述模型并行优化算法是以节点的计算复杂度排序来估计关键路径的。

所述的计算复杂度排序优化算法包含基于来源的排序算法和基于去向的排序算法两个算法。

节点基于来源的排序等级算法在tensorflow框架平台上的具体实现过程:

输入:计算图谱有向图的邻接矩阵m表示。

输出:节点基于来源的排序等级数组source_ranks。

1.通过遍历邻接矩阵m,找到入度为0的点。

2.建立以此作为头节点的链表。

3.判断邻接矩阵中为1的每一个元素。

4.对每个节点的的最终排序等级进行排序,将新的节点加入链表中。

5.不断迭代,直到计算图谱中的所有路径都被建立成链表为止

5.声明source_ranks节点基于来源的排序等级列表。

6.从头节点到当前节点遍历链表得出每个节点基于来源的排序等级并加入到新建列表中。

7.返回节点基于来源的排序等级source_ranks。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施中需要进行模型划分的计算图谱;

图2为本发明实施例中基于来源的排序等级和基于去向的排序等级;

图3为本发明实施例中根据节点重要程度排序完成模型划分;

具体实施方式

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

鉴于深度学习网络模型训练过程中,网络传输时延、设备异构性和计算节点本身的计算复杂度以及计算节点与节点之间的相互赖程度,所述一种基于tensorflow框架的模型并行优化算法不是简单地根据经验随机对设备进行划分,其策略是找出计算图谱中的关键路径,然后对执行这条路径的设备执行以最小完工时间为目标的贪心算法,将关键路径上的节点放置于执行速度最快的设备上。所述关键路径,是指从任意起点到终点的最长(或计算复杂度最高的)路径。之所以要找到关键路径,是因为关键路径上的节点本身计算复杂度高,并且节点与节点之间执行的依赖性较强,将它们放在同一设备上,可以在不超出设备内存情况下最大限度地减少网络传输时延,从而达到减小任务完工时间的目的。

为了避免计算关键路径的复杂算法和解决单个设备内存存储不了整个关键路径的问题,但同时还要考虑到长路径上节点的重要程度,优化算法是以节点的计算复杂度排序来估计关键路径的。对于计算图谱这个有向图中的任意一个节点,都有来源和去向这两个属性。针对这两个属性,分别设计了一种排序算法:

a.基于来源的排序算法:对于任意节点vi,其基于来源的排序等级表示的是:从任何起始节点vj开始,到节点vi结束的路径上所有节点计算复杂度之和的最大值。相应的公式定义如下:

b.基于去向的排序算法:对于任意节点vi,其基于去向的排序等级表示的是:从节点vi开始,到任何终止节点vj结束的路径上所有节点计算复杂度之和的最大值。相应的公式定义如下:

有了这两个定义之后,便可以给出计算图谱中任意节点vi的排序等级了:任意计算节点vi的排序等级为该节点基于来源的排序等级与基于去向的排序等级之和。相应的公式表示如下:

rank(vi)=sourcerank(vi)+endrank(vi)#(1-3)

前面也说到,节点vi的排序等级表示的是该节点在计算图谱中的重要程度和节点之间的依赖程度,排序等级越高,该节点就越重要,其他节点对其的依赖程度就越强。现得到了任意节点vi的排序等级之后,便可对集合v中的所有节点按照排序等级进行排序,再根据等级排序的结果,将排序等级最高的节点放置在执行速度最快的计算设备上,然后对排序等级次二高的节点进行放置,持续迭代,直到所有计算节点都被放置完成,以完成贪心算法。至此,优化算法的过程就设计完成了。

为了描述清楚,下面对本发明实施例中算法的执行流程进行说明:

如图1所示的计算图谱,现要求对其进行模型划分。图中的每一个圆圈表示一个tensorflow操作,即tensorflow计算图谱中的计算节点。圆圈里面的数字表示该节点的计算复杂度。

首先,如图2所示,对图中所有节点根据前面的公式定义计算出基于来源的排序等级和基于去向的排序等级。

最后,如图3所示,计算出所有节点的总排序等级,并据此进行节点重要程度排序。排序完成之后,便可以根据排序结果将模型划分到两个设备dev0和dev1(执行速度:dev0>dev1)上进行迭代执行了。

至此,在网络带宽一定的情况下如何将计算图谱中的m个节点放置在分布式系统中的n个设备上以达到最小完工时间的问题通过以关键路径建模的方式得以解决,并且,算法的时间复杂度被控制在了o(n*logn)。

根据上一节的算法设计,现在可将相应的问题解决流程描述为:算法根据带有计算复杂度描述c的m个计算节点的集合v和计算图谱的边集e这两个输入条件,计算出每个节点基于来源的排序等级与基于去向的排序等级,再相加得到节点最终的排序等级,最后以贪心的方式将节点放置于设备上。对于某计算节点vi的计算复杂度ci的描述,计算复杂度是作为算法运行的输入条件。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件平台和硬件平台来实现,基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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