CN115186806A - 一种支持跨节点自动微分的分布式图神经网络训练方法 - Google Patents

一种支持跨节点自动微分的分布式图神经网络训练方法 Download PDF

Info

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
Application number
CN202210394310.0A
Other languages
English (en)
Inventor
王千阁
陈朝亿
高德超
张岩峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University China
Original Assignee
Northeastern University China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Northeastern University China filed Critical Northeastern University China
Priority to CN202210394310.0A priority Critical patent/CN115186806A/zh
Publication of CN115186806A publication Critical patent/CN115186806A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/13Differential equations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, 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:图神经网络每一层的每一个节点正向计算的公式为:
Figure BDA0003582237780000021
其中,
Figure BDA0003582237780000022
分别表示第i层和第i+1层节点v的嵌入值;N(v)表示节点v的邻居节点,
Figure BDA0003582237780000023
表示节点v的邻居节点的节点表示;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;
步骤1.3.2:基于步骤1.3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
Figure BDA0003582237780000031
Figure BDA0003582237780000032
其中,
Figure BDA0003582237780000033
表示第i+1层经过图传播计算后得到的节点v的聚合的邻居表示;
Figure BDA0003582237780000034
表示第i层节点v的嵌入值;
Figure BDA0003582237780000035
表示节点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:
Figure BDA0003582237780000041
Figure BDA0003582237780000042
其中,L表示损失函数;
Figure BDA0003582237780000043
表示第i+1层可学习参数的梯度;
Figure BDA0003582237780000044
表示第i层节点的嵌入梯度;
Figure BDA0003582237780000045
表示对第i+1层节点的嵌入梯度求值公式;
Figure BDA0003582237780000046
表示基于第i+1层的节点嵌入Hi+1对第i+1层的可学习参数梯度的求值公式;
Figure BDA0003582237780000047
表示基于第i+1层的节点嵌入Hi +1对第i+1层邻居节点表示的梯度求值公式;
Figure BDA0003582237780000048
表示对第i层节点的嵌入梯度聚合公式,此公式是图传播计算的反向传播过程;
因为每一层的节点嵌入值Hi+1都是由图传播计算得到的邻居表示嵌入值
Figure BDA0003582237780000049
与可学习参数Wi+1相乘得到的,所以每一层可学习参数梯度的求值和每一层节点的输出Hi+1有关;公式5等式右边的第三项
Figure BDA00035822377800000410
对应于正向训练中的图传播计算部分公式2,是一个图计算,涉及通信操作;
因此,将一层图神经网络反向训练过程解耦为神经网络操作—公式4、公式5中的
Figure BDA00035822377800000411
Figure BDA00035822377800000412
和图传播操作
Figure BDA00035822377800000413
步骤2.1.2:使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式4和5等式右边前两项得到当前层可学习参数的梯度
Figure BDA00035822377800000414
和邻居表示的梯度
Figure BDA00035822377800000415
步骤2.1.3:使用compute-synchronize模式计算引擎对图数据中的每个节点按照解耦后的图传播计算部分即公式5中的
Figure BDA0003582237780000051
执行计算;
步骤2.1.3.1:首先进行Compute每个节点在本地执行反向计算,计算它需要传递给每个入邻居的梯度值;
步骤2.1.3.2:然后进行Synchronize每一个mirror即镜像点把它的梯度值发给远程的master点,master点聚合多个mirror点发来的梯度值,得到下一层的节点嵌入梯度
Figure BDA0003582237780000052
步骤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号节点在第一层图神经网络中的正向计算公式为:
Figure BDA0003582237780000061
其中,
Figure BDA0003582237780000062
分别表示1号节点在第0层和第1层的嵌入值;N(1)表示1号节点的邻居节点{1,2};
Figure BDA0003582237780000063
表示1号节点的邻居节点1和2第0层的嵌入值;W1分别表示第1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATE1表示第1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINE1表示第1层聚合计算。同理,机器1中的master点2号节点在第1层图神经网络中的正向计算公式为:
Figure BDA0003582237780000064
其中,
Figure BDA0003582237780000071
分别表示2号节点在第0层和第1层的嵌入值;N(2)表示2号节点的邻居节点{1,2}。
步骤3.2:基于步骤3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
Figure BDA0003582237780000072
Figure BDA0003582237780000073
其中,
Figure BDA0003582237780000074
表示第1层经过图传播计算后得到的1号节点的聚合的邻居表示。同理,解耦后2号节点的计算公式为:
Figure BDA0003582237780000075
Figure BDA0003582237780000076
其中,
Figure BDA0003582237780000077
表示第1层经过图传播计算后得到的2号节点的聚合的邻居表示。
步骤3.3:使用synchronize-compute模式计算引擎分别对1号节点、2号节点按照解耦后的图传播计算部分(3)、(5)执行计算;
步骤3.3.1:Synchronize:如图2正向所示,首先机器0上的mirror节点2号点通过通信从机器1上拉取第0层的嵌入值
Figure BDA0003582237780000078
缓存到本地;
步骤3.3.2:Compute:因为1号节点计算所依赖的所有数据——1号节点和2号节点的第0层的嵌入值都已经在本地(机器0上),所以1号节点根据图结构拉取它的入邻居1号节点和2号节点的嵌入值执行计算,得到第1层的邻居表示
Figure BDA0003582237780000079
同理,在机器1的计算,先执行Synchronize,机器1上的mirror节点1号点通过通信从机器0上拉取第0层的嵌入值
Figure BDA00035822377800000710
缓存到本地;然后执行Compute,2号节点根据图结构拉取它的入邻居1号节点和2号节点的第0层的嵌入值执行计算,得到第1层的邻居表示
Figure BDA00035822377800000711
步骤3.4:使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore等按照解耦后的(4)、(6)神经网络计算部分执行计算得到1号节点和2号节点的第1层嵌入值
Figure BDA00035822377800000712
步骤4:第二层图神经网络正向训练;
步骤4.1:机器0中的master点1号节点在第二层图神经网络中的正向计算公式为:
Figure BDA00035822377800000713
其中,
Figure BDA0003582237780000081
分别表示1号节点在第1层和第2层的嵌入值;N(1)表示1号节点的邻居节点{1,2};
Figure BDA0003582237780000082
表示1号节点的邻居节点1和2第1层的嵌入值;W2分别表示第2层的可学习参数;σ表示引入非线性变换的函数;AGGREGATE2表示第2层结合邻居节点和自身节点的嵌入值的计算方式;COMBINE2表示第2层聚合计算。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
Figure BDA0003582237780000083
其中,
Figure BDA0003582237780000084
分别表示2号节点在第1层和第2层的嵌入值;N(2)表示2号节点的邻居节点{1,2}。
步骤4.2:基于步骤4.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
Figure BDA0003582237780000085
Figure BDA0003582237780000086
其中,
Figure BDA0003582237780000087
表示第2层经过图传播计算后得到的1号节点的聚合的邻居表示。同理,解耦后2号节点的计算公式为:
Figure BDA0003582237780000088
Figure BDA0003582237780000089
其中,
Figure BDA00035822377800000810
表示第2层经过图传播计算后得到的2号节点的聚合的邻居表示。
步骤4.3:使用synchronize-compute模式计算引擎分别对1号节点、2号节点按照解耦后的图传播计算部分(9)、(11)执行计算;
步骤4.3.1:Synchronize:如图2正向所示,首先机器0上的mirror节点2号点通过通信从机器1上拉取第1层的嵌入值
Figure BDA00035822377800000811
缓存到本地;
步骤4.3.2:Compute:因为1号节点计算所依赖的所有数据——1号节点和2号节点的嵌入值都已经在本地(机器0上),所以1号节点根据图结构拉取它的入邻居1号节点和2号节点的嵌入值执行计算,得到邻居表示
Figure BDA00035822377800000812
同理,在机器1的计算,先执行Synchronize,机器1上的mirror节点1号点通过通信从机器0上拉取第0层的嵌入值
Figure BDA00035822377800000813
缓存到本地;然后执行Compute,2号节点根据图结构拉取它的入邻居的1号节点和2号节点的第0层的嵌入值执行计算,得到第1层的邻居表示
Figure BDA0003582237780000091
步骤4.4:使用现有的深度学习库,如PyTorch、Tensorflow、MindSpore等按照解耦后的(4)、(6)神经网络计算部分执行计算得到1号节点和2号节点第2层的嵌入值
Figure BDA0003582237780000092
然后基于第1层的节点表示和数据集提供给的真实的节点表示,使用损失函数L得到损失值Loss。该部分可以使用现有的深度学习库,如PyTorch、Tensorflow、MinSpore等完成;接下来基于损失函数和损失值进行反向训练。
反向训练过程:
步骤1:第二层图神经网络反向训练;
步骤1.1:机器0中的master点1号节点在第2层图神经网络中的反向计算公式为:
Figure BDA0003582237780000093
Figure BDA0003582237780000094
其中,L表示损失函数;
Figure BDA0003582237780000095
表示第2层可学习参数的梯度;
Figure BDA0003582237780000096
表示1号节点在第1层的嵌入梯度;
Figure BDA0003582237780000097
表示对1号节点在第2层节点的嵌入梯度求值公式;
Figure BDA0003582237780000098
表示基于1号节点在第2层的节点嵌入H1 2对第2层的可学习参数梯度求值公式;
Figure BDA0003582237780000099
表示基于1号节点在第2层的节点嵌入H1 2对第2层1号节点的邻居节点表示的梯度求值公式;
Figure BDA00035822377800000910
表示对第1层节点的嵌入梯度聚合公式。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
Figure BDA00035822377800000911
Figure BDA00035822377800000912
其中,
Figure BDA00035822377800000913
表示2号节点在第1层的嵌入梯度;
Figure BDA00035822377800000914
表示对2号节点在第2层节点的嵌入梯度求值公式;
Figure BDA0003582237780000101
表示基于2号节点在第2层的节点嵌入
Figure BDA0003582237780000102
对第2层的可学习参数梯度求值公式;
Figure BDA0003582237780000103
表示基于2号节点在第2层的节点嵌入
Figure BDA0003582237780000104
对第2层2号节点的邻居节点表示的梯度求值公式;
Figure BDA0003582237780000105
表示对第1层节点的嵌入梯度聚合公式。
步骤1.2:在两台机器上使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式(13)、(15),(14)和(16)右边前两项得到当前层可学习参数的梯度
Figure BDA0003582237780000106
和邻居表示的梯度
Figure BDA0003582237780000107
步骤1.3:使用compute-synchronize模式计算引擎分别对1号节点、2号节点按照解耦后的图传播计算部分(公式(14)、(16)右边第三项——
Figure BDA0003582237780000108
)执行计算:
步骤1.3.1:Compute如图2反向所示,首先机器0上的master节点1号点在本地执行反向计算,计算它需要传递给每个入邻居1号点和2号点的梯度值;
步骤1.3.2:Synchronize mirror节点2号点把它的梯度值通过通信发给远程的master点,即机器1上的2号点。机器1上的2号点聚合多个mirror点(来自于机器0和机器1)发来的梯度值,得到下一层的节点嵌入梯度
Figure BDA0003582237780000109
同理,在机器1的计算,先执行Compute,机器1上的master节点2号点在本地执行反向计算,计算它需要传递给每个入邻居1号点和2号点的梯度值;然后执行Synchronizemirror节点1号点把它的梯度值通过通信发给远程的master点,即机器0上的1号点。机器0上的1号点聚合多个mirror点(来自于机器0和机器1)发来的梯度值,得到下一层的节点嵌入梯度
Figure BDA00035822377800001010
机器1和机器2通信同步第2层的参数梯度
Figure BDA00035822377800001011
然后同步更新得到当前层的参数。
步骤2:第一层图神经网络反向训练;
步骤2.1:机器0中的master点1号节点在第1层图神经网络中的反向计算公式为:
Figure BDA00035822377800001012
Figure BDA0003582237780000111
其中,L表示损失函数;
Figure BDA0003582237780000112
表示第1层可学习参数的梯度;
Figure BDA0003582237780000113
表示1号节点在第1层的嵌入梯度;
Figure BDA0003582237780000114
表示对1号节点在第1层节点的嵌入梯度求值公式;
Figure BDA0003582237780000115
表示基于1号节点在第1层的节点嵌入
Figure BDA0003582237780000116
对第1层的可学习参数梯度求值公式;
Figure BDA0003582237780000117
表示基于1号节点在第1层的节点嵌入
Figure BDA0003582237780000118
对第1层1号节点的邻居节点表示的梯度求值公式;
Figure BDA0003582237780000119
表示对第0层节点的嵌入梯度聚合公式。同理,机器1中的master点2号节点在第2层图神经网络中的正向计算公式为:
Figure BDA00035822377800001110
Figure BDA00035822377800001111
其中,
Figure BDA00035822377800001112
表示2号节点在第1层的嵌入梯度;
Figure BDA00035822377800001113
表示对2号节点在第1层节点的嵌入梯度求值公式;
Figure BDA00035822377800001114
表示基于2号节点在第1层的节点嵌入
Figure BDA00035822377800001115
对第1层的可学习参数梯度求值公式;
Figure BDA00035822377800001116
表示基于2号节点在第1层的节点嵌入
Figure BDA00035822377800001117
对第2层2号节点的邻居节点表示的梯度求值公式;
Figure BDA00035822377800001118
表示对第0层节点的嵌入梯度聚合公式。
步骤2.2:在两台机器上使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式(17)、(19),(18)和(20)右边前两项得到当前层可学习参数的梯度
Figure BDA00035822377800001119
和邻居表示的梯度
Figure BDA00035822377800001120
步骤2.3:因为当前层是模型的第1层,且在机器1和机器2已经计算得到了第1层的梯度,所以不需要再使用compute-synchronize执行图上的计算,所以通信同步第2层的参数梯度
Figure BDA00035822377800001121
然后同步更新得到当前层的参数。
自此,完成一轮训练。
通过master-mirror同步机制,正向和反向在计算前就可以通信获取依赖项的值。同时这种双模式计算引擎的设计,能够在本地对一个节点执行正向和反向的计算,即使得正向和反向计算图均在一个机器上执行。因此,这种设计可以天然地使用现有的成熟的深度学习库中的优化算子(包括自动微分算子)结合图传播引擎来执行正向和反向计算,而不需要用户手动实现算子,实现了跨计算节点的自动微分。同时,也是因为这种设计使得模型训练可以灵活切换使用特定硬件优化的深度学习库,如在GPU上优化执行的PyTorch,TPU上优化执行的Tensorflow,Ascend人工智能芯片上优化执行的MindSpore。
基于以上分析和设计,本发明结合现有深度学习库和synchronize-compute模双模式计算引擎设计了跨计算机节点的自动微分工具链,将其抽象成算法表示如下:
Figure BDA0003582237780000121
该算法的输入是转置图(即将原始输入图的结构关系进行转向),边的权重,当前层的节点表示,后一层的梯度,当前层的邻居表示,当前层的可学习参数。输出是前一层的节点嵌入梯度。
算法解释:第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:图神经网络每一层的每一个节点正向计算的公式为:
Figure FDA0003582237770000011
其中,
Figure FDA0003582237770000012
分别表示第i层和第i+1层节点v的嵌入值;N(v)表示节点v的邻居节点,
Figure FDA0003582237770000013
表示节点v的邻居节点的节点表示;Wi+1分别表示第i+1层的可学习参数;σ表示引入非线性变换的函数;AGGREGATEi+1表示第i+1层结合邻居节点和自身节点的嵌入值的计算方式;COMBINEi+1表示第i+1层聚合计算;
步骤1.3.2:基于步骤1.3.1正向传播计算公式,进一步将其细粒度地解耦为图传播计算和神经网络计算两部分:
Figure FDA0003582237770000021
Figure FDA0003582237770000022
其中,
Figure FDA0003582237770000023
表示第i+1层经过图传播计算后得到的节点v的聚合的邻居表示;
Figure FDA0003582237770000024
表示第i层节点v的嵌入值;
Figure FDA0003582237770000025
表示节点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:
Figure FDA0003582237770000031
Figure FDA0003582237770000032
其中,L表示损失函数;▽Wi+1表示第i+1层可学习参数的梯度;▽Hi表示第i层节点的嵌入梯度;
Figure FDA0003582237770000033
表示对第i+1层节点的嵌入梯度求值公式;
Figure FDA0003582237770000034
表示基于第i+1层的节点嵌入Hi+1对第i+1层的可学习参数梯度的求值公式;
Figure FDA0003582237770000035
表示基于第i+1层的节点嵌入Hi+1对第i+1层邻居节点表示的梯度求值公式;
Figure FDA0003582237770000036
表示对第i层节点的嵌入梯度聚合公式,此公式是图传播计算的反向传播过程;
因为每一层的节点嵌入值Hi+1都是由图传播计算得到的邻居表示嵌入值
Figure FDA0003582237770000037
与可学习参数Wi+1相乘得到的,所以每一层可学习参数梯度的求值和每一层节点的输出Hi+1有关;公式5等式右边的第三项
Figure FDA0003582237770000038
对应于正向训练中的图传播计算部分公式2,是一个图计算,涉及通信操作;
因此,将一层图神经网络反向训练过程解耦为神经网络操作—公式4、公式5中的
Figure FDA0003582237770000039
Figure FDA0003582237770000041
和图传播操作
Figure FDA0003582237770000042
步骤2.1.2:使用现有的深度学习库的Autograd库,如PyTorch、Tensorflow、MindSpore等调用自动微分库执行公式4和5等式右边前两项得到当前层可学习参数的梯度▽Wi+1和邻居表示的梯度
Figure FDA0003582237770000043
步骤2.1.3:使用compute-synchronize模式计算引擎对图数据中的每个节点按照解耦后的图传播计算部分即公式5中的
Figure FDA0003582237770000044
执行计算。
7.根据权利要求6所述的一种支持跨节点自动微分的分布式图神经网络训练方法,其特征在于,所述步骤2.1.3具体为:
步骤2.1.3.1:首先进行Compute每个节点在本地执行反向计算,计算它需要传递给每个入邻居的梯度值;
步骤2.1.3.2:然后进行Synchronize每一个mirror即镜像点把它的梯度值发给远程的master点,master点聚合多个mirror点发来的梯度值,得到下一层的节点嵌入梯度▽Hi
CN202210394310.0A 2022-04-06 2022-04-06 一种支持跨节点自动微分的分布式图神经网络训练方法 Pending CN115186806A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561229A (zh) * 2023-07-03 2023-08-08 厦门泛卓信息科技有限公司 一种基于图神经网络的数据同步方法、装置及存储介质
CN116681104A (zh) * 2023-05-11 2023-09-01 中国地质大学(武汉) 分布式空间图神经网络的模型建立及实现方法

Cited By (4)

* Cited by examiner, † Cited by third party
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