CN111882073B - 一种分布式计算图修改的方法和设备 - Google Patents
一种分布式计算图修改的方法和设备 Download PDFInfo
- Publication number
- CN111882073B CN111882073B CN202010690038.1A CN202010690038A CN111882073B CN 111882073 B CN111882073 B CN 111882073B CN 202010690038 A CN202010690038 A CN 202010690038A CN 111882073 B CN111882073 B CN 111882073B
- Authority
- CN
- China
- Prior art keywords
- gpu
- graph
- ind
- modification
- tower
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012986 modification Methods 0.000 claims abstract description 89
- 230000004048 modification Effects 0.000 claims abstract description 89
- 230000004044 response Effects 0.000 claims abstract description 51
- 238000004088 simulation Methods 0.000 claims abstract description 19
- 238000004364 calculation method Methods 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 abstract description 14
- 230000008569 process Effects 0.000 abstract description 13
- 238000013135 deep learning Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 abstract description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种分布式计算图修改的方法和设备,该方法包括以下步骤:响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改。通过使用本发明的方案,能够极大减少深度学习大模型分布式训练中计算图修改的耗时,加速了模型开发训练过程。
Description
技术领域
本领域涉及计算机领域,并且更具体地涉及一种分布式计算图修改的方法和设备。
背景技术
深度学习计算过程在Tensorflow、Pytorch等深度学习框架中可用计算图表示,为了使深度学习大模型能够在GPU(图形处理器)上训练,我们需要对原来的计算图进行修改。但是随着使用GPU数量的增大,修改计算图的成本也线性增加,如果GPU数量非常大,这带来的耗时将会非常大。比如通常的做法就是对每一个GPU上的计算图进行制定修改策略和实施修改,且每次训练之前都要重复这样的过程,这给模型训练带来了很多不必要的耗时。
当前的一种技术方案是对每一个GPU上的计算图逐一进行制定修改策略,其过程包括计算图拓扑层信息提取和数据搬运策略模拟,在运行时间上,一般需要几分钟,因此在多GPU时,运行时间可达几十分钟,数小时,甚至更长时间。但是由于每个GPU上的计算图很相似,在对每个GPU上的计算图逐一制定修改策略时,存在很大的重复性;并且随着使用GPU数量的增加,其制定计算图策略的时间将会线性增长,如果GPU数量达到数千个甚至更多,将会带来难以接受的耗时。
发明内容
有鉴于此,本发明实施例的目的在于提出一种分布式计算图修改的方法和设备,通过使用本发明的方法,能够极大减少深度学习大模型分布式训练中计算图修改的耗时,加速了模型开发训练过程。
基于上述目的,本发明的实施例的一个方面提供了一种分布式计算图修改的方法,包括以下步骤:
响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;
获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改。
根据本发明的一个实施例,建立非分布式计算图并模拟得到非分布式计算图的修改策略包括:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
根据本发明的一个实施例,修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
根据本发明的一个实施例,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改包括:
判断tower_0是否在分层_版本号文件中的含有被增加控制边的运算中;
响应于tower_0不在运算中且运算与变量相关,判断tower_0是否在控制边的名字中;
响应于tower_0不在控制边的名字中,收集控制边,将控制边放在控制边集合中;
响应于tower_0在控制边的名字中,将控制边名字中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,将计算图中以tower_${gpu_ind}命名的运算收集在控制边集合中以建立从控制边集合到运算的控制边。
根据本发明的一个实施例,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改还包括:
响应于tower_0在运算中,将运算中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并判断计算图中是否有以tower_${gpu_ind}命名的运算运算_gpu;
响应于计算图中有以tower_${gpu_ind}命名的运算op_gpu,将每一个控制边名字中的tower_0换为tower_${gpu_ind},将计算图中以tower_${gpu_ind}命名的运算放在控制边集合_gpu中以建立从控制边集合_gpu到运算_gpu的控制边。
根据本发明的一个实施例,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改包括:
判断搬运策略_版本号文件中的当前搬运操作是否为空;
响应于当前搬运操作不为空,对当前拓扑层进行数据搬运的计算图修改;
响应于需要控制当前层搬出与下一层执行的顺序,将下一拓扑层的运算名称中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并将以tower_${gpu_ind}命名的运算保存在next_op_all_gpus[gpu_ind]变量中;
建立从level_swapouts[gpu_ind][level_topo]到next_op_all_gpus[gpu_ind]的控制边。
根据本发明的一个实施例,对当前拓扑层进行数据搬运的计算图修改包括:
判断当前搬运操作中的每一个需要被搬运的张量运算及名称中是否有tower_0;
响应于每一个需要被搬运的张量运算及名称中没有tower_0且张量运算与变量相关且存在与张量运算相关的控制边,找出需要将该次搬进作为输入的所有运算,并建立搬进运算并将张量运算中每一个运算的相应输入都用搬进运算替换;
响应于每一个需要被搬运的张量运算及名称中有tower_0,将名称中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号;
响应于计算图中存在以tower_${gpu_ind}命名的运算及张量,建立搬出操作;
响应于张量需要执行计算与通信同步,则将swapout_op保存到level_swapouts[gpu_ind][level_topo]变量中,并将与搬进运算相关的控制边运算和搬进运算作为输入的运算的名字中tower_0换为tower_${gpu_ind},并将存在控制边的运算放入控制边集合中,将搬进运算作为输入的运算放入运算集合中;
响应于控制边集合和运算集合都不为空,建立搬进运算swapin_op,并将运算集合中每个运算的相应输入用swapin_op替代。
本发明的实施例的另一个方面,还提供了一种分布式计算图修改的设备,设备包括:
模拟模块,模拟模块配置为响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;
判断模块,判断模块配置为获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
修改模块,修改模块配置为响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改。
根据本发明的一个实施例,模拟模块还配置为:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
根据本发明的一个实施例,修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
本发明具有以下有益技术效果:本发明实施例提供的分布式计算图修改的方法,通过响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改的技术方案,能够极大减少深度学习大模型分布式训练中计算图修改的耗时,加速了模型开发训练过程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的分布式计算图修改的方法的示意性流程图;
图2为根据本发明一个实施例的分布式计算图修改的设备的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种分布式计算图修改的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;
S2获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
S3响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改。
本发明的技术方案是通过非分布式的计算图修改策略,扩展到任意多的GPU分布式计算图修改策略。在建立非分布式的计算图时,我们需要对计算图中的变量运算的命名进行规定,使其不含‘tower_0’,而计算图的其它主体部分的运算名称中含有‘tower_0’,在建立多GPU分布式计算图时,变量的名称里不含‘tower_0’,且这些变量的存贮位置会均匀地分布在各个GPU上,但是它们的名称和非分布式计算图中的变量名称相同,其它非变量的运算名称相应地加上各个GPU的逻辑编号,比如1号GPU中一些非变量的运算名称中需含有‘tower_1’,2号GPU中的一些非变量的运算名称中需含有‘tower_2’,其它GPU中非变量运算的名称命名方法依此类推。在制定非分布式计算图修改方案时,我们需要对变量的内存值进行修正,以防止变量的内存值超出GPU显存大小。该修正值可取变量的实际内存值除以将要使用的GPU个数的最小值。通过对非分布式计算图的模拟,我们可以得出一个计算图修改策略,并将其保存到文件里。通过得到的非分布式计算图修改策略,我们就可以很容易地修改任意多的GPU分布式计算图。通过保存的计算图修改策略,以后的分布式训练可直接读取该策略对计算图进行修改。
通过本发明的技术方案,能够极大减少深度学习大模型分布式训练中计算图修改的耗时,加速了模型开发训练过程。
在本发明的一个优选实施例中,建立非分布式计算图并模拟得到非分布式计算图的修改策略包括:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
在本发明的一个优选实施例中,修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
在本发明的一个优选实施例中,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改包括:
判断tower_0是否在分层_版本号文件中的含有被增加控制边的运算中;
响应于tower_0不在运算中且运算与变量相关,判断tower_0是否在控制边的名字中;
响应于tower_0不在控制边的名字中,收集控制边,将控制边放在控制边集合中;
响应于tower_0在控制边的名字中,将控制边名字中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,将计算图中以tower_${gpu_ind}命名的运算收集在控制边集合中以建立从控制边集合到运算的控制边。
在本发明的一个优选实施例中,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改还包括:
响应于tower_0在运算中,将运算中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并判断计算图中是否有以tower_${gpu_ind}命名的运算运算_gpu;
响应于计算图中有以tower_${gpu_ind}命名的运算op_gpu,将每一个控制边名字中的tower_0换为tower_${gpu_ind},将计算图中以tower_${gpu_ind}命名的运算放在控制边集合_gpu中以建立从控制边集合_gpu到运算_gpu的控制边。
在本发明的一个优选实施例中,响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改包括:
判断搬运策略_版本号文件中的当前搬运操作是否为空;
响应于当前搬运操作不为空,对当前拓扑层进行数据搬运的计算图修改;
响应于需要控制当前层搬出与下一层执行的顺序,将下一拓扑层的运算名称中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并将以tower_${gpu_ind}命名的运算保存在next_op_all_gpus[gpu_ind]变量中;
建立从level_swapouts[gpu_ind][level_topo]到next_op_all_gpus[gpu_ind]的控制边。
在本发明的一个优选实施例中,对当前拓扑层进行数据搬运的计算图修改包括:
判断当前搬运操作中的每一个需要被搬运的张量运算及名称中是否有tower_0;
响应于每一个需要被搬运的张量运算及名称中没有tower_0且张量运算与变量相关且存在与张量运算相关的控制边,找出需要将该次搬进作为输入的所有运算,并建立搬进运算并将张量运算中每一个运算的相应输入都用搬进运算替换;
响应于每一个需要被搬运的张量运算及名称中有tower_0,将名称中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号;
响应于计算图中存在以tower_${gpu_ind}命名的运算及张量,建立搬出操作;
响应于张量需要执行计算与通信同步,则将swapout_op保存到level_swapouts[gpu_ind][level_topo]变量中,并将与搬进运算相关的控制边运算和搬进运算作为输入的运算的名字中tower_0换为tower_${gpu_ind},并将存在控制边的运算放入控制边集合中,将搬进运算作为输入的运算放入运算集合中;
响应于控制边集合和运算集合都不为空,建立搬进运算swapin_op,并将运算集合中每个运算的相应输入用swapin_op替代。
实施例
下面是根据本发明的方法进行分布式计算图修改的一个示例性实施例,在每一次需要做模型训练时,都需要判断是否需要做计算图修改模拟,如果需要进行模拟,则执行以下过程:
1.首先建立非分布式计算图并模拟得到非分布式计算图的修改策略,具体内容如下:建立非分布式计算图,然后建立计算图拓扑层,并找出每一层可增加控制边的运算,将其保存在文件‘save_build_${tf.__version__}’(计算图_版本号文件)里,如果该计算图需要分层,则将需要建立控制边的信息写在文件‘save_split_levels_${tf.__version__}’(分层_版本号文件)里,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,将其重写在文件‘save_build_${tf.__version__}’里。如果不需要分层,或者已经完成对分层后的计算图拓扑层信息保存步骤,我们需要将数据搬运策略写在文件‘save_swap_out_ins_${tf.__version__}’(搬运策略_版本号文件)里;
2.判断用来保存计算图分层策略的文件‘save_split_levels_${tf.__version__}’是否存在,如果存在,则执行下一步骤对对分布式计算图进行分层;
3.对文件‘save_split_levels_${tf.__version__}’中的每一行进行如下处理,其中每一行中含有被增加控制边的运算op及控制边运算。如果‘tower_0’不存在op的名字里且op与变量相关,并且如果‘tower_0’不存在cinp的名字中,则收集该cinp,将其放在cinps(控制边集合)中,否则将cinp名字中的‘tower_0’换为‘tower_${gpu_ind}’,其中gpu_ind为GPU的编号,如果计算图中存在以此命名的运算,则收集该运算,将其放在cinps中。对所有的控制边执行上述步骤后,建立从cinps到op的控制边。如果‘tower_0’存在于op的名字里,则将op名字中‘tower_0’换为‘tower_${gpu_ind}’,如果计算图中存在以该名字命名的运算op_gpu,将每一个控制边名字中的‘tower_0’换为‘tower_${gpu_ind}’,如果计算图中存在以改名字命名的运算,将这些运算放在cinps_gpu中,建立从cinps_gpu到op_gpu的控制边。
4.对分布式计算图进行数据搬运方面的修改,从‘save_swap_out_ins_${tf.__version__}’文件的第二行起以及‘save_build_${tf.__version__}’文件的第一行起(其中它们的每一行分别为current_swapoutins(当前搬运操作)、next_level_line(下一拓扑层),level_topo(行序号为))执行以下步骤。如果current_swapoutins不为空,则执行步骤4.1以对当前拓扑层进行数据搬运的计算图修改。然后,如果需要控制当前层搬出与下一层执行的顺序,则对于每一个GPU序号gpu_ind,将next_level_line中的运算名称中‘tower_0’换为‘tower_${gpu_ind}’,若以该新名称命名的运算存在于计算图中,将这些运算保存在next_op_all_gpus[gpu_ind]中。最后,对各个GPU序号gpu_ind,建立从level_swapouts[gpu_ind][level_topo]到next_op_all_gpus[gpu_ind]的控制边,其中level_swapouts[gpu_ind][level_topo]来自步骤4.1。
4.1.对current_swapoutins中的每一个需要被搬运的张量运算op及名称op_name执行以下步骤:如果‘tower_0’不在op_name中且op与变量相关,对该张量的每一次搬进运算(其位置为swapin_pos)判断能否找到与该op相关的所有控制边,如果可以找到,则找出需要将该次搬进作为输入的所有运算consums。如果consums不为空,建立搬进运算,将consums中每一个运算的相应输入都用该搬进操作替换。如果该张量需要被执行计算与通信同步,找出该op的设备序号dev_ind,将该搬进运算放入level_swapins[dev_ind][swapin_pos]中。如果‘tower_0’在op_name中,将op_name中‘tower_0’换为‘tower_${gpu_ind}’,如果计算图中存在以该名字命名的运算及张量,建立搬出操作swapout_op。如果改张量需要执行计算与通信同步,则将swapout_op保存于level_swapouts[gpu_ind][level_topo]中。对该张量的每一次搬进运算执行以下步骤,将与该搬进运算相关的控制边运算的名字里‘tower_0’换为‘tower_${gpu_ind}’,将存在该控制边的运算放入cinps中,对将该搬进运算作为输入的运算做同样的处理,将所得运算存入consums中。如果cinps和consums都不为空,建立搬进运算swapin_op,及将consums中每个运算的相应输入用swapin_op替代。如果该张量需要被执行计算与通信同步,将swapout_op放入level_swapins[gpu_ind][level_topo]中。
5.如果需要控制搬出与搬入的顺序,则对每一个GPU序号gpu_ind,建立从level_swapouts[gpu_ind]到level_swapins[gpu_ind]的控制边。到此,我们完成了对分布式计算图的全部修改。
通过本发明的技术方案,能够极大减少深度学习大模型分布式训练中计算图修改的耗时,加速了模型开发训练过程。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种分布式计算图修改的设备,如图2所示,设备200包括:
模拟模块,模拟模块配置为响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到非分布式计算图的修改策略;
判断模块,判断模块配置为获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
修改模块,修改模块配置为响应于分层_版本号文件存在,基于修改策略将多GPU分布式计算图进行修改。
在本发明的一个优选实施例中,模拟模块还配置为:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
在本发明的一个优选实施例中,修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。
此外,上述方法步骤以及系统单元或模块也可以利用控制器以及用于存储使得控制器实现上述步骤或单元或模块功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
Claims (10)
1.一种分布式计算图修改的方法,其特征在于,包括以下步骤:
响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到所述非分布式计算图的修改策略;
获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
响应于分层_版本号文件存在,基于所述修改策略将所述多GPU分布式计算图进行修改。
2.根据权利要求1所述的方法,其特征在于,建立非分布式计算图并模拟得到所述非分布式计算图的修改策略包括:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断所述计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将所述运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
3.根据权利要求1所述的方法,其特征在于,所述修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
4.根据权利要求1所述的方法,其特征在于,响应于分层_版本号文件存在,基于所述修改策略将所述多GPU分布式计算图进行修改包括:
判断tower_0是否在分层_版本号文件中的含有被增加控制边的运算中;
响应于所述tower_0不在所述运算中且所述运算与变量相关,判断所述tower_0是否在控制边的名字中;
响应于tower_0不在控制边的名字中,收集控制边,将控制边放在控制边集合中;
响应于tower_0在控制边的名字中,将控制边名字中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,将计算图中以tower_${gpu_ind}命名的运算收集在控制边集合中以建立从控制边集合到运算的控制边。
5.根据权利要求4所述的方法,其特征在于,响应于分层_版本号文件存在,基于所述修改策略将所述多GPU分布式计算图进行修改还包括:
响应于tower_0在所述运算中,将所述运算中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并判断计算图中是否有以tower_${gpu_ind}命名的运算op_gpu;
响应于计算图中有以tower_${gpu_ind}命名的运算op_gpu,将每一个控制边名字中的tower_0换为tower_${gpu_ind},将计算图中以tower_${gpu_ind}命名的运算放在控制边集合_gpu中以建立从控制边集合_gpu到运算op_gpu的控制边。
6.根据权利要求1所述的方法,其特征在于,响应于分层_版本号文件存在,基于所述修改策略将所述多GPU分布式计算图进行修改包括:
判断搬运策略_版本号文件中的当前搬运操作是否为空;
响应于当前搬运操作不为空,对当前拓扑层进行数据搬运的计算图修改;
响应于需要控制当前层搬出与下一层执行的顺序,将下一拓扑层的运算名称中tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号,并将以tower_${gpu_ind}命名的运算保存在next_op_all_gpus[gpu_ind]变量中;
建立从level_swapouts[gpu_ind][level_topo]到next_op_all_gpus[gpu_ind]的控制边。
7.根据权利要求6所述的方法,其特征在于,对当前拓扑层进行数据搬运的计算图修改包括:
判断所述当前搬运操作中的每一个需要被搬运的张量运算及名称中是否有tower_0;
响应于每一个需要被搬运的张量运算及名称中没有tower_0且张量运算与变量相关且存在与张量运算相关的控制边,找出需要将搬进作为输入的所有运算,并建立搬进运算并将张量运算中每一个运算的相应输入都用搬进运算替换;
响应于每一个需要被搬运的张量运算及名称中有tower_0,将名称中的tower_0换为tower_${gpu_ind},其中gpu_ind为GPU序号;
响应于计算图中存在以tower_${gpu_ind}命名的运算及张量,建立搬出操作;
响应于张量需要执行计算与通信同步,则将swapout_op保存到level_swapouts[gpu_ind][level_topo]变量中,并将与搬进运算相关的控制边运算和搬进运算作为输入的运算的名字中tower_0换为tower_${gpu_ind},并将存在控制边的运算放入控制边集合中,将搬进运算作为输入的运算放入运算集合中;
响应于控制边集合和运算集合都不为空,建立搬进运算swapin_op,并将运算集合中每个运算的相应输入用swapin_op替代。
8.一种分布式计算图修改的设备,其特征在于,所述设备包括:
模拟模块,所述模拟模块配置为响应于分布式计算图需要做修改模拟,建立非分布式计算图并模拟得到所述非分布式计算图的修改策略;
判断模块,所述判断模块配置为获取待修改的多GPU分布式计算图,并判断分层_版本号文件是否存在;
修改模块,所述修改模块配置为响应于分层_版本号文件存在,基于所述修改策略将所述多GPU分布式计算图进行修改。
9.根据权利要求8所述的设备,其特征在于,所述模拟模块还配置为:
建立计算图拓扑层,并找出每一层可增加控制边的运算,并将其保存在计算图_版本号文件中;
判断所述计算图拓扑层是否需要分层;
响应于需要分层,将需要分层建立控制边的信息写在分层_版本号文件中,且重新建立分层后的计算图拓扑层,并找出每一拓扑层可增加控制边的运算,并将所述运算重写在计算图_版本号文件中;
响应于不需要分层,将数据搬运策略写在搬运策略_版本号文件里。
10.根据权利要求8所述的设备,其特征在于,所述修改策略包括计算图分层修改、计算图数据搬运修改和计算图数据搬运顺序修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690038.1A CN111882073B (zh) | 2020-07-17 | 2020-07-17 | 一种分布式计算图修改的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690038.1A CN111882073B (zh) | 2020-07-17 | 2020-07-17 | 一种分布式计算图修改的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111882073A CN111882073A (zh) | 2020-11-03 |
CN111882073B true CN111882073B (zh) | 2022-05-31 |
Family
ID=73156392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010690038.1A Active CN111882073B (zh) | 2020-07-17 | 2020-07-17 | 一种分布式计算图修改的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111882073B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018817A (zh) * | 2018-01-05 | 2019-07-16 | 中兴通讯股份有限公司 | 数据的分布式运行方法及装置、存储介质及处理器 |
CN109919310B (zh) * | 2019-01-15 | 2021-05-18 | 中国科学院信息工程研究所 | 一种面向深度学习训练任务的gpu内存优化方法及系统 |
CN110569106B (zh) * | 2019-08-27 | 2022-11-15 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
-
2020
- 2020-07-17 CN CN202010690038.1A patent/CN111882073B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111882073A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210350233A1 (en) | System and Method for Automated Precision Configuration for Deep Neural Networks | |
JP2021532437A (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN114792378B (zh) | 一种量子图像识别方法及装置 | |
CN110019401A (zh) | 件量预测方法、装置、设备及其存储介质 | |
CN114091589B (zh) | 模型训练方法、装置、电子设备及介质 | |
CN114186693B (zh) | 一种量子操作系统的调度方法、系统、装置及计算机介质 | |
CN111882073B (zh) | 一种分布式计算图修改的方法和设备 | |
US8935657B2 (en) | Model-to-model transformation by kind | |
CN115270686B (zh) | 一种基于图神经网络的芯片布局方法 | |
CN114723024A (zh) | 用于存算一体芯片的基于线性规划的神经网络映射方法 | |
CN113741931B (zh) | 软件升级方法、装置、电子设备及可读存储介质 | |
US20110184902A1 (en) | business rule integration with engineering applications | |
CN115562662A (zh) | 应用页面的创建方法、装置、计算机设备及存储介质 | |
US9026985B2 (en) | Dynamically configurable model-to-model transformation engine | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
US11720781B2 (en) | Parallel execution of gated activation unit operations | |
CN118734943A (zh) | 模型数据布局优化方法、装置、电子设备及存储介质 | |
Arappal et al. | A soft computing based approach for pixel labelling on 2d images using fine tuned r-cnn | |
CN115730670B (zh) | 模式文件的生成方法、装置、介质及电子装置 | |
CN111767928B (zh) | 基于卷积神经网络提取图像特征信息的方法及装置 | |
CN115775028B (zh) | 量子线路优化方法、装置、介质及电子装置 | |
CN115775030B (zh) | 基于模式匹配的量子程序重写方法、装置及电子装置 | |
Senkov et al. | Modeling the Operation of an Adaptive Computing System Based on FGPN for Case Risk Management | |
CN116740343B (zh) | 一种基于量子经典混合神经网络的图像分割方法及装置 | |
CN118552136B (zh) | 基于大数据的供应链智能库存管理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |