单机大规模知识图谱嵌入系统及方法技术方案

技术编号:30704043 阅读:15 留言:0更新日期:2021-11-06 09:45
本发明专利技术提供了一种单机大规模知识图谱嵌入方法及系统,包括:步骤S1:根据关系对知识图谱进行划分操作,得到多个子知识图谱;步骤S2:将各个子知识图谱与GPU绑定,利用GPU对子知识图谱进行训练,得到知识图谱中每个实体与关系对应的嵌入向量。相比于传统使用分布式集群来进行大规模知识图谱嵌入训练的方法,本发明专利技术使用非易失性内存大容量的特性,并且合理分配知识图谱训练过程中的数据在非易失性内存、GPU显存与DRAM的位置,能够克服分布式训练过程中网络通信所带来的性能开销,使得在不影响最终嵌入向量质量的情况下,总体训练效率提升40%

【技术实现步骤摘要】
单机大规模知识图谱嵌入系统及方法


[0001]本专利技术涉及知识图谱嵌入训练以及异构计算领域,具体地,涉及一种单机大规模知识图谱嵌入系统及方法,更为具体地,主要是利用非易失性内存与GPU,使得在单机上能对大规模知识图谱进行快速训练。

技术介绍

[0002]专利文献CN112685573A(申请号:202110013880.6)公开了一种知识图谱嵌入训练方法和相关装置,方法包括:获取知识图谱图结构中的网络拓扑信息;根据相似度计算方法和所述网络拓扑信息,计算所述知识图谱图中不同实体节点之间的第一相似度距离;基于所述第一相似度距离、所述知识图谱图中正样例和负样例包括的实体节点,计算所述正样例和负样例之间的第二相似度距离;根据各所述负样例对应的所述第二相似度距离,计算该负样例对应的综合权重;根据所述正样例、所述负样例和各所述负样例和对应的综合权重进行对应类型的模型训练,得到知识图谱嵌入表示。
[0003]在知识图谱嵌入训练任务中,所需要处理的知识图谱规模越来越大,单机的内存已经不能容下处理较大规模知识图谱嵌入训练过程中的各种数据。与此同时,知识图谱嵌入训练需要有一定算力支持,仅仅使用CPU来进行知识图谱嵌入训练动辄需要上月的时间。为了处理知识图谱嵌入训练中的这两个问题,以往的做法通常是使用分布式来进行大规模知识图谱嵌入训练。通过在训练之前对知识图谱进行划分操作,把划分之后的子知识图谱交给各个分布式计算节点进行嵌入训练,解决了在进行大规模知识图谱嵌入训练的过程中,单机服务器容量有限的问题;而针对CPU算力有限的问题,以往的工作引入GPU来进行知识图谱嵌入训练中的梯度计算、更新操作。
[0004]利用分布式集群来进行大规模知识图谱嵌入训练有两个缺点,第一,无论是自己租用还是搭建分布式集群都是一笔很大的开销;第二,在利用分布式集群进行知识图谱嵌入任务的过程中,需要通过网络进行计算节点之间的数据交换,这会对整个嵌入训练速度造成较大影响。而非易失性内存具有容量大、读写速度与DRAM同一个数量级的优点,这让在单机上进行知识图谱嵌入训练成为了可能。本项目利用非易失性内存大容量的特性,同时引入GPU,将对算力要求较高的操作卸载到GPU上执行,实现了一个完整的在单机上对大规模知识图谱进行嵌入训练的端到端的设计方案。
[0005]非易失性内存能够达到与DRAM同一个数量级的读写性能,但是分别针对读操作与写操作,两者又有不同的差异。具体而言,非易失性内存在读操作上速度与DRAM相差不大,但是在写操作上,针对不同的负载,要比DRAM慢3

