CN115186806A - 一种支持跨节点自动微分的分布式图神经网络训练方法 - Google Patents
一种支持跨节点自动微分的分布式图神经网络训练方法 Download PDFInfo
- Publication number
- CN115186806A CN115186806A CN202210394310.0A CN202210394310A CN115186806A CN 115186806 A CN115186806 A CN 115186806A CN 202210394310 A CN202210394310 A CN 202210394310A CN 115186806 A CN115186806 A CN 115186806A
- Authority
- CN
- China
- Prior art keywords
- node
- calculation
- layer
- neural network
- graph
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 84
- 238000012549 training Methods 0.000 title claims abstract description 79
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000004069 differentiation Effects 0.000 title claims abstract description 20
- 238000004364 calculation method Methods 0.000 claims abstract description 137
- 238000013135 deep learning Methods 0.000 claims abstract description 27
- 238000004891 communication Methods 0.000 claims abstract description 26
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000007246 mechanism Effects 0.000 claims abstract description 8
- 238000011156 evaluation Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 16
- 230000002776 aggregation Effects 0.000 claims description 13
- 238000004220 aggregation Methods 0.000 claims description 13
- 230000009466 transformation Effects 0.000 claims description 6
- 238000009795 derivation Methods 0.000 claims description 4
- 230000001902 propagating effect Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000003062 neural network model Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 235000002020 sage Nutrition 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/13—Differential equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Databases & Information Systems (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种支持跨节点自动微分的分布式图神经网络训练方法,涉及分布式计算和深度学习领域;将图神经网络训练过程解耦成通信与计算两部分,并根据图神经网络正向和反向的计算特性,在正向计算中,每个节点从集群中收集邻居节点的信息,产生的中间变量将被缓存并用于反向计算中;在反向计算中,每个点基于前向传播的结果计算邻居节点的梯度并将结果发送给其邻居即本地或者远程机器;本发明解耦了通信与计算,并根据图神经网络正向和反向的计算特性,设计实现了synchronize‑compute和compute‑synchronize双模式计算引擎来灵活支持正向反向的计算,大大减小了设计难度,使用master‑mirror同步机制来支持高效的节点属性通信。
Description
技术领域
本发明涉及分布式计算和深度学习领域,尤其涉及一种支持跨节点自动微分的分布式图神经网络训练方法。
背景技术
传统的深度学习方法虽然已经在目标识别,自然语言处理,语音识别等领域取得了革命性的成功,并且促进了模式识别和数据挖掘的发展与研究,但是它只能处理欧式空间的数据,而许多实际应用场景中的数据是从非欧式空间生成的。图数据就是一种典型的非欧式结构的结构化数据,它能够很好的体现生活中很多场景对象之间的关联性,它由一系列的对象(nodes)和关系类型(edges)组成,具有局部连接的特点。传统的机器学习方法无法有效的处理这些图数据。因此一个新的研究热点“图神经网络(Graph NeuralNetworks,GNN)”应运而生,当前出现了很多能够将深度学习的方法应用到图数据上的图神经网络算法,如GCN、GAT、GraphSage等。
发表在VLDB 2019的“AliGraph:A Comprehensive Graph Neural NetworkPlatform”的图神经网络系统AliGraph,采用了一种缓存重要节点的邻居的策略来降低通信开销,但是这种策略引起了大量冗余计算和产生巨大存储空间成本的问题。因为一个节点很有可能是多个节点的邻居节点,当其邻居节点分布在不同的机器上时,该节点会被拷贝到多个机器,从而引起重复的计算开销。例如,当有神经网络模型是两层时,需要将以该节点的邻居节点为根节点,将邻居节点的一跳邻居的节点作为叶节点的这样一个子树都拷贝在该节点的机器上,如果该邻居节点有多个邻居则需要可能需要将子树拷贝多份到不同的机器上,产生大量的冗余计算。而存储这样的子树同时也占据了巨大存储的空间。
发表在MLSys上的“Improving the accuracy,scalability,and performance ofgraph neural networks with roc”提出的图神经网络训练系统Roc,采用不缓存节点嵌入值,通过通信获取远程邻居节点的节点嵌入值。但是Roc采用了单一的处理引擎,即单向通信,正向和反向传播阶段都是主节点给镜像节点发消息,这样的设计导致了正向和反向的计算不灵活。因为图神经网络的前向传播计算与反向传播计算具有不同的计算逻辑。在前向计算中,每个节点从集群中收集邻居节点的信息,产生的中间变量将被缓存并用于反向计算中。在反向计算中,每个点基于前向传播的结果计算邻居节点的梯度并将结果发送给其邻居(本地或者远程机器)。这两种计算具有不同的特征,但是如果使用单一图传播模型进行处理,在反向传播计算时,每个主节点要首先将自己的梯度值发送给镜像节点,然后镜像节点收到主节点传来的梯度值后再根据依赖关系计算需要给邻居节点传递的梯度值,这样的处理策略导致反向计算图和正向计算图不能在同一台机器上执行,所以无法使用现有的深度学习库的自动微分库,只能手动实现反向传播的算子。同时为了支持不同的图神经网络算法在Roc上训练,需要根据每一种算法的特性来手动实现正向和反向的计算算子,尤其要求用户需要手动推导其反向计算逻辑,这对用户来说是极其困难的。同时,手动实现的算子也难以保证其高效性和易用性。
AliGraph采用的缓存重要节点的策略,会产生大量的冗余计算,占用大量的存储空间,而ROC单一的处理引擎导致了正向反向的计算不灵活,对不同的算法都需要手动实现对应逻辑的算子。
发明内容
针对现有技术的不足,本发明提出一种支持跨节点自动微分的分布式图神经网络训练方法;
一种支持跨节点自动微分的分布式图神经网络训练方法,具体包括以下步骤:
步骤1:对分布式图神经网络进行正向训练;
步骤1.1:首先对用户提供的图数据使用图划分方法如MEITS进行划分,划分一部分点及其入边给每一个机器;
步骤1.2:每个机器基于划分后的图数据,建立master-mirror机制;
步骤1.2.1:每个机器将划分到的节点表示为master点即主节点,每个机器负责执行master节点的计算;
步骤1.2.2:这些master点即主节点在其他机器中作为源点体现边关系的称为mirror点即镜像点,一个master点可能成为在其他多个机器中的镜像点;
步骤1.3:对图神经网络正向训练的训练过程进行分析、解耦、训练;即使用synchronize-compute引擎执行图计算,现有深度学习库执行神经网络计算;
步骤1.3.1:图神经网络每一层的每一个节点正向计算的公式为:
其中,分别表示第i层和第i+1层节点v的嵌入值;N(v)表示节点v的邻居节点,表示节点v的邻居节点的节点表示;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;
步骤1.3.2:基于步骤1.3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
其中,表示第i+1层经过图传播计算后得到的节点v的聚合的邻居表示;表示第i层节点v的嵌入值;表示节点v的邻居节点的节点表示;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;
步骤1.3.3:使用synchronize-compute模式计算引擎对图数据中的每个节点按照解耦后的图传播计算部分即公式2执行计算;其中,synchronize表示对一个节点的主备份和镜像备份的值进行同步,compute表示对节点执行计算;
步骤1.3.3.1:首先进行Synchronize;每个mirror节点即镜像节点进行节点嵌入的同步,从它的master节点,即对应的远程的主节点所在的机器拉取最新的节点嵌入值;
步骤1.3.3.2:然后进行Compute;因为master节点计算所依赖的所有数据都通过Sychronzie通信缓存到了本地,所以master节点在本地根据图结构进行计算,即拉取它的入邻居的节点嵌入值执行计算,得到邻居表示;
步骤1.3.4:使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore按照解耦后的神经网络计算部分即公式3执行计算得到节点的下一层嵌入值;
步骤1.4:步骤1.3为一层图神经网络的正向训练过程,每一层的图神经网络的正向训练逻辑都相同;如果模型有N层,那么正向训练完成之后会得到第N层的节点表示;
步骤1.5:然后基于第N层的节点表示和数据集提供的真实的节点表示,使用损失函数L得到损失值Loss;该部分可以使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore完成;接下来基于损失函数和损失值进行反向训练;
步骤2:对分布式图神经网络进行反向训练;
步骤2.1:对图神经网络反向训练的训练过程进行分析、解耦、训练;即使用compute-synchronize引擎执行图计算,现有深度学习库的Autograd库执行神经网络计算;
图神经网络中的每一层的梯度包含两部分,一部分是节点嵌入梯度,另一部分是可学习参数的梯度;
步骤2.1.1:基于正向训练过程即步骤1.3.1的训练公式使用链式求导规则进行梯度求值推导,得到图神经网络中的每一层可学习参数的梯度—公式4和每一层节点的嵌入梯度—公
式5:
其中,L表示损失函数;表示第i+1层可学习参数的梯度;表示第i层节点的嵌入梯度;表示对第i+1层节点的嵌入梯度求值公式;表示基于第i+1层的节点嵌入Hi+1对第i+1层的可学习参数梯度的求值公式;表示基于第i+1层的节点嵌入Hi +1对第i+1层邻居节点表示的梯度求值公式;表示对第i层节点的嵌入梯度聚合公式,此公式是图传播计算的反向传播过程;
因为每一层的节点嵌入值Hi+1都是由图传播计算得到的邻居表示嵌入值与可学习参数Wi+1相乘得到的,所以每一层可学习参数梯度的求值和每一层节点的输出Hi+1有关;公式5等式右边的第三项对应于正向训练中的图传播计算部分公式2,是一个图计算,涉及通信操作;
步骤2.1.2:使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式4和5等式右边前两项得到当前层可学习参数的梯度和邻居表示的梯度
步骤2.1.3.1:首先进行Compute每个节点在本地执行反向计算,计算它需要传递给每个入邻居的梯度值;
步骤2.2:以上为一层图神经网络的反向训练过程,每一层的图神经网络的反向训练步骤都相同;如果模型有N层,那么反向训练完成之后会得到N层的参数梯度,然后机器之间通过通信对梯度进行同步,最后对参数更新,完成一轮训练;
步骤3:对分布式图神经网络进行正向传播和反向传播训练后代表一轮训练结束;所述轮数由用户根据想要达到精度的不同而决定。
本发明的有益技术效果:本发明的目的是设计与实现一种支持高效跨节点自动微分技术的分布式图神经网络训练技术,避免了用户手动推导和实现图神经网络模型反向传播训练的负担。相较于背景技术中的Aligraph和Roc系统,本发明减少了冗余计算开销,提升了系统的吞吐量。在通信与计算设计方面,本发明解耦了通信与计算,并根据图神经网络正向和反向的计算特性,设计实现了synchronize-compute和compute-synchronize双模式计算引擎来灵活支持正向反向的计算,大大减小了设计难度,使用master-mirror同步机制来支持高效的节点属性通信。
本发明的方法将图神经网络训练过程解耦成通信与计算两部分,并根据图神经网络正向和反向的计算特性,在正向计算中,每个节点从集群中收集邻居节点的信息,产生的中间变量将被缓存并用于反向计算中。在反向计算中,每个点基于前向传播的结果计算邻居节点的梯度并将结果发送给其邻居即本地或者远程机器。实现自动微分的关键点就是在执行正向和反向计算之前,使用synchronize-compute双模式计算获取计算所需要的依赖项,保证在反向求梯度时所有的依赖数据都在本地,从而可以结合现有的深度学习自动微分库实现跨计算节点的自动微分。基于此逻辑以及对训练过程的解耦,本发明设计与实现了synchronize-compute双模式计算引擎和master-mirror同步机制。
使用master-mirror同步机制支持高效的集群间数据通信,避免了冗余计算。设计synchronize-compute和compute-synchronize双模式计算引擎实现正向和反向训练就地执行,以支持结合图引擎和现有成熟的自动微分库实现高效的跨计算节点的自动微分,避免了用户手动实现算子。同时,也正是基于本发明的设计,使得模型训练可以灵活选择特定硬件优化的深度学习库,如在GPU上优化执行的PyTorch,TPU上优化执行的Tensorflow,Ascend人工智能芯片上优化执行的MindSore,以支持更加高效地模型训练。
附图说明
图1本发明实施例系统模型训练示例流程图;
图2本发明实施例compute-synchronize计算模式;
图3本发明实施例与DistDGL,Roc系统实验数据的对比;其中,NeutronStar为本发明设计与实现的系统。
具体实施方式
下面结合附图和实施例对本发明做进一步说明;
本发明以图示的形式形象化地描述使用本发明设计的系统训练由2层图神经网络层组成的图神经网络模型模型的流程,如图1所示。一种支持跨节点自动微分的分布式图神经网络训练方法,具体步骤为:
正向训练过程:
步骤1:首先对用户提供的图数据使进行划分:如图2所示,示例图数据由2个节点组成,将1号节点划分给机器0,2号节点划分给机器1;
步骤2:基于划分后的图,建立master-mirror机制:
步骤2.1:机器0的master点为1号点,机器1的master点为2号点;
步骤2.2:机器0的mirror点为2号点,机器1的mirror点为1号点;
步骤3:第一层图神经网络正向训练;
步骤3.1:机器0中的master点1号节点在第一层图神经网络中的正向计算公式为:
其中,分别表示1号节点在第0层和第1层的嵌入值;N(1)表示1号节点的邻居节点{1,2};表示1号节点的邻居节点1和2第0层的嵌入值;W1分别表示第1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATE1表示第1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINE1表示第1层聚合计算。同理,机器1中的master点2号节点在第1层图神经网络中的正向计算公式为:
步骤3.2:基于步骤3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
步骤3.3:使用synchronize-compute模式计算引擎分别对1号节点、2号节点按照解耦后的图传播计算部分(3)、(5)执行计算;
步骤3.3.2:Compute:因为1号节点计算所依赖的所有数据——1号节点和2号节点的第0层的嵌入值都已经在本地(机器0上),所以1号节点根据图结构拉取它的入邻居1号节点和2号节点的嵌入值执行计算,得到第1层的邻居表示
同理,在机器1的计算,先执行Synchronize,机器1上的mirror节点1号点通过通信从机器0上拉取第0层的嵌入值缓存到本地;然后执行Compute,2号节点根据图结构拉取它的入邻居1号节点和2号节点的第0层的嵌入值执行计算,得到第1层的邻居表示
步骤4:第二层图神经网络正向训练;
步骤4.1:机器0中的master点1号节点在第二层图神经网络中的正向计算公式为:
其中,分别表示1号节点在第1层和第2层的嵌入值;N(1)表示1号节点的邻居节点{1,2};表示1号节点的邻居节点1和2第1层的嵌入值;W2分别表示第2层的可学习参数;σ表示引入非线性变换的函数;AGGREGATE2表示第2层结合邻居节点和自身节点的嵌入值的计算方式;COMBINE2表示第2层聚合计算。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
步骤4.2:基于步骤4.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
步骤4.3:使用synchronize-compute模式计算引擎分别对1号节点、2号节点按照解耦后的图传播计算部分(9)、(11)执行计算;
步骤4.3.2:Compute:因为1号节点计算所依赖的所有数据——1号节点和2号节点的嵌入值都已经在本地(机器0上),所以1号节点根据图结构拉取它的入邻居1号节点和2号节点的嵌入值执行计算,得到邻居表示
同理,在机器1的计算,先执行Synchronize,机器1上的mirror节点1号点通过通信从机器0上拉取第0层的嵌入值缓存到本地;然后执行Compute,2号节点根据图结构拉取它的入邻居的1号节点和2号节点的第0层的嵌入值执行计算,得到第1层的邻居表示
然后基于第1层的节点表示和数据集提供给的真实的节点表示,使用损失函数L得到损失值Loss。该部分可以使用现有的深度学习库,如PyTorch、Tensorflow、MinSpore等完成;接下来基于损失函数和损失值进行反向训练。
反向训练过程:
步骤1:第二层图神经网络反向训练;
步骤1.1:机器0中的master点1号节点在第2层图神经网络中的反向计算公式为:
其中,L表示损失函数;表示第2层可学习参数的梯度;表示1号节点在第1层的嵌入梯度;表示对1号节点在第2层节点的嵌入梯度求值公式;表示基于1号节点在第2层的节点嵌入H1 2对第2层的可学习参数梯度求值公式;表示基于1号节点在第2层的节点嵌入H1 2对第2层1号节点的邻居节点表示的梯度求值公式;表示对第1层节点的嵌入梯度聚合公式。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
其中,表示2号节点在第1层的嵌入梯度;表示对2号节点在第2层节点的嵌入梯度求值公式;表示基于2号节点在第2层的节点嵌入对第2层的可学习参数梯度求值公式;表示基于2号节点在第2层的节点嵌入对第2层2号节点的邻居节点表示的梯度求值公式;表示对第1层节点的嵌入梯度聚合公式。
步骤1.2:在两台机器上使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式(13)、(15),(14)和(16)右边前两项得到当前层可学习参数的梯度和邻居表示的梯度
步骤1.3.1:Compute如图2反向所示,首先机器0上的master节点1号点在本地执行反向计算,计算它需要传递给每个入邻居1号点和2号点的梯度值;
步骤1.3.2:Synchronize mirror节点2号点把它的梯度值通过通信发给远程的master点,即机器1上的2号点。机器1上的2号点聚合多个mirror点(来自于机器0和机器1)发来的梯度值,得到下一层的节点嵌入梯度
同理,在机器1的计算,先执行Compute,机器1上的master节点2号点在本地执行反向计算,计算它需要传递给每个入邻居1号点和2号点的梯度值;然后执行Synchronizemirror节点1号点把它的梯度值通过通信发给远程的master点,即机器0上的1号点。机器0上的1号点聚合多个mirror点(来自于机器0和机器1)发来的梯度值,得到下一层的节点嵌入梯度
步骤2:第一层图神经网络反向训练;
步骤2.1:机器0中的master点1号节点在第1层图神经网络中的反向计算公式为:
其中,L表示损失函数;表示第1层可学习参数的梯度;表示1号节点在第1层的嵌入梯度;表示对1号节点在第1层节点的嵌入梯度求值公式;表示基于1号节点在第1层的节点嵌入对第1层的可学习参数梯度求值公式;表示基于1号节点在第1层的节点嵌入对第1层1号节点的邻居节点表示的梯度求值公式;表示对第0层节点的嵌入梯度聚合公式。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
其中,表示2号节点在第1层的嵌入梯度;表示对2号节点在第1层节点的嵌入梯度求值公式;表示基于2号节点在第1层的节点嵌入对第1层的可学习参数梯度求值公式;表示基于2号节点在第1层的节点嵌入对第2层2号节点的邻居节点表示的梯度求值公式;表示对第0层节点的嵌入梯度聚合公式。
步骤2.2:在两台机器上使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式(17)、(19),(18)和(20)右边前两项得到当前层可学习参数的梯度和邻居表示的梯度
步骤2.3:因为当前层是模型的第1层,且在机器1和机器2已经计算得到了第1层的梯度,所以不需要再使用compute-synchronize执行图上的计算,所以通信同步第2层的参数梯度然后同步更新得到当前层的参数。
自此,完成一轮训练。
通过master-mirror同步机制,正向和反向在计算前就可以通信获取依赖项的值。同时这种双模式计算引擎的设计,能够在本地对一个节点执行正向和反向的计算,即使得正向和反向计算图均在一个机器上执行。因此,这种设计可以天然地使用现有的成熟的深度学习库中的优化算子(包括自动微分算子)结合图传播引擎来执行正向和反向计算,而不需要用户手动实现算子,实现了跨计算节点的自动微分。同时,也是因为这种设计使得模型训练可以灵活切换使用特定硬件优化的深度学习库,如在GPU上优化执行的PyTorch,TPU上优化执行的Tensorflow,Ascend人工智能芯片上优化执行的MindSpore。
基于以上分析和设计,本发明结合现有深度学习库和synchronize-compute模双模式计算引擎设计了跨计算机节点的自动微分工具链,将其抽象成算法表示如下:
该算法的输入是转置图(即将原始输入图的结构关系进行转向),边的权重,当前层的节点表示,后一层的梯度,当前层的邻居表示,当前层的可学习参数。输出是前一层的节点嵌入梯度。
算法解释:第1行到第5行表示依据当前层的节点表示计算当前层的可学习参数和邻居表示的梯度,可以使用现有深度学习库,如PyTorch、Tensorflow、MindSpore等的自动微分库计算出可学习参数W的梯度和邻居节点表示的梯度。分别对应于公式4等式右边的第二项和公式5等式右边的第二项。第6行到第11行表示根据链式求导法则求解参数W的全局梯度和前一层的节点嵌入梯度,分别对应于公式4,公式5的第一项。第12行到第16行表示每个节点计算需要给入邻居节点传递的梯度,并通过通信发送然后进行聚合计算得到前一层的的节点嵌入梯度。第17行表示所有机器通过通信同步可学习参数的梯度,然后进行更新。第18行表示输出前一层的的节点嵌入梯度。
本发明的实验是在由16台阿里云服务器组成的集群下进行的。每台机器的配置是16核CPU,62GB内存,Nvidia Tesla T4 GPU,操作系统是Ubuntu 18.04。网络带宽是6Gbps/s。
数据集和GNN算法:实验测试使用了6个数据集:Google、Pokec、LiveJ、Reddi、Orkut、Wiki。同时,选取了三个具有代表性的图神经网络模型:GCN、GIN、GAT,实际实验时每个模型都是两层。
对比系统:DistDGL,Roc。NeutronStar为本发明设计与实现的系统;图3本发明实施例与DistDGL,Roc系统实验数据的对比;
本发明使用6个真实世界图数据进行了实验对比,相较于DistDGL和ROC两种图神经网络系统,本发明的系统可以取得到1.8倍到15.8倍的加速比。
Claims (7)
1.一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,具体包括以下步骤:
步骤1:对分布式图神经网络进行正向训练;
步骤2:对分布式图神经网络进行反向训练;
步骤3:对分布式图神经网络进行正向传播和反向传播训练后代表一轮训练结束;所述轮数由用户根据想要达到精度的不同而决定。
2.根据权利要求1所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤1具体为:
步骤1.1:首先对用户提供的图数据使用图划分方法如MEITS进行划分,划分一部分点及其入边给每一个机器;
步骤1.2:每个机器基于划分后的图数据,建立master-mirror机制;
步骤1.3:对图神经网络正向训练的训练过程进行分析、解耦、训练;即使用synchronize-compute引擎执行图计算,现有深度学习库执行神经网络计算;
步骤1.4:步骤1.3为一层图神经网络的正向训练过程,每一层的图神经网络的正向训练逻辑都相同;如果模型有N层,那么正向训练完成之后会得到第N层的节点表示;
步骤1.5:然后基于第N层的节点表示和数据集提供的真实的节点表示,使用损失函数L得到损失值Loss;该部分可以使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore完成;接下来基于损失函数和损失值进行反向训练。
3.根据权利要求2所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤1.2具体为:
步骤1.2.1:每个机器将划分到的节点表示为master点即主节点,每个机器负责执行master节点的计算;
步骤1.2.2:这些master点即主节点在其他机器中作为源点体现边关系的称为mirror点即镜像点,一个master点可能成为在其他多个机器中的镜像点。
4.根据权利要求2所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤1.3具体为:
步骤1.3.1:图神经网络每一层的每一个节点正向计算的公式为:
其中,分别表示第i层和第i+1层节点v的嵌入值;N(v)表示节点v的邻居节点,表示节点v的邻居节点的节点表示;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;
步骤1.3.2:基于步骤1.3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
其中,表示第i+1层经过图传播计算后得到的节点v的聚合的邻居表示;表示第i层节点v的嵌入值;表示节点v的邻居节点的节点表示;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;
步骤1.3.3:使用synchronize-compute模式计算引擎对图数据中的每个节点按照解耦后的图传播计算部分即公式2执行计算;其中,synchronize表示对一个节点的主备份和镜像备份的值进行同步,compute表示对节点执行计算;
步骤1.3.3.1:首先进行Synchronize;每个mirror节点即镜像节点进行节点嵌入的同步,从它的master节点,即对应的远程的主节点所在的机器拉取最新的节点嵌入值;
步骤1.3.3.2:然后进行Compute;因为master节点计算所依赖的所有数据都通过Sychronzie通信缓存到了本地,所以master节点在本地根据图结构进行计算,即拉取它的入邻居的节点嵌入值执行计算,得到邻居表示;
步骤1.3.4:使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore按照解耦后的神经网络计算部分即公式3执行计算得到节点的下一层嵌入值。
5.根据权利要求1所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤2具体为:
步骤2.1:对图神经网络反向训练的训练过程进行分析、解耦、训练;即使用compute-synchronize引擎执行图计算,现有深度学习库的Autograd库执行神经网络计算;
图神经网络中的每一层的梯度包含两部分,一部分是节点嵌入梯度,另一部分是可学习参数的梯度;
步骤2.2:以上为一层图神经网络的反向训练过程,每一层的图神经网络的反向训练步骤都相同;如果模型有N层,那么反向训练完成之后会得到N层的参数梯度,然后机器之间通过通信对梯度进行同步,最后对参数更新,完成一轮训练。
6.根据权利要求5所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤2.1具体为:
步骤2.1:对图神经网络反向训练的训练过程进行分析、解耦、训练;即使用compute-synchronize引擎执行图计算,现有深度学习库的Autograd库执行神经网络计算;
图神经网络中的每一层的梯度包含两部分,一部分是节点嵌入梯度,另一部分是可学习参数的梯度;
步骤2.1.1:基于正向训练过程即步骤1.3.1的训练公式使用链式求导规则进行梯度求值推导,得到图神经网络中的每一层可学习参数的梯度—公式4和每一层节点的嵌入梯度—公式5:
其中,L表示损失函数;▽Wi+1表示第i+1层可学习参数的梯度;▽Hi表示第i层节点的嵌入梯度;表示对第i+1层节点的嵌入梯度求值公式;表示基于第i+1层的节点嵌入Hi+1对第i+1层的可学习参数梯度的求值公式;表示基于第i+1层的节点嵌入Hi+1对第i+1层邻居节点表示的梯度求值公式;表示对第i层节点的嵌入梯度聚合公式,此公式是图传播计算的反向传播过程;
因为每一层的节点嵌入值Hi+1都是由图传播计算得到的邻居表示嵌入值与可学习参数Wi+1相乘得到的,所以每一层可学习参数梯度的求值和每一层节点的输出Hi+1有关;公式5等式右边的第三项对应于正向训练中的图传播计算部分公式2,是一个图计算,涉及通信操作;
步骤2.1.2:使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式4和5等式右边前两项得到当前层可学习参数的梯度▽Wi+1和邻居表示的梯度
7.根据权利要求6所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤2.1.3具体为:
步骤2.1.3.1:首先进行Compute每个节点在本地执行反向计算,计算它需要传递给每个入邻居的梯度值;
步骤2.1.3.2:然后进行Synchronize每一个mirror即镜像点把它的梯度值发给远程的master点,master点聚合多个mirror点发来的梯度值,得到下一层的节点嵌入梯度▽Hi。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210394310.0A CN115186806A (zh) | 2022-04-06 | 2022-04-06 | 一种支持跨节点自动微分的分布式图神经网络训练方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210394310.0A CN115186806A (zh) | 2022-04-06 | 2022-04-06 | 一种支持跨节点自动微分的分布式图神经网络训练方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115186806A true CN115186806A (zh) | 2022-10-14 |
Family
ID=83512104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210394310.0A Pending CN115186806A (zh) | 2022-04-06 | 2022-04-06 | 一种支持跨节点自动微分的分布式图神经网络训练方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115186806A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561229A (zh) * | 2023-07-03 | 2023-08-08 | 厦门泛卓信息科技有限公司 | 一种基于图神经网络的数据同步方法、装置及存储介质 |
CN116681104A (zh) * | 2023-05-11 | 2023-09-01 | 中国地质大学(武汉) | 分布式空间图神经网络的模型建立及实现方法 |
-
2022
- 2022-04-06 CN CN202210394310.0A patent/CN115186806A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116681104A (zh) * | 2023-05-11 | 2023-09-01 | 中国地质大学(武汉) | 分布式空间图神经网络的模型建立及实现方法 |
CN116681104B (zh) * | 2023-05-11 | 2024-03-12 | 中国地质大学(武汉) | 分布式空间图神经网络的模型建立及实现方法 |
CN116561229A (zh) * | 2023-07-03 | 2023-08-08 | 厦门泛卓信息科技有限公司 | 一种基于图神经网络的数据同步方法、装置及存储介质 |
CN116561229B (zh) * | 2023-07-03 | 2023-09-08 | 厦门泛卓信息科技有限公司 | 一种基于图神经网络的数据同步方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
CN113112027B (zh) | 一种基于动态调整模型聚合权重的联邦学习方法 | |
CN109948029B (zh) | 基于神经网络自适应的深度哈希图像搜索方法 | |
CN115186806A (zh) | 一种支持跨节点自动微分的分布式图神经网络训练方法 | |
CN111242282A (zh) | 基于端边云协同的深度学习模型训练加速方法 | |
CN111741054B (zh) | 一种移动用户深度神经网络计算卸载时延最小化方法 | |
CN113220457A (zh) | 模型部署方法、模型部署装置、终端设备及可读存储介质 | |
CN111243045A (zh) | 一种基于高斯混合模型先验变分自编码器的图像生成方法 | |
CN111695696A (zh) | 一种基于联邦学习的模型训练的方法及装置 | |
CN113191486B (zh) | 基于参数服务器架构的图数据与参数数据的混合划分方法 | |
CN113988308B (zh) | 一种基于延迟补偿机制的异步联邦梯度平均方法 | |
CN111831354B (zh) | 数据精度配置方法、装置、芯片、芯片阵列、设备及介质 | |
CN113159287A (zh) | 一种基于梯度稀疏的分布式深度学习方法 | |
CN114970830A (zh) | 一种面向数据并行分布式深度学习训练加速的灵活通信方法 | |
CN114239237A (zh) | 一种支持数字孪生的配电网仿真场景生成系统与方法 | |
CN115544029A (zh) | 一种数据处理方法及相关装置 | |
CN116883229A (zh) | 异构gpu集群中加速神经网络训练的流水线并行方法 | |
CN110321799B (zh) | 一种基于sbr和平均类间距离的场景数选择方法 | |
CN115310209B (zh) | 基于vae的气动形状迁移优化方法及相关装置 | |
CN116033492A (zh) | 移动边缘环境中Transformer模型分割方法及装置 | |
Ho et al. | Adaptive communication for distributed deep learning on commodity GPU cluster | |
CN114443911A (zh) | 一种图数据语义分析方法、装置、设备及可读存储介质 | |
CN111369052A (zh) | 简化路网ksp优化算法 | |
CN117892769B (zh) | 神经网络训练方法、显存调度方法、系统、设备和产品 | |
CN113762469B (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 |