谷歌、阿里、腾讯等在大规模图神经网络上必用的GNN加速算法(一)

简介: 谷歌、阿里、腾讯等在大规模图神经网络上必用的GNN加速算法(一)

今天我们来聊一聊在大规模图神经网络上必用的GNN加速算法。GNN在图结构的任务上取得了很好的结果,但由于需要将图加载到内存中,且每层的卷积操作都会遍历全图,对于大规模的图,需要的内存和时间的开销都是不可接受的。


现有一些用于加速GNN的算法,基本思路是使用mini-batch来计算,用min-batch的梯度估计full-batch的梯度,通过多次迭代达到基本一致的效果。


根据使用的方法不同,大致分为以下三类:


  • Neighbor sampling


  • Layer-wise sampling


  • Subgraph sampling


1.Neighbor sampling


1.1 GraphSage



324c68543b8f7201aa14c8837f279a59.png


论文标题:Inductive Representation Learning on Large Graphs


论文来源:NIPS2017


论文方向:图表示学习


论文链接:https://arxiv.org/abs/1706.02216


06d4ed491fba9dd21f1cc3800f52b378.png


GraphSAGE 是 2017 年提出的一种图神经网络算法,解决了 GCN 网络的局限性: GCN 训练时需要用到整个图的邻接矩阵,依赖于具体的图结构,一般只能用在直推式学习 Transductive Learning。GraphSAGE 使用多层聚合函数,每一层聚合函数会将节点及其邻居的信息聚合在一起得到下一层的特征向量,GraphSAGE 采用了节点的邻域信息,不依赖于全局的图结构。


GraphSAGE 的运行流程如上图所示,可以分为三个步骤:


1、对图中每个顶点邻居顶点进行采样;


2、根据聚合函数聚合邻居顶点蕴含的信息;


3、得到图中各顶点的向量表示供下游任务使用;


105b3d8848e8b2ecabe5bf3b88fc19f2.png


出于对计算效率的考虑,对每个顶点采样一定数量的邻居顶点作为待聚合信息的顶点。设采样数量为k,若顶点邻居数少于k,则采用有放回的抽样方法,直到采样出k个顶点。若顶点邻居数大于k,则采用无放回的抽样。


即为每个结点均匀地抽样固定数量的邻居结点,使用Batch去训练。


复杂度正比于卷积层数 的指数。


1.2 ScalableGCN



阿里妈妈的Euler中使用的加速算法,主要思想是用空间换时间。对于 阶GCN模型,开辟存储空间: ,将mini-batch SGD中各顶点最新的前阶embedding存储起来,前向Aggregate的时候直接查询缓存。


同时也开辟存储空间 ,来存储 δδ ,根据链式法则来获得参数梯度从而更新 。


5ea08868d23e7159178a37b7128bc33b.png


970fcb0ce008edeeb5c2ae95c265626b.png


我们在两个开源的数据集Reddit和PPI上验证了我们的工作。由于GraphSAGE的简单和通用性,我们选择其为baseline。并且为了对齐与其论文中的实验结果,我们在共享了GraphSAGE和ScalableGCN代码中的大多数模块,并利用Tensorflow中的Variable存储c5ec37553ecfe1856f93bf9167094de3.pngbe96e559394daae3f8ce79ad5eca310d.png,使用累加作为算子。

我们使用均匀分布来初始化be96e559394daae3f8ce79ad5eca310d.pngc5ec37553ecfe1856f93bf9167094de3.png并将初始化为0。对于每阶的卷积操作,我们采样10个邻接顶点。所有的实验均使用512的batch size训练20个epoch。在评估阶段,我们统一维持GraphSAGE的方法进行Inference。以下是选择Mean作为AGG函数的micro-F1 score:


PPI:

9]Z%TQA7C0{EEJ~5X32}D_2.png


Reddit:

WS]@FLY)F]7[TTMX5E@7(W7.png


WS]@FLY)F]7[TTMX5E@7(W7.pngWS]@FLY)F]7[TTMX5E@7(W7.png

可以看到ScalableGCN训练出来模型与GraphSAGE的训练结果相差很小,同时可以取得多层卷积模型的收益。


在时间上,以下是8 core的机器上Reddit数据集(23万顶点)每个mini-batch所需的训练时间:


14`I~9K}CPH`S}6H1AQ4]O1.png

14`I~9K}CPH`S}6H1AQ4]O1.png


注意到ScalableGCN的训练时间相对于卷积模型层数来说是线性的。


总结:



GCN是目前业界标准的网络图中特征抽取以及表示学习的方法,未来在搜索、广告、推荐等场景中有着广泛的应用。多阶的GCN的支持提供了在图中挖掘多阶关系的能力。ScalableGCN提出了一种快速训练多阶GCN的方法,可以有效的缩短多阶GCN的训练时间,并且适用于大规模的稀疏图。本方法与对采样进行裁剪和共享的方法也并不冲突,可以同时在训练中使用


1.3 VR-GCN



a8bb6efddaf178c6cdfe029de67d3a94.png


论文标题:Stochastic Training of Graph Convolutional Networks with Variance Reduction


论文来源:ICML2018


论文方向:图卷积网络


论文链接:https://arxiv.org/abs/1706.02216


**主要思路:**利用结点历史表示 来作为控制变量(control variate)来减小方差,从而减小batch training中的采样邻居的数量。


0d3a0aaf5bd61764d2a200144921035b.png


使用蒙特卡方法来洛近似 ,而 上的平均计算是可接受的(不用递归)。


因此其矩阵表示为:


eab5d096c2cd6ee7f9b549228102bb97.png


该算法具有理论保障,可以获得0偏差和0方差的结果,且无论每层邻居结点的抽样个数 是多少,都不影响 GCN收敛到局部最优。(理论细节请看原文,较为复杂,不展开)


因此每个结点仅仅采样两个邻居,极大提升模型训练效率的同时,也能保证获得良好的模型效果。


相关文章
|
11天前
|
算法 测试技术 量子技术
时隔5年,谷歌再创量子霸权里程碑!RCS算法让电路体积增加一倍
谷歌在量子计算领域取得新突破,其研究人员在《自然》杂志上发表论文《随机电路采样中的相变》,介绍了一种名为随机电路采样(RCS)的算法。该算法通过优化量子关联速度、防止经典简化和利用相变现象,使量子电路体积在相同保真度下增加一倍,为量子计算的发展树立了新的里程碑。实验结果显示,RCS算法在67个量子比特和32个周期的条件下,实现了1.5×10^-3的保真度。这一成果不仅提升了量子计算的效率,也为解决噪声问题提供了新思路。
26 3
|
1月前
|
算法 前端开发 Java
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
这篇文章总结了单链表的常见面试题,并提供了详细的问题分析、思路分析以及Java代码实现,包括求单链表中有效节点的个数、查找单链表中的倒数第k个节点、单链表的反转以及从尾到头打印单链表等题目。
33 1
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
|
3月前
|
达摩院 供应链 JavaScript
网络流问题--仓储物流调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文通过使用MindOpt工具优化仓储物流调度问题,旨在提高物流效率并降低成本。首先,通过考虑供需匹配、运输时间与距离、车辆容量、仓库储存能力等因素构建案例场景。接着,利用数学规划方法,包括线性规划和网络流问题,来建立模型。在网络流问题中,通过定义节点(资源)和边(资源间的关系),确保流量守恒和容量限制条件下找到最优解。文中还详细介绍了MindOpt Studio云建模平台和MindOpt APL建模语言的应用,并通过实例展示了如何声明集合、参数、变量、目标函数及约束条件,并最终解析了求解结果。通过这些步骤,实现了在满足各仓库需求的同时最小化运输成本的目标。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer 能代替图神经网络吗?
Transformer模型的革新性在于其自注意力机制,广泛应用于多种任务,包括非原始设计领域。近期研究专注于Transformer的推理能力,特别是在图神经网络(GNN)上下文中。
103 5
|
4月前
|
机器学习/深度学习 数据采集 人工智能
算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。
**LeNet 摘要** - LeNet 是 Yann LeCun 在 1989 年提出的卷积神经网络,用于手写数字识别,是深度学习和计算机视觉的里程碑。 - 网络结构包括卷积层(C1, C3, C5)、池化层(S2, S4)和全连接层(F6),处理 32x32 灰度图像,最终分类为 10 类。 - 卷积层提取特征,池化层降低维度,全连接层负责分类。激活函数主要使用 Sigmoid。 - LeNet 在 MNIST 数据集上表现优秀,但现代网络常使用 ReLU 激活和更深结构。 - LeNet 的局限性包括网络较浅、Sigmoid 梯度消失问题和平均池化,但其创新为后续 CNN 发展铺平道路
54 1
算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。
|
4月前
|
机器学习/深度学习 搜索推荐 知识图谱
图神经网络加持,突破传统推荐系统局限!北大港大联合提出SelfGNN:有效降低信息过载与数据噪声影响
【7月更文挑战第22天】北大港大联手打造SelfGNN,一种结合图神经网络与自监督学习的推荐系统,专攻信息过载及数据噪声难题。SelfGNN通过短期图捕获实时用户兴趣,利用自增强学习提升模型鲁棒性,实现多时间尺度动态行为建模,大幅优化推荐准确度与时效性。经四大真实数据集测试,SelfGNN在准确性和抗噪能力上超越现有模型。尽管如此,高计算复杂度及对图构建质量的依赖仍是待克服挑战。[详细论文](https://arxiv.org/abs/2405.20878)。
80 5
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
|
4月前
|
达摩院 安全 调度
网络流问题--交通调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了如何利用数学规划工具MindOpt解决交通调度问题。交通调度涉及网络流分析,考虑道路容量、车辆限制、路径选择等因素,以实现高效运行。通过建立数学模型,利用MindOpt云平台和建模语言MAPL,设定流量最大化目标并确保流量守恒,解决实际的调度问题。案例展示了如何分配车辆从起点到终点,同时满足道路容量约束。MindOpt Studio提供在线开发环境,支持模型构建和求解,帮助优化大规模交通调度。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 不愧是腾讯,问基础巨细节 。。。
**摘要:** 本文介绍了Adaboost算法的基本概念、工作原理和数学基础,它是由 Freund 和 Schapire 在 1996 年提出的迭代机器学习算法,通过组合多个弱分类器形成强分类器。Adaboost 通过调整样本权重,重点关注被错误分类的样本,以提高分类性能。文章还提供了代码示例,展示了如何使用决策树作为弱分类器,并在鸢尾花数据集上应用 Adaboost 分类器。此外,还讨论了Adaboost的优缺点及适用场景,强调其在分类问题上的高效性和广泛应用。
46 1
算法金 | 不愧是腾讯,问基础巨细节 。。。
|
4月前
|
机器学习/深度学习 编解码 数据可视化
图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比
目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有类似的实验,今天我们就来使用KAN创建一个图神经网络Graph Kolmogorov Arnold(GKAN),来测试下KAN是否可以在图神经网络方面有所作为。
189 0

热门文章

最新文章

下一篇
无影云桌面