7倍。同时在本项目中又有GPU上的显存,GPU上的显存可以分为共享内存、本地内存、常量内存等等,每一种都适用于不同的读写操作。本项目针对非易失性内存,DRAM,GPU中的显存对不同类型读写操作的性能差异,同时结合在知识图谱嵌入训练过程中所用到的各个数据的特点,对这些数据在上述几种内存中的数据分布,从而既能利用非易失性内存大容量的特性,又能在单机上快速进行知识图谱嵌入训练。
[0006]在知识图谱嵌入训练的过程中,为了能根据实体或者关系出现的频率进对实体或者关系进行采样,需要用到别名表这一数据结构。别名表这一数据结构能够实现在O(1)的时间内按照概率对离散事件进行采样空间,其复杂度是O(n),与实体或者关系的数目相同。这使得别名表与知识图谱原始数据占用了较多的内存空间。针对这一情况,我们对别名表进行了数据压缩的操作。我们观察到对于一般的社交网络图数据,其中的顶点出现的频率满足长尾分布,而对于我们的知识图谱数据,而是满足长尾分布。针对这种情况,我们对别名表进行数据压缩,在不影响最终嵌入向量质量的情况下,减少别名表所占用的空间。
[0007]在知识图谱嵌入训练的过程中,需要进行负采样的操作。负采样的具体流程是首先根据别名表对实体或者关系进行采样;然后将获取采样得到的实体或者关系的嵌入向量;而后将这一部分嵌入向量复制到GPU显存中,开始训练;最后将训练好的嵌入向量写回DRAM中,并按照映射关系对原始嵌入向量进行更新。在这一部分操作中,无论是根据获取采样得到的实体或者关系对应的的嵌入向量,还是最后按照映射关系对原始嵌入向量进行更新,都需要大量GPU的介入。而且由于这两步操作是对嵌入向量的离散读写,其读写速度也比较慢。针对这一现象,我们利用CUDA中的统一内存空间,将关系与实体的嵌入向量映射到DRAM与GPU都能能访问的内存空间上。通过这一方式既减少了负采样过程中对CPU资源的消耗,又将CPU对DRAM的读写操作转化为PCIe的读写操作,加快了读写速度。

技术实现思路

