DGL 作者答疑!关于 DGL 你想知道的都在这里

栏目: 数据库 · 发布时间: 5年前

内容简介:DGL 框架是由纽约大学和AWS工程师共同开发的开源框架,旨在为大家提供一个在图上进行深度学习的工具,帮助大家更高效的实现算法。

嘉宾简介

亚马逊上海人工智能研究院工程师,Deep Graph Library作者之一。

DGL 框架是由纽约大学和AWS工程师共同开发的开源框架,旨在为大家提供一个在图上进行深度学习的工具,帮助大家更高效的实现算法。

图神经网络 在这两年很热,学术论文从 2016 年开始,增长相当迅速。而今年,可以说是该研究方向集中爆发的一年,像 ICML 有 30~50 篇论文是专门研究图学习的。

DGL 作者答疑!关于 DGL 你想知道的都在这里

关于图学习的一些基础知识,我们在之前的一些文章中都有详细的介绍,大家可以参考 《浅析 图卷积神经网络

图广泛的应用

DGL 作者答疑!关于 DGL 你想知道的都在这里

DGL 作者答疑!关于 DGL 你想知道的都在这里

DGL 作者答疑!关于 DGL 你想知道的都在这里

我们来看一个具体的例子,在自然语言中有一个非常火的模型叫 Transformer ,Transformer 本身就可以看作是一个 Graph。通过在图上不断的操作来更新每个节点的信息。

DGL 作者答疑!关于 DGL 你想知道的都在这里

如上图所示,左边是 Transformer 的整个流程,右图是将 Transformer 看成 Graph 后的拓扑结构。在 Transformer 中,它的 encoder 是一个全连接的神经网络,就是任意两个节点之间都有一条边,而且是一个有向图,会有双向的边。在 decoder 的部分,因为是一个一个 token 来解码的,所以前面的词不知道后面词的信息。所每个节点只有它之前的节点指向它的边,而没有它后面的节点指向它的边。

综合起来看,编码器和解码器之间是一个完全的二分图。

DGL 作者答疑!关于 DGL 你想知道的都在这里

这里也涉及到了我们组的另外两个工作,一个叫 star transformer ,主要目的是减少原来的 Transformer 的计算代价。主要想法是通过一个中心节点聚合所有节点的信息,然后再通过这个中心节点将信息发出去。效果挺好,这篇论文被 NAACL 2019 收录。另外一项工作是 SegTree-Transformer 还在审稿中,后续如果有结果,会和大家详细分享。

Star-Transformer:

https://arxiv.org/pdf/1902.09113.pdf

DGL 框架设计理念

用现有的一些框架比如TensorFlow、Pytorch、MXNet等实现 图神经网络 模型都不太方便,同样现有框架实现 图神经网络 模型的速度不够快。

DGL 作者答疑!关于 DGL 你想知道的都在这里

上面三个例子中都是速度不够或者内存有溢出的情况。为什么 图神经网络 模型在之前的一些框架中不容易编写呢?

因为很多 图神经网络 的模型,可以看作是消息传递的过程,每一个节点会发出它自己的消息,也会接受来自其它节点的消息。然后在得到所有信息之后做聚合,计算出节点新的表示。原有的深度学习框架都是进行张量运算,但是图很多时候并不能直接表示成一个完整的张量,需要手动补零,这其实很麻烦,不高效。

DGL 作者答疑!关于 DGL 你想知道的都在这里

DGL

DGL 作者答疑!关于 DGL 你想知道的都在这里

DGL 是基于现有框架,帮助用户更容易实现 图神经网络 模型。黑色框都是已经实现的,灰色框是还未实现的计划之中的。DGL 现在主要是以消息传递的接口作为核心,同时提供图采样以及批量处理图的接口。

DGL 作者答疑!关于 DGL 你想知道的都在这里

使用 DGL 与没有使用的计算速度对比

DGL 作者答疑!关于 DGL 你想知道的都在这里

如何使用 DGL

DGL 消息传递 API

DGL 作者答疑!关于 DGL 你想知道的都在这里

DGL 的 API 主要有两部分,一是 message function(消息函数),二是 reduce function(累和函数)。

消息函数通过边获得变量,用 e.src.data 获得这条边出发节点的特征信息,通过 e.dst.data 获得目标节点的特征信息。边也拥有自己的特征信息,如上图中的 e.data。消息函数可以获得出发节点和目标节点的特征信息,描述了需要发给目标节点做下一步计算的信息。

DGL 作者答疑!关于 DGL 你想知道的都在这里

上图描述了消息传递模型,消息函数把节点 1 和节点 2 的信息都发送给节点 3 ,可以发送的信息包括 v1v2 和  v3 以及每条边上的信息。

DGL 作者答疑!关于 DGL 你想知道的都在这里

目标节点在获得其他节点以及边的特征信息之后,通过累和函数计算出一个新的表示。通过上图可以看到,累和函数获得了消息函数传递过来的信息 M13M23 同时还有自身的节点信息。上述的整个过程就是 DGL 现有的核心。

比如一个最简单的 图神经网络 案例。每个节点获得所有邻居节点的特征信息求和,并通过一个非线性函数得到该节点新的表示。

DGL 作者答疑!关于 DGL 你想知道的都在这里

具体的实现过程

消息融合

graph data 有一个特点,就是它的边会远多于节点的数量,比如说节点有 100个,但是边可能有 2000,甚至更多。按照上面的方法处理,每一个节点的信息都要先拷贝到边上,再发给目标节点,在这个过程中,很多拷贝是重复的,因为一个节点可以有多条边。也即消息张量的大小会正比于图中边的数量。所以当图增大的时候,消息张量消耗的内存空间也会显著上升,可能是 O( n 2)。

比如模型 GraphSage 中 Reddit 的数据:

DGL 作者答疑!关于 DGL 你想知道的都在这里

内存使用量骤增 500 倍

DGL 的解决方法是消息融合(Fuse Message Passing)。

DGL 作者答疑!关于 DGL 你想知道的都在这里

对所有邻居节点的特征信息求和等于邻接矩阵乘上特征张量。所以我们提供了一个矩阵乘法的优化,这样更加高效。

DGL 作者答疑!关于 DGL 你想知道的都在这里

消息融合的不足之处:支持的函数有限。下一个版本的改进方案:

DGL 作者答疑!关于 DGL 你想知道的都在这里

图批量功能

DGL 作者答疑!关于 DGL 你想知道的都在这里

图批量功能(Batch Multiple Graphs),将 n 张小图打包在一起的操作可以看成是生成一张含 n 个不相连小图的大图。这个方法可以实现线性加速。

巨图训练

未来 图神经网络 计算量会很大,会需要采样和分布式。这个还在开发当中......

DGL 作者答疑!关于 DGL 你想知道的都在这里

开发路线图

DGL 作者答疑!关于 DGL 你想知道的都在这里

新版本发布地址:

https://github.com/dmlc/dgl/issues/450

问答

1. 感觉DGL这个框架没有pyG支持的model多,以后会支持更多模型吗?比如各类GAE现在基本没有?

回答:是的,但是大家目前都在忙于开发新功能。暑假会有实习生加入之后会添加更多模型,如果希望我们实现一些模型,可以直接在我们 issue 里提。

2. 可以处理构建的加权图吗?

回答:支持的,权重还可以是向量。因为 DGL 在边上也会存储数据。

3. 会支持 GraphSage 吗?

回答:已经提供了 GraphSage。

4. 请问您怎么看待GCN作者从谱的角度来考虑和DGL从消息发送和累和的角度的区别?

回答:GCN谱推导很有意思,我觉得是不同的角度,前两天有一篇说GCN都是low pass filter。

5. 异构图什么时候可以支持?

回答:异构图我们接口已经确定了,可以在仓库的pr 里找到,完全实现加测试可能还要两个月。

6. 有图分类的吗?

回答:图分类有,我们的tutorial里有个toy example。

7. mailbox['m']的size具体是什么?

回答:mailbox 第一维是 bucket size 我这里没写,就是 dgl 会把度一样的节点 batch 在一起。

8. 内建函数的功能是固定的吗,只能发送头节点信息和求和?

回答:内建函数支持 sum max min prod,发送支持copy_src,src_mul_edge,copy_edge。但是 reduce 其实能任意写,就是没有 builtin 那么快。你拿了邻居特征之后想怎么写都行。

9. 这样内建 message 函数是不是反而是一种限制?

回答:也可以不用内建的啊,内建的 message+reduce 会被 fuse 用我们自己写的kernel。

10. Star-Transformer 中的 Position Embedding 有 DGL 实现吗?

回答:transformer 的 positional encoding 就参考 transformer 的吧,我们 tutorial 里有提到,详细的可以看专门介绍 transformer 的教程。

参考资料:

https://arxiv.org/abs/1810.04805

https://arxiv.org/pdf/1706.03762.pdf

11. 百亿边的图, 能用DGL跑么?

回答:能,我上面有提到单机跑5亿点250亿边的情况。就是要内存很大的实例。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby for Rails

Ruby for Rails

David Black / Manning Publications / 2006-05-11 / USD 44.95

What's Inside * How Ruby and Rails work, separately and together * Extensive Ruby language tutorial * Ruby techniques for Rails applications * Explore the Rails framework source code A new level of pr......一起来看看 《Ruby for Rails》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具