PGL icon indicating copy to clipboard operation
PGL copied to clipboard

请问pgl支持paddle2.0吗?

Open Maybewuss opened this issue 5 years ago • 8 comments

看了一下paddle2.0的介绍,弱化了lodtensor的概念,相关的一些api比如sequence_pool也不能使用了,升级到2.0后要怎么使用pgl呢?

Maybewuss avatar Jan 03 '21 09:01 Maybewuss

目前pgl已经支持paddle2.0了,可以看分支 pgl-2.0.0a 后续会合入主干,或者pip install pgl==2.0.0a。 目前还是试验性阶段,我们sequence_pool已经用segment系列op代替了。

我们的图卷积操作等,也基本全部动态化了。

引用网络GCN/GAT/APPNP/GCNII/SGC 例子可以看

https://github.com/PaddlePaddle/PGL/tree/pgl-2.0.0a/examples/citation_benchmark

Yelrose avatar Jan 04 '21 03:01 Yelrose

pgl2.0的主要改动如下:

  1. 因为是Paddle2.0是动态图了,为了进一步简化使用,我们将GraphWrapper的概念去掉了,目前可以直接在Graph上进行Send/Recv。
  2. 在pgl 2.0的recv函数的输入将会是一个Message类来代替原来的LodTensor,一个简单的例子如下
import pgl
import paddle

def send_func(src_feat, dst_feat, edge_feat):
    return { "h":  src_feat["h"] }


def recv_func(msg):
    return msg.reduce_sum(msg["h"])

edges = ...
node_feat = ...
num_nodes  = ...

graph = pgl.Graph(num_nodes=num_nodes, 
                         edges=edges, 
                         node_feat = { "h": node_feat} )
graph.tensor()

msg = graph.send(send_func, src_feat={ "h" : graph.node_feat["h"]})
output = graph.recv(recv_func, msg)

Yelrose avatar Jan 04 '21 03:01 Yelrose

pgl2.0的主要改动如下:

  1. 因为是Paddle2.0是动态图了,为了进一步简化使用,我们将GraphWrapper的概念去掉了,目前可以直接在Graph上进行Send/Recv。
  2. 在pgl 2.0的recv函数的输入将会是一个Message类来代替原来的LodTensor,一个简单的例子如下
import pgl
import paddle

def send_func(src_feat, dst_feat, edge_feat):
    return { "h":  src_feat["h"] }


def recv_func(msg):
    return msg.reduce_sum(msg["h"])

edges = ...
node_feat = ...
num_nodes  = ...

graph = pgl.Graph(num_nodes=num_nodes, 
                         edges=edges, 
                         node_feat = { "h": node_feat} )
graph.tensor()

msg = graph.send(send_func, src_feat={ "h" : graph.node_feat["h"]})
output = graph.recv(recv_func, msg)

谢谢,请问这个message类和原来的LodTensor的性能对比如何呢?

Maybewuss avatar Jan 05 '21 08:01 Maybewuss

我们在GCN/GAT/APPNP 这些模型都测过,基本持平。在动态图上面,少了一些显存交换,跑起来速度甚至更快。

Yelrose avatar Jan 05 '21 09:01 Yelrose

我们在GCN/GAT/APPNP 这些模型都测过,基本持平。在动态图上面,少了一些显存交换,跑起来速度甚至更快。

emm,那请问在2.0版本里,面对复杂的用户自定义函数,pgl仍然能能够达到DGL的13倍的运行速度吗?

Maybewuss avatar Jan 13 '21 09:01 Maybewuss

这个可能暂时不行,2.0版本现在还没完善。

Yelrose avatar Jan 14 '21 13:01 Yelrose

不知道动态图支持的pgl2版本的文档何时能够更新

xiamr avatar Feb 14 '21 14:02 xiamr

https://pgl.readthedocs.io/en/latest/api/heter_graph.html#

现在latest底下已经是pgl 2.0的文档了。

Yelrose avatar Feb 14 '21 15:02 Yelrose