jasperzhong / read-papers-and-code

My paper/code reading notes in Chinese
43 stars 3 forks source link

MLSys '23 | HyperGef: A Framework Enabling Efficient Fusion For Hypergraph Neural Network on GPU #351

Closed jasperzhong closed 1 year ago

jasperzhong commented 1 year ago

https://proceedings.mlsys.org/paper_files/paper/2023/file/c0987e6b6da2428e8cd43efa74790ccb-Paper-mlsys2023.pdf

第一次听说hyper graph.

jasperzhong commented 1 year ago

Hyper graph是对普通graph的一个泛化,包含nodes和hyper edges (generalized edges). hyper edges是a group of vertices,而normal graph是two vertices. 具体的例子比如微信群,群里所有人的关系是一个hyper edge; 又如交通网络,一个路线可以包含多个途径的站点,这些站点之间的关系构成了一个hyper edge; 再比如,家族树的堂兄弟姐妹和表兄弟姐妹形成了一个hyper edge.

所以这个hyper edge很像一个vertex的“群”. image

HyperGNN的基本思路就是有两个SpMM: image

先aggregate hyperedge里面vertices的feature得到edge embedding,然后aggregate edge embedding到node embedding.

jasperzhong commented 1 year ago

这篇paper的写作思路太值得借鉴了.

background介绍了hyper graph是啥,三个典型的hyperGNN. 然后说DGL和PyG的limitation. 然后用一个section介绍fused kernel的好处.

所以这篇paper的key idea就是fuse这hyperGNN的两个SpMM,然后这有三个challenges:

  1. inefficient partition
  2. workload-agnostic format
  3. heavy writing conflicts

然后针对这三点提出了三个解决办法. 每个解决办法分

  1. motivation
  2. insight
  3. approach 并且配一个示意图.

因为不太熟SpMM及related work看不太懂. 基本就是优化这个fused GPU kernel.

最终baseline比较DGL, PyG和cuSparse,在十多个数据集上(都很小).

  1. 首先和DGL和PyG比较end-to-end比较性能: 在所有数据集和模型上都更快了.
  2. 然后是单独比较kernel和cuSparse PK.
  3. 其次是ablation study,分别讨论优化的三点的作用.

最后配了一个discussion section,完美.

就应该学习这篇paper写作思路.