打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
开源图深度学习框架的机遇与挑战(消息函数的目的是在边上通过输入边上的源节点以及目标节点以及其边上的特征来计算出要传递怎样的消息)

https://www.toutiao.com/article/7188381864376304180/?log_from=b18e3800642c3_1679754495533


(消息函数的目的是在边上通过输入边上的源节点以及目标节点以及其边上的特征来计算出要传递怎样的消息)


https://www.toutiao.com/article/7188381864376304180/?log_from=b18e3800642c3_1679754495533



17位高级专家共同打造,涉及15个领域133个体系框架1000个细分知识点

关注公众号“大话数智”,免费下载这份《数据智能知识地图》⬇️


导读:亚马逊云科技上海人工智能研究院王敏捷团队是目前开源图深度学习框架 DGL 的发起团队与目前的主要开发团队之一。自 2018 年至今 DGL 系统发展已有三至四年的时间,在 DGL 研究与发展的过程中我们发现整个图深度学习领域的发展十分迅速,这就带来了机遇与挑战。本次分享将介绍亚马逊云科技上海人工智能研究院在图深度学习框架、图深度学习系统的探索。

今天的主题主要分为以下两部分进行:

  • DGL 的技术特点及开源社区的进展

  • 图深度学习框架、图深度学习系统研究所带来的机遇与挑战


分享嘉宾|王敏捷博士 资深应用科学家

编辑整理|刘雨彤 西华师范大学

出品社区|DataFun


01

DGL 的技术特点及开源社区的进展

1. 图数据无处不在

首先和大家分享一下图数据的概念。图数据是我们今天最关注的一个问题。图数据无处不在:

  • 微观层面的药物与分子结构。药物本质上是分子与分子之间的关系,这样的关系可以用图来表达;

  • 宏观层面上有很大规模的现实数据。比如社交网络、用户产品的交互网络以及知识图谱等。

2. 图机器学习的任务类型

在不同的领域,不同的场景中有着各种各样的图数据,所以对应的图机器学习任务也是多种多样的。主要有以下几种任务类型:

  • 对图上的一个节点判断其有怎样的性质,这样的任务称为节点预测任务。节点预测的主要任务是在一个社交网络中,分析一个用户的兴趣爱好。

  • 对图上已存在的一条边判断其有怎样的性质,这样的任务称为边预测任务。比如在一个交互系统中实体 A 与实体 B 之间所存在的交互关系的判断,也即是对交互行为的类型进行判断,这即是对图上的边进行预测。

  • 对图上可能不存在的一条边进行预测,这样的任务称为链接预测任务。比如在一个交互系统中判断实体 A 和实体 B 之间是否存在一种潜在的关系。常见的应用有知识图谱的补全、推荐系统等。

  • 在一个很大的图之下,判断其是否存在一个特殊的子图结构。这样的任务称为社区检测或子图检测。社区检测或子图检测的常见应用场景则是在金融领域中。社区(子图)检测的任务则是在这个过程中检测可疑的金融欺诈行为是否存在上述的可疑的一系列金融欺诈行为。

  • 将部分的子图检测扩大至整图的检测上。这类任务通常检测整个图是否存在着一些性质。这种场景往往适用于一些非常小的图上。比如一类任务是判断分子的结构是否具有某种化学性质;而另一类任务则是已知化合物及其化学性质,生成一类新的化合物以使得这类新的化合物符合已知化合物的化学性质。这就是在整图的概念上进行的预测任务。

由上述介绍可知图上的机器学习有着不同的任务类型,其重要性也不言而喻。

3. 图+深度学习=>图神经网络(GNN)

将深度学习算法引入到图数据上后,由此诞生了一个新的神经网络:图神经网络。深度学习模型(卷积神经网络、递归神经网络)的核心思想是将数据建模成高维空间的向量表征。在获取到这个向量表征之后将其输入到下一个分类器进行预测任务。图神经网络也是遵循这个核心思想。

  • 图神经网络中输入的数据:一个图。

  • 图神经网络核心理念:对于点、边、子图学习其向量表征。

  • 图神经网络强大之处:整个计算过程中不仅能刻画出用户的画像信息,而且能刻画出用户的周边的“邻居”的信息。当这样的思想刻画在图神经网络中的计算模式时,我们称其为“消息传递”。

4. 图神经网络基于消息传递

图神经网络上的消息传递由两个公式构成,包括:

  • 在边上的公式:有一个十分重要的函数,为消息函数消息函数的目的是在边上通过输入边上的源节点以及目标节点以及其边上的特征来计算出要传递怎样的消息。

  • 在点上的公式:由两个函数构成第一个函数是累和函数。一个节点可能有多条路,收到的多条消息进行聚合。在聚合后,要进行更新。第二个函数是更新函数。将聚合后的消息和自己的特征进行更新,以此得到一个新的特征。

图神经网络的强大之处在于其消息函数、累和函数以及更新函数都可以定制化。根据场景的不同设置不同的神经网络模块。

5. Deep Graph Library(DGL)

DGL 的四个技术特点使得其广受欢迎。分别是:

  • 具有灵活易用的编程接口在点上、边上进行计算是非常贴近图算法的计算模式。DGL 在编程接口的设计中十分贴近图的原生态语义,使得用户在定义图神经网络中十分方便。

  • 具有高效的底层系统设计高效的底层系统设计。图是一个稀疏的、不规则的。节点和节点之间邻居的数目不同。这对于底层的硬件有着十分大的挑战。常见的硬件都青睐于稠密的、规则的数据。因此,图神经网络在底层运行加速上有着挑战。DGL 为此提出了使用算子融合等技术对消息传递进行优化,最终展示出的性能比同类的图神经网络框架提高很多。

  • 具有优秀的巨图训练性能在工业化场景中,图的规模越来越大。这就需要很多高效并行分布式训练的机制。DGL提供了分布式训练机制,支持十亿级巨图,高效利用多机多GPU集群。

  • 具有完善的开源生态DGL 与许多开源软件有着良好的互通性,同时基于 DGL 的生态也初显成果。

6. 基于 DGL 的拓展包

搭载在 DGL 上的典型的第三方工具包有如下七类:

  • DGL-KE:面向知识图谱嵌入的工具包

  • GNNLens、GRAPHISTY:图可视化工具

  • OpenHGNN:复杂图(异构图)的模型库

  • OGB:GNN 的评测标准

  • Amazon Neptune ML、neo4j、ArangoDB:数据库接口

  • Graph4NLP:结构化自然语言处理

  • DGL:LifeSci、deepchem:生命科学

--

02

图深度学习框架、图深度学习系统研究所带来的机遇与挑战

1. 开源图机器学习系统的核心挑战

开源图机器学习系统的核心挑战主要有三个:

  • 易用性:图神经网络的复杂性使得框架易用性成为重要的研究点。

  • 高性能:如何使得计算性能高效。

  • 大规模图:如何在大规模图上进行数据训练。

2. 易用性+高性能的挑战

易用性+高性能的挑战主要体现在:

  • 图神经网络入门门槛较高。图神经网络的核心计算逻辑是消息传递。消息传递的三个阶段中,首先在边上计算 message 是什么、其次要聚合 message、最后使用这个 message 更新节点表征。

  • 不规则的计算性使得编写高效代码不容易。

3. 以 Graph Attention Network 为例的 UDF 方法与 Specialized GNN Primitives 方式的对比

图注意力网络 Graph Attention Network(GAT)中有着四个公式每个公式上面计算了一些边上以及点上的值。比较复杂的模型在现在的已有的图神经网络框架下都提供了两种方式:

  • User-defined Function(UDF)方式定义边上的计算以及点上的计算都提供了两个自定义公式,分别是边上的计算公式 message_get、点上的计算公式 aggregate_func。我们可以大致从代码和数学公式中看到一一对应关系。这是一种很直观的书写方式。但是存在着一些问题:性能不高效。因为图是一种稀疏的不规则的数据结构,不同的节点之间连接数不一样。此外,如果需要对底层硬件进行高效计算,需要对计算本身进行切分、再组织,将其变为 tensor 的计算。这个过程就会带来计算性能的损失。

  • Specialized GNN Primitives 方式为了解决上面的那种问题,图神经网络框架提供了另外一个接口:Specialized GNN Primitives。通过扩大算子使得计算变得高效。但是这样的方法导致代码变得不直观。

上述两种方法的性能差距是根据图数据的复杂程度所决定,差距最大可以从 10倍到 100 倍。

4. 开源图机器学习系统的核心挑战

图神经网络在大规模图上的训练过程本身算法流程比较复杂,因为图代表着一种依赖关系。如果计算一个节点的 Embedding,需要收集邻居信息。基于上述过程,如果做小批次训练,那么就需要一个子图采样的过程。子图采样的过程如下:

  • 计算某一个目标节点的话,需要先选取目标节点的邻居节点。如果要看得更远,需要对这些邻居节点进行再次采样,形成一个迭代拓展的过程;

  • 当采样得到边之后,对其抽取采样,形成子图。

  • 得到子图之后,抽取子图特征。

  • 随着子图、子图特征都得到之后,将子图、子图特征传输给图神经网络进行训练并更新参数。

  • 最后返回步骤 1 进行迭代训练,直到最后参数收敛,结束训练过程。

DGL 在设计的过程中将上述五个步骤切分为不同的模块。步骤 1 步骤 2 是采样过程,因此在 DGL 中设计一个 Sampling Component 模块,负责解决采样问题;对于步骤 3 抽取子图特征,在 DGL 中对应的为 KVStore Component;训练模块在 GNN Training Component 中得以实现。

5. 单 GPU 的训练过程

在图结构上进行子图抽取、对子图进行变换以使其符合需求;得到子图后,会对其特征 Feature 进行抽取;最终得到子图以及 Feature 后送给 GNN 进行训练。

整个过程是 CPU 与 GPU 的混合训练。CPU 上存储节点信息与 Structure,在抽取之后信息变小,将数据拷贝到 GPU 上进行 GNN 训练。整个流程中数据拷贝就会变成训练的瓶颈。

在 v0.8 版本中,使用 CUDA UVA 技术,在 CPU 上开辟内存空间,使得GPU 可以访问到 CPU 上面开辟的空间。

在 v0.8 版本中用户只需要添加几行代码,告诉机器 Sampler 所需要添加的Feature、以及在 DataLoader 上是否使用 UVA 技术即可使用这个新的功能。在 OGBN-PAPERS100M 训练 GraphSAGE 将近会有 4 倍左右的性能提升。

6. 多 GPU 的训练的问题思考

在多 GPU 上能否使用同样的技巧呢?答案是使用同样的技巧的情况下计算性能反而会无法达到所期望的要求。虽然可以使用 UVA 技术突破 GPU 内存的限制,但是每当采样算子访问数据的过程中,仍然会通过 CPU 与 GPU 之间的带宽来访问数据。而带宽是非常有限的。PCI 带宽随着 GPU 数目的增加并无法增加很多的计算速度。

7. 训练成本带来的挑战

使用 CPU+GPU 混合训练时需要使得图结构与节点特征放在 CPU 的内存中。CPU 必须够大才能支持 CPU+GPU 混合训练。

OGB-LSC 挑战提供了三个数据集:

  • 节点预测 MAG240M 数据集:图结构 30GB、节点特征 200GB。

  • 链接预测 WikiKG90Mv2 数据集。

  • 图预测 PCQM4Mv2 数据集。

以节点预测任务为例对比 CPU+GPU 混合训练与全 GPU 训练需要达到的条件。例如,在做 CPU+GPU 混合训练时当用到一台 g4dn.metal 机器总共 8 块卡时,有近 400GB CPU RAM,一小时花费 8 美元左右;而做全 GPU 训练时,需要 4 台 g4dn.metal 机器总共 32 块卡,一小时花费 32 美元左右。

在工业界运用场景中,数据集常常有着巨大的规模,如何以最小的代价实现最优的训练是训练成本挑战的一部分。

同时 GNN 模型推理的代价也很高。在推理过程中获取准确的推理结果,必须把所有的数据都收集起来。对于节点 A,只有把 A 的所有邻居都聚集起来才能进行节点 A 的预测。而若要预测节点 B,也需要将 B 的所有邻居都聚集起来才能进行节点 B 的预测。而节点 A 与节点 B 的邻居相同,这就导致收集数据时冗余数据会出现。这是 Node-wise inference 方法。

而通过输入节点做 Message Passing 反向预测节点 A 与节点 B 就不会导致冗余信息出现。这是 Layer-wise inference 方法。

8. 全自动 GNN 推理

目前正在研究的全自动 GNN 推理所期望的实现功能:

  • 通过编译手段分析用户模型并对用户模型进行改写。

  • 自动生成高效逐层推理代码。

  • 自动搜索推理超参数,自适应底层硬件优化推理速度。

--

03

问答环节

Q1:DGL 框架训练的模型是如何部署、进行线上推理?是否有相应的框架或者相关平台?

A1:推理问题更多的是离线推理。线上推理比离线推理更难一些。线上推理所面临的难点有:图数据不断的修改导致必须有图数据库辅助组件从而帮助用户进行需求处理;其次需要在图数据库中有快速采样修改模块从而帮助用户低延时反馈采用结果;构建的模型是否适用不断更改过后的图。线上推理的研究开发正在进行,这也是一个开放性的问题。

Q2:大规模 GNN 训练多项采样的优化方法?

A2:主要的优化方向是对算法进行并行。首先对图进行划分,并分配到不同的服务器。采样时根据每个节点所属的划分,将采样任务发送至对应服务器并收集结果。在系统层面应该尽量把所有的远程通信做成异步,从而和本地计算进行并行。如果是 GPU 之间的通信,则需要采用一些点对点通信的优化技巧。

Q3:图神经网络框架在工业界主流运用的框架有 DGL 与 PYG,请问可以将这两个框架进行对比吗?或者 DGL 相较于 PYG 有着怎样的优势?

A3:首先,DGL 有着图的概念。图是很核心的编程抽象。DGL 在图的概念上进行了较多的封装从而实现编程优化;其次是性能方面。底层算子融合在优化过程中提供了算子优化;此外,在分布式训练、UVA 等方面为大规模图的训练提供了方便之处。

今天的分享就到这里,谢谢大家。


|分享嘉宾|

王敏捷 博士 资深应用科学家

亚马逊云科技上海人工智能研究院

王敏捷博士毕业于纽约大学计算机系系统研究实验室,研究方向包括深度学习系统,大规模分布式机器学习等深度学习与系统的交叉领域。发起并参与多项著名开源深度学习系统。其中包括被英伟达评为“Modern AI Engine”的Minerva系统,成为亚马逊首选深度学习框架的MXNet系统,图神经网络框架DGL,可微编程框架MinPy等。他同时也是开源社区DMLC的发起人之一,并在2016年获得英伟达博士奖学金。王敏捷目前担任亚马逊上海人工智能研究院资深应用科学家,主攻下一代深度学习框架,图神经网络并负责开源项目及开源社区建设。


|DataFun新媒体矩阵|


|关于DataFun|

专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章900+,百万+阅读,近16万精准粉丝。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
亚马逊 纽约大学开源图神经网络框架DGL:新手友好,与主流框架无缝衔接
周伟鹏:如何用GNN来提升关系图谱的反欺诈效果?
提速13倍!百度飞桨发布图学习框架PGL
图神经网络入门
10行代码搞定图Transformer,图神经网络框架DGL迎来1.0版本
2022简单易懂「图神经网络前沿进展与应用」中文综述
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服