第6章:大型图上的随机训练

(中文版)

如果我们有一个庞大的图,比如说有数百万甚至数十亿个节点或边,通常如第5章:训练图神经网络中描述的全图训练将无法工作。考虑一个具有隐藏状态大小\(H\)\(L\)层图卷积网络在\(N\)节点图上运行。存储中间隐藏状态需要\(O(NLH)\)的内存,对于大的\(N\),很容易超过一个GPU的容量。

本节提供了一种执行随机小批量训练的方法,我们不需要将所有节点的特征都放入GPU中。

邻域采样方法概述

邻域采样方法通常如下工作。对于每个梯度下降步骤,我们选择一小批节点,这些节点在第\(L\)层的最终表示将被计算。然后我们取它们在第\(L-1\)层的所有或部分邻居。这个过程一直持续到我们到达输入层。这个迭代过程从输出开始,向后工作到输入,构建依赖图,如下图所示:

Imgur

通过这种方式,可以节省在大图上训练GNN的工作量和计算资源。

DGL 提供了一些邻域采样器和用于训练 GNN 的邻域采样管道,以及自定义采样策略的方法。

Roadmap

本章首先介绍了在不同场景下随机训练GNN的部分。

剩余部分涵盖了更高级的主题,适合那些希望开发新的采样算法、与迷你批次训练兼容的新GNN模块,并了解如何在迷你批次中进行评估和推理的人。

以下是实现和使用邻域采样的性能提示: