掌桥专利:专业的专利平台
掌桥专利
首页

图数据挖掘方法、装置、电子设备及机器可读存储介质

文献发布时间:2023-06-19 13:29:16


图数据挖掘方法、装置、电子设备及机器可读存储介质

技术领域

本申请涉及数据处理技术,尤其涉及一种图数据挖掘方法、装置、电子设备及机器可读存储介质。

背景技术

目前,针对大数据量的处理,诞生了以Apache Spark为代表的大数据处理框架,它们通常有着良好的可拓展性,友好的编程接口,可以对大量的数据进行快捷有效的处理。

随着人工智能技术的发展,深度学习方法在图像、文本等欧式数据上的智能应用取得了巨大的成功。但现实中许多数据天然属于非欧式的图结构,例如社交网络、知识图谱以及分子结构等等。借鉴深度学习在欧式数据上的成果,研究人员提出了各种针对图结构的图神经网络模型(Graph Neural Networks,简称GNN),在搜索、推荐、药物研发等领域都进行了广泛的应用。

在图挖掘算法落地应用的一般流程中,人们使用大数据处理框架对海量原始数据进行数据预处理,再使用图神经网络框架获取Embedding(表征),最后又返回大数据处理框架完成机器学习(Machine Learning,简称ML)算法训练和推理。

但目前的大数据处理框架与图深度学习框架是割裂的,这使得高效的整合数据预处理和GNN模型训练成为了一个需要解决的问题。

发明内容

有鉴于此,本申请提供一种图数据挖掘方法、装置、电子设备及机器可读存储介质。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种图数据挖掘方法,应用于基于ApacheSpark架构实现的数据处理系统,所述方法包括:

对原始数据进行预处理,得到图结构数据;

依据分布式图神经网络的训练策略,对所述图结构数据进行切分,得到多个子图数据,并将所述子图数据存储分布式内存管理系统;

构建分布式图神经网络训练函数,利用所述分布式图神经网络训练函数,依据所述分布式内存管理系统中存储的子图数据,进行分布式图神经网络模型训练,并将得到的Embedding存储到所述分布式内存管理系统;

依据所述分布式内存管理系统中保存的所述Embedding进行ML模型的训练和预测。

根据本申请实施例的第二方面,提供一种图数据挖掘装置,应用于基于ApacheSpark架构实现的数据处理系统,所述装置包括:

预处理单元,用于对原始数据进行预处理,得到图结构数据;

切分单元,用于依据分布式图神经网络的训练策略,对所述图结构数据进行切分,得到多个子图数据,并将所述子图数据存储分布式内存管理系统;

训练单元,用于构建分布式图神经网络训练函数,利用所述分布式图神经网络训练函数,依据所述分布式内存管理系统中存储的子图数据,进行分布式图神经网络模型训练,并将得到的Embedding存储到所述分布式内存管理系统;

挖掘单元,用于依据所述分布式内存管理系统中保存的所述Embedding进行ML模型的训练和预测。

根据本申请实施例的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现上述图数据挖掘方法。

根据本申请实施例的第四方面,提供一种机器可读存储介质,所述机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上述图数据挖掘方法。

本申请实施例的图数据挖掘方法,通过将大数据处理框架和图神经网络框架的结合,并引入共享内存的分布式内存管理系统,打通Spark和图神经网络训练架构之间的数据传输,高效实现数据融合,避免了大数据处理框架和图神经网络框架之间的频繁数据搬运,提高了大数据框架与图神经网络框架之间的数据交互效率,从而,提升了图数据挖掘的执行效率。

附图说明

图1是本申请一示例性实施例示出的一种图数据挖掘方法的流程示意图;

图2是本申请一示例性实施例示出的一种基于Apache Spark架构实现的数据处理系统的架构示意图;

图3是本申请一示例性实施例示出的一种图数据挖掘方法的流程示意图;

图4是本申请一示例性实施例示出的一种图结构切分的示意图;

图5是本申请一示例性实施例示出的一种图数据挖掘装置的结构示意图;

图6是本申请一示例性实施例示出的一种电子设备的硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例涉及的部分技术术语进行简单说明。

Apache Spark(简称Spark):分布式大数据处理框架,通常在图数据挖掘中进行数据的预处理。

Spark application:Spark作业,用户编写的应用程序,用于提交给Spark集群执行。

Horovod:分布式深度学习训练框架,使用该框架可以比较方便的完成分布式训练。

DGL(Deep Graph Library,深度图形库):一种图深度学习框架,可以以多种深度学习框架作为后端。

Apache Arrow:一种基于内存的列式存储格式,可以与多种其他数据格式相互转化。

Embedding(表征):一个低维的向量表示。例如Word Embedding就是词的一个低维向量表示。

为了使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。

请参见图1,为本申请实施例提供的一种图数据挖掘方法的流程示意图,其中,该图数据挖掘方法可以应用于基于Apache Spark架构实现的数据处理系统,如图1所示,该图数据挖掘方法可以包括以下步骤:

步骤S100、对原始数据进行预处理,得到图结构数据。

步骤S110、依据分布式图神经网络的训练策略,对图结构数据进行切分,得到多个子图数据,并将该多个子图数据存储分布式内存管理系统。

本申请实施例中,可以通过Spark读取原始数据并进行预处理,得到图结构数据。

示例性的,图结构数据可以为构图所需数据,通常形式是二元组或三元组,每个元组表示的是图上的一条边。

本申请实施例中,可以利用Spark对图结构数据进行子图切分,以便后续流程中通过多个work节点,利用分布式图神经网络训练方式,分别依据各子图数据,进行图神经网络训练,提高图神经网络训练的效率。

示例性的,在对图结构数据进行子图切分时,需要依据分布式图神经网络的训练策略,对图结构数据进行切分。例如,依据预先配置的分布式图神经网络训练使用的图深度学习框架(可以称为目标图深度学习框架),对分布式图神经网络训练的要求,对图结构数据进行切分。

举例来说,假设利用DGL进行分布式图神经网络训练为例,可以依据DGL对分布式图神经网络训练的要求,对图结构数据进行切分,得到多个子图数据。

本申请实施例中,对图结构数据进行切分得到的子图数据,可以存储在分布式内存管理系统,通过共享内存的分布式内存管理系统,打通Spark和图神经网络训练架构之间的数据传输。

在一个示例中,对原始数据进行预处理后的数据还可以包括图结构数据对应的特征数据,相应地,在进行图结构数据切分时,还可以对图结构数据对应的特征数据进行切分,得到各子图数据对应的特征数据,并将子图数据以及子图数据对应的特征数据关联存储。

举例来说,假设对图结构数据进行切分得到子图数据1~3,以及各子图数据对应的特征数据,则可以分别将子图数据1及其对应的特征数据、子图数据2及其对应的特征数据,以及子图数据3及其对应的特征数据,分别关键存储在分布式内存管理系统中。例如,子图数据1及其对应的特征数据存储在分布式内存管理系统中worker节点1的内存中,子图数据2及其对应的特征数据存储在分布式内存管理系统中worker节点2的内存中,子图数据3及其对应的特征数据存储在分布式内存管理系统中worker节点3的内存中。

步骤S120、构建分布式图神经网络训练函数,利用分布式图神经网络训练函数,依据分布式内存管理系统中存储的子图数据,进行分布式图神经网络模型训练,并将得到的Embedding存储到分布式内存管理系统。

本申请实施例中,为了在Spark中实现分布式图神经网络训练,可以构建分布式图神经网络训练函数,以便在Spark中利用所构建的分布式图神经网络训练函数,依据分布式内存管理小系统中存储的子图数据,进行分布式图神经网络模型训练,并将得到的Embedding存储到分布式内存管理系统。

示例性的,可以依据预先定义的图神经网络模型以及与所述图神经网络模型关联的训练参数,构建分布式图神经网络训练函数。

在一个示例中,分布式图神经网络训练函数的逻辑可以包括但不限于:

分布式训练的初始化、训练数据的读取和构建、子图采样进行mini-batch模型训练与验证、训练日志的打印以及推理得到的Embedding存储。

举例来说,分布式图神经网络训练函数的主要逻辑可以包括:

1)、引入分布式深度学习训练框架,例如,Horovod,用于分布式训练;

2)、读取存储在分布式内存管理系统中的子图数据,并转化为Tensor(张量),以此构建DGL Graph(图)用于图神经网络训练;

3)、构建图神经网络mini-batch训练的整体流程,包括:子图采样、前向计算损失、后向传播计算梯度、模型参数更新、checkpoint(一种内部事件)的保存以及训练信息打印等;

4)、训练完成后使用模型推理得到Embedding并存储到分布式内存管理系统中。

步骤S130、依据分布式内存管理系统中保存的Embedding进行ML模型的训练和预测。

本申请实施例中,当按照上述实施例中描述的方式得到了Embedding并保存至分布式内存管理系统时,可以通过Spark读取存在分布式内存管理系统中的Embedding并进行数据格式的转化,使用用户定义的逻辑完成ML模型的训练和预测。

可见,在图1所示方法流程中,通过将大数据处理框架和图神经网络框架的结合,并引入共享内存的分布式内存管理系统,打通Spark和图神经网络训练架构之间的数据传输,高效实现数据融合,避免了大数据处理框架和图神经网络框架之间的频繁数据搬运,提高了大数据框架与图神经网络框架之间的数据交互效率,从而,提升了图数据挖掘的执行效率。

在一些实施例中,同一子图数据存储在同一worker节点的内存中,多个子图数据存储在至少两个不同worker节点的内存中。

示例性的,为了提高分布式图神经网络训练的数据获取效率,进而提升分布式图神经网络训练的效率,同一子图数据存储在同一worker(工作)节点的内存中,该worker节点可以依据本节点的内存中存储的子图数据,进行分布式图神经网络训练,而不需要从其它worker节点的内存中获取数据,提高了数据获取效率。

示例性的,对图结构数据进行切分得到的多个子图的数据可以存储在至少两个不同节点的内存中,以便通过该至少两个不同worker节点进行分布式图神经网络训练,提升图神经网络训练的效率。

在一个示例中,不同子图的数据存储在不同worker节点的内存中。

示例性的,为了提高分布式图神经网络训练的效率,充分利用设备性能,对图结构数据进行切分得到的多个子图数据,可以分别存储在不同的worker节点的内存中,并利用存储有子图数据的worker节点,依据本节点的内存中存储的子图数据,进行分布式图神经网络训练。

在另一个示例中,至少一个worker节点的内存中存储有至少两个子图数据,该worker节点运行有至少两个分布式图神经网络训练进程,一个分布式图神经网络训练进程对应一个子图数据。

示例性的,为了充分利用设备资源,在存在单个worker节点资源较为充足的情况下,可以在单个worker节点的内存中存储至少两个子图数据,该worker节点可以运行至少两个分布式图神经网络训练进程,一个分布式图神经网络训练进程对应一个子图数据,依据该子图数据,进行分布式图神经网络训练。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。

如图2所示,为本申请实施例提供的一种基于Apache Spark架构实现的数据处理系统的架构示意图,如图2所示,该数据处理系统可以包括Driver(驱动器)、集群管理器(Cluster Manager)、worker节点以及分布式内存管理系统。

在该实施例中,将大数据处理框架Spark和图神经网络框架DGL进行结合,并引入共享内存的分布式内存管理系统,可以在一套Spark Application中完成图数据的预处理、图神经网络模型的训练并获取Embedding以及Spark ML的训练和预测。

下面对具体实现流程进行说明。

请参见图3,为本申请实施例提供的一种图数据挖掘方法的流程示意图,如图3所示,该图数据挖掘方法可以包括以下步骤:

1、读取原始数据进行预处理,得到结构化的构图数据(即上述图结构数据)和特征数据。

示例性的,可以在Spark程序中,定义图神经网络模型、Spark ML模型以及相关训练参数,并读取相关数据进行预处理成为DataFrame或RDD(Resilient DistributedDataset,弹性分布式数据集)格式。

示例性的,预处理后的数据可以包括结构化的构图数据(通常形式是二元组或三元组,每个元组表示的是图上的一条边,在DataFrame中可以表示为两列或三列)。

可选地,预处理后的数据还可以包括特征数据

示例性的,特征数据可以包括图中每个结点或者关系的属性数据。例如,假设图是一个社交网络图,则每个结点可以为一个人,其特征数据可以包括人的年龄、性别等。

示例性的,最后通过调用fit_gnn()接口,传入构图数据和特征数据,后续系统将自动完成子图的切分,数据格式的转换与存储以及图神经网络的训练。

2、根据DGL对分布式GNN训练的要求,将构图数据和特征数据进行子图切分,最终得到分布式GNN训练所需的子图数据和子图对应的特征数据等。

示例性的,DGL子图的切分首先需要对各结点根据某种条件进行分区的分配,接着再包含各子图需要的数据。

示例性的,进行子图数据切分时,需要依据整图信息进行,子图切分需要尽量保证不破坏原图中结点之间的关系。

示例性的,该数据可以包括但不限于:结点原始ID、重新分配后的新ID、本地结点标志位、本地结点特征、标签、mask等信息以及该结点所有的入射边。

举例来说,以图4所示图结构为例,假设全图被切分为3个子图,切分策略为随机切分,即使用随机分配结点方式,1、4、7结点被分配到一号子图;2、3、5结点分配到二号子图;6、8、9结点分配到三号子图。则各子图结构如图所示:以一号子图为例,其他未标色结点属于其他子图维护,标记为蓝色的结点1、4、7都是属于本子图的结点(本地结点)。需要将这些本地结点的特征、标签、mask等数据提取,与一号子图的拓扑关系一同存入分布式内存管理系统。

此外,一号子图中各节点需要维护其在全局分配后的新ID。例如,1号结点的新ID为1;4号结点新ID为2;7号结点新ID为3;2号结点的新ID为4;3号结点新ID为5;6号结点的新ID为7;8号结点的新ID为8

二号子图、三号子图的情况以此类推。

需要说明的是,新ID的分配可以依据子图的划分,依据结点所归属的子图,进行全局分配。

以图4所示切分结果为例,可以依据各结点归属的子图,分别将各结点按照ID进行排序:即一号子图的1、4、7,二号子图的2、3、5,以及三号子图的6、8、9,然后可以依次为各结点分配新的ID,即1、4、7、2、3、5、6、8、9的新ID依次为1、2、3、4、5、6、7、8、9。

被切分至各子图中的结点

示例性的,采用Spark加载全图,再根据Spark提供的一系列算子可以得到上述子图,最终切分效果是在各worker节点的Executor(执行器)内维护对应部分的子图数据。

3、对子图数据和子图对应的特征数据,进行数据格式的转换和存储。

示例性的,针对每个数据分区中的预处理数据(即子图数据和子图对应的特征数据),将其转化为Apache Arrow格式,并存储到分布式内存管理系统中,并保证前述子图数据和对应的特征数据存储于分布式内存管理系统相应节点中,以实现内存共享。

4、根据用户定义的GNN模型及相关训练参数构建出用于分布式GNN模型训练的函数(即上述分布式图神经网络训练函数)。

示例性的,分布式GNN模型训练函数主要逻辑可以包括:

分布式训练的初始化、训练数据的读取和构建、子图采样进行mini-batch模型训练与验证、训练日志的打印以及推理得到的Embedding存储等。

示例性的,分布式GNN模型训练函数可以在Spark Task中通过python进程调用。

