![4477a963c62797940402abfae101f11a.png](https://img-blog.csdnimg.cn/img_convert/4477a963c62797940402abfae101f11a.png)
论文地址:Zhu Z, Xu S, Tang J, et al. GraphVite: A High-Performance CPU-GPU Hybrid System for Node Embedding[C]//The World Wide Web Conference. ACM, 2019: 2494-2504.
开源代码:https://github.com/DeepGraphLearning/graphvite
一、简介
GraphVite是一个通用的图嵌入系统/框架,主打多CPU多GPU快速/超大规模训练。这是一款单机框架,不支持分布式集群,主要是为没有分布式集群的用户打造。最大特点是速度快:与目前最快的框架相比,GraphVite在性能几乎没有任何牺牲的情况下,速度提高了约50倍(图1中以LINE算法作为对比)。其次,GraphVite在单机四卡上,最大可以训练一张6千万点,18亿边的图,训到收敛也只需要不到1天的时间。
![e99216d9aee0685e5dd3edb69c030d1c.png](https://img-blog.csdnimg.cn/img_convert/e99216d9aee0685e5dd3edb69c030d1c.png)
目前,GraphVite 已为 3 种任务提供了完整的训练和评估流程,包括:节点嵌入、知识图谱嵌入和图形 & 高维数据可视化。
![7920b51338d599eb922c7ba3e753fdf3.png](https://img-blog.csdnimg.cn/img_convert/7920b51338d599eb922c7ba3e753fdf3.png)
GraphVite内置了9个模型:图嵌入算法DeepWalk、LINE、Word2Vec,知识图谱算法TransE,DistMult,ComplEx 和 RotatE,高维数据可视化算法LargeVis。
二、设计思路
图嵌入算法通常包括两个阶段:网络增强和嵌入训练。网络增强阶段先对原始网络用随机游走产生增强网络,然后从增强网络中采样正边,这一阶段涉及到大量的随机访问,而CPU在随机访问上GPU性能好出太多,所以网络增强阶段应该放在CPU上进行。嵌入训练主要是通过上一阶段生成的样本训练节点嵌入。这一阶段主要的运算是矩阵计算,所以应该放在GPU上。
对于大多数现有算法,网络增强和嵌入训练两阶段是顺序进行的,而每个阶段是用多个CPU线程并行。如图3所示: