
摘要
学习节点的连续表示最近在学术界和工业界引起了越来越多的关注,这归因于其在各种应用中的简单性和有效性。现有的大多数节点嵌入算法和系统都能够处理包含数十万或数百万个节点的网络。然而,如何将其扩展到包含数千万甚至数亿个节点的网络仍然是一个具有挑战性的问题。本文提出了一种高性能的CPU-GPU混合系统——GraphVite,用于训练节点嵌入,通过协同优化算法和系统来实现这一目标。在CPU端,通过在网络中在线进行随机游走并行生成增强的边样本,作为训练数据。在GPU端,提出了一种新颖的并行负采样方法,利用多个GPU同时训练节点嵌入,而无需大量的数据传输和同步。此外,还提出了一种高效的协作策略,以进一步降低CPU和GPU之间的同步成本。在多个真实世界网络上的实验表明,GraphVite非常高效。对于包含100万个节点和500万个边的网络,在配备4个GPU的单机上仅需约1分钟即可完成训练;而对于包含6600万个节点和18亿个边的网络,则需要大约20小时。与当前最快的系统相比,GraphVite的速度提高了约50倍,且没有牺牲性能。
代码仓库
DeepGraphLearning/graphvite
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| link-prediction-on-fb15k | SimplE | Hits@1: 0.721 Hits@10: 0.876 Hits@3: 0.818 MR: 74 MRR: 0.779 training time (s): 2105 |
| link-prediction-on-fb15k-237 | RotatE | Hits@1: 0.217 Hits@10: 0.511 Hits@3: 0.347 MR: 176 MRR: 0.314 training time (s): 857 |
| link-prediction-on-wn18 | SimplE | Hits@1: 0.944 Hits@10: 0.954 Hits@3: 0.950 MR: 412 MRR: 0.948 training time (s): 1042 |
| node-classification-on-youtube | LINE | Macro-F1@2%: 33.69 Micro-F1@2%: 40.61 runtime (s): 70.09 |