5、在Spark中的Task中使用Horovod启动分布式DGL,各训练进程读取上述存储在分布式内存管理系统中的子图数据,完成构图与图神经网络模型的Embedding训练和推理,并将得到的Embedding存储到分布式内存管理系统中。

示例性的,可以依据设置的DGL分布式训练GPU卡数,构建出一个RDD,RDD的分区数量设置为与GNN分布式训练所需GPU卡数相同,从而保证一个Task绑定一张GPU。之后通过mapPartition(映射分区,一种映射函数)方法在RDD上启动Task(任务),Task实际执行的是Horovod分布式训练,即步骤4中构建的训练图神经网络的函数(即上述分布式GNN模型训练函数)。

6、读取存储于分布式内存管理系统的Embedding,使用用户定义的Spark ML模型完成模型训练,实现分类预测。

示例性的,在分布式训练得到Embedding并写入内存管理系统后,在Spark中读取分布式内存管理系统中的Embedding并进行数据格式的转化,使用用户定义的逻辑完成Spark ML模型的训练和预测。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

请参见图5,为本申请实施例提供的一种图数据挖掘装置的结构示意图,如图5所示,该图数据挖掘装置可以包括:

预处理单元510,用于对原始数据进行预处理,得到图结构数据;

切分单元520,用于依据分布式图神经网络的训练策略,对所述图结构数据进行切分,得到多个子图数据,并将所述子图数据存储分布式内存管理系统;

训练单元530,用于构建分布式图神经网络训练函数,利用所述分布式图神经网络训练函数,依据所述分布式内存管理系统中存储的子图数据,进行分布式图神经网络模型训练,并将得到的Embedding存储到所述分布式内存管理系统;

挖掘单元540,用于依据所述分布式内存管理系统中保存的所述Embedding进行ML模型的训练和预测。

在一些实施例中,同一子图数据存储在同一工作worker节点的内存中,所述多个子图数据存储在至少两个不同worker节点的内存中。

在一些实施例中,不同子图的数据存储在不同worker节点的内存中;

或,

至少一个worker节点的内存中存储有至少两个子图数据,该worker节点运行有至少两个分布式图神经网络训练进程,一个分布式图神经网络训练进程对应一个子图数据。

在一些实施例中,所述切分单元520依据分布式图神经网络的训练策略,对所述图结构数据进行切分,包括:

依据目标图深度学习框架对分布式图神经网络训练的要求,对图结构数据进行切分;其中,所述目标图深度学习框架为预先配置的分布式图神经网络训练使用的图深度学习框架。

在一些实施例中,所述训练单元530构建分布式图神经网络训练函数,包括:

依据预先定义的图神经网络模型以及与所述图神经网络模型关联的训练参数,构建所述分布式图神经网络训练函数;

其中,所述分布式图神经网络训练函数的逻辑包括:

分布式训练的初始化、训练数据的读取和构建、子图采样进行mini-batch模型训练与验证、训练日志的打印以及推理得到的Embedding存储。

在一些实施例中,所述预处理单元510对原始数据进行预处理,得到图结构数据,包括:

对原始数据进行预处理,得到图结构数据以及所述图结构数据对应的特征数据;

所述切分单元520依据分布式图神经网络的训练策略,对所述图结构数据进行切分,得到多个子图数据,并将所述子图数据存储分布式内存管理系统,包括:

依据分布式图神经网络的训练策略,对所述图结构数据以及所述图结构数据对应的特征数据进行切分,得到多个子图数据,以及各所述子图数据对应的特征数据,并将所述子图数据以及所述子图数据对应的特征数据关联存储。

请参见图6,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可包括处理器601、存储有机器可执行指令的存储器602。处理器601与存储器602可经由系统总线603通信。并且,通过读取并执行存储器602中与图数据挖掘控制逻辑对应的机器可执行指令,处理器601可执行上文描述的图数据挖掘方法。

本文中提到的存储器602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

在一些实施例中,还提供了一种机器可读存储介质,如图6中的存储器602,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的图数据挖掘方法。例如,所述机器可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

技术分类

06120113693849