[0008]针对现有技术中的缺陷,本专利技术的目的是提供一种单机大规模知识图谱嵌入方法及系统。
[0009]根据本专利技术提供的一种单机大规模知识图谱嵌入方法,包括:
[0010]步骤S1:根据关系对知识图谱进行划分操作,得到多个子知识图谱;
[0011]步骤S2:将各个子知识图谱与GPU绑定,利用GPU对子知识图谱进行训练,得到知识图谱中每个实体与关系对应的嵌入向量。
[0012]优选地,所述步骤S2采用:
[0013]步骤S2.1:读取每个子知识图谱的原始数据,并存放在知识图谱类中,将当前知识图谱类数据存放在非易失性内存中;
[0014]步骤S2.2:为每个子知识图谱中的实体与关系进行嵌入向量的初始化,初始化的嵌入向量存放在DRAM中,且声明实体的嵌入向量为统一内存空间;
[0015]步骤S2.3:初始化每个子知识图谱对应的采样池,每个采样池都包含两份缓存,GPU处理其中一个缓存池数据,CPU为另一个缓存池采样数据;
[0016]步骤S2.4:将每个知识图谱的初始化嵌入向量传输到相应的GPU的共享内存中,将每个子知识图谱实体的别名表传入相应GPU的共享内存中,将逻辑表数据写入GPU的常量内存中;
[0017]步骤S2.5:CPU线程在对应的子知识图谱中进行正采样操作,搜集到正采样得到的实体与关系的嵌入向量,而后将正采样得到的数据传输到GPU共享内存中;
[0018]步骤S2.6:GPU根据相应子知识图谱中实体的别名表进行负采样,并通过PCIe读入采样得到的实体对应的嵌入向量;
[0019]步骤S2.7:GPU利用共享内存中的正采样数据与负采样数据,根据逻辑表进行梯度
下降的前向传播与反向传播,更新正采样样例与负采样样例中实体与关系对应的嵌入向量;
[0020]步骤S2.8:将更新的嵌入向量写入DRAM中,CPU根据映射关系将GPU传回的嵌入向量写入原对应的嵌入向量中,完成对嵌入向量的更新;重复触发步骤S2.1至步骤S2.8,直至嵌入向量收敛。
[0021]优选地,在GPU端进行第n次训练的过程中,CPU端准备第n+1次训练所需要的数据。
[0022]优选地,所述步骤S2.5采用:使用多线程采样三元组,并搜集三元组中的关系与实体对应的嵌入向量,放入采样池中的一个缓存中,而后将搜集得到的嵌入向量传到相应的GPU共本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单机大规模知识图谱嵌入方法,其特征在于,包括:步骤S1:根据关系对知识图谱进行划分操作,得到多个子知识图谱;步骤S2:将各个子知识图谱与GPU绑定,利用GPU对子知识图谱进行训练,得到知识图谱中每个实体与关系对应的嵌入向量。2.根据权利要求1所述的单机大规模知识图谱嵌入方法,其特征在于,所述步骤S2采用:步骤S2.1:读取每个子知识图谱的原始数据,并存放在知识图谱类中,将当前知识图谱类数据存放在非易失性内存中;步骤S2.2:为每个子知识图谱中的实体与关系进行嵌入向量的初始化,初始化的嵌入向量存放在DRAM中,且声明实体的嵌入向量为统一内存空间;步骤S2.3:初始化每个子知识图谱对应的采样池,每个采样池都包含两份缓存,GPU处理其中一个缓存池数据,CPU为另一个缓存池采样数据;步骤S2.4:将每个知识图谱的初始化嵌入向量传输到相应的GPU的共享内存中,将每个子知识图谱实体的别名表传入相应GPU的共享内存中,将逻辑表数据写入GPU的常量内存中;步骤S2.5:CPU线程在对应的子知识图谱中进行正采样操作,搜集到正采样得到的实体与关系的嵌入向量,而后将正采样得到的数据传输到GPU共享内存中;步骤S2.6:GPU根据相应子知识图谱中实体的别名表进行负采样,并通过PCIe读入采样得到的实体对应的嵌入向量;步骤S2.7:GPU利用共享内存中的正采样数据与负采样数据,根据逻辑表进行梯度下降的前向传播与反向传播,更新正采样样例与负采样样例中实体与关系对应的嵌入向量;步骤S2.8:将更新的嵌入向量写入DRAM中,CPU根据映射关系将GPU传回的嵌入向量写入原对应的嵌入向量中,完成对嵌入向量的更新;重复触发步骤S2.1至步骤S2.8,直至嵌入向量收敛。3.根据权利要求1所述的单机大规模知识图谱嵌入方法,其特征在于,在GPU端进行第n次训练的过程中,CPU端准备第n+1次训练所需要的数据。4.根据权利要求2所述的单机大规模知识图谱嵌入方法,其特征在于,所述步骤S2.5采用:使用多线程采样三元组,并搜集三元组中的关系与实体对应的嵌入向量,放入采样池中的一个缓存中,而后将搜集得到的嵌入向量传到相应的GPU共享内存中。5.根据权利要求2所述的单机大规模知识图谱嵌入方法,其特征在于,根据每个子知识图谱中的实体出现的频率制作相应的别名表,并对别名表进行压缩。6.根据权利要求5所述的单机大规模知识图谱嵌入方法,其特征在于,所述对别名表进行压缩采用:步骤S3:统计每个子知识图谱中实体出现的概率,根据出现的概率,对实体进行排序,得到排好序的数组sorted_array;步骤S4:根据知识图谱数据中实体出现的概率符合幂律分布,利用Kolmogorov

Smirnov方法,计算得到常数a;y=x

a (1)其中,y表示概率;x表示实体的度;a表示常数;
步骤S5:基于计算得到的常数a,将实体的度x从1到max(x)分为n份,让每一份的面积相同,均为1/n;步骤S6:利用大小为n的偏移数组,数组中的每个元素记录下每一份开始的x在sorted_array中的偏移。7.根据权利要求6所述的单机大规模知识图谱嵌入方法,其特征在于,所述步骤S2.6采用:在负采样的过程中,随机取一个1

n的随机数m,根据m与偏移数组,得到数组sorted_array中的第m块,在第m块中随机取一个节点,完成实体采样。8.根据权利要求2所述的单机大规模知识图谱嵌入方法,其特征在于,所述步骤S2.6采用:步骤S2.6.1:在声明实体所对应的嵌入向量时,将当前嵌入向量标记为统一内存空间;步骤S2.6.2:在进行负采样时,在CPU端根据压缩后别名表的采样操作对实体进行采样,得到...

【专利技术属性】
技术研发人员:姚建国程建南张亚林
申请(专利权)人:上海燧原科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1