描述
GraphSAINT 是一个通用且灵活的框架,专为大规模图上的图神经网络 (GNN) 训练而设计。它通过一种采用图采样的新颖小批量训练方法与众不同,这与传统的层采样方法有所区别。这种图采样技术允许在小的采样子图上构建完整的 GNN 层,而不是在层内进行采样。这种视角上的根本转变带来了几个关键优势。
通过简单而有效的归一化技术,可以提高准确性,从而减轻图采样引入的偏差。此外,GraphSAINT 提出了轻量级的图采样器,它们根据拓扑特征保留重要的邻居,从而解决了任何采样过程中固有的信息丢失问题。这也可以看作是一种数据增强或训练正则化的形式。
通过解决层采样方法中常见的“邻居爆炸”问题,效率得到了显著提高。通过在子图上构建完整、未采样的 GNN 层,邻居的数量与网络深度无关,将每个小批量的计算成本从相对于 GNN 深度的指数级降低到线性级。这还大大减少了分布式环境中的通信开销。
灵活性是 GraphSAINT 的核心原则。在小批量子图上的层传播与在完整图上的传播非常相似,从而可以无缝训练为完整图设计的 GNN 架构。这与一些仅支持有限 GNN 架构的层采样算法形成对比。可扩展性涵盖了图大小、模型大小和并行资源。子图大小不必与图大小成比例增长,这使得大型图能够放入 GPU 内存中。训练成本与 GNN 的宽度和深度呈线性关系,并且图采样具有高度并行性。
该存储库提供了 TensorFlow 和 PyTorch 的 Python 实现,以及用于并行训练技术的 C++ 实现。它支持 GraphSAGE、GAT 和 JK-Net 等多种 GNN 架构,以及 Node、Edge、RW 和 MRW 等多种图采样器。该框架专为处理大型图数据集并需要高效准确 GNN 训练的研究人员和实践者而设计。
GraphSAINT亮点
用于大型图深度 GNN 的小批量训练
基于图采样的归纳学习方法
使用图采样的新颖小批量训练方法
通过归一化消除图采样引入的偏差
轻量级图采样器以保留重要邻居
解决“邻居爆炸”问题以提高效率
在图大小、模型大小和并行资源方面具有可扩展性
支持多种 GNN 架构 (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
支持各种图采样器 (Node, Edge, RW, MRW, Full graph)
提供 TensorFlow 和 PyTorch 实现
包含用于并行训练技术的 C++ 实现
便于为自己的数据集和采样器进行定制
GraphSAINT入门
访问模型:克隆 GitHub 存储库。
设置环境:安装依赖项,包括 Python、TensorFlow/PyTorch、Cython 和 g++。
编译采样器:运行 `python graphsaint/setup.py build_ext --inplace`。
准备数据集:将图数据格式化为 `adj_full.npz`、`adj_train.npz`、`role.json`、`class_map.json` 和 `feats.npy`。
配置训练:使用 `./train_config/` 中的 YAML 配置文件设置超参数。
运行训练:使用 `python -m graphsaint.<tensorflow/pytorch>_version.train` 并带有适当的数据、配置和 GPU 使用标志来执行训练脚本。
GraphSAINT的使用案例
- 大规模图训练
- 图上的归纳学习
- 图表示学习
- 节点分类
- 链接预测
- 图级预测
- 自定义 GNN 开发







