DGL0.5中的g-SpMM和g-SDDMM
导读:DGL0.5版本发布时,其团队也对应发表了一篇论文(https://arxiv.org/abs/1909.01315),较为详细了介绍了DGL的设计、优化以及性能。其中的重要部分就是DGL认为GNN的计算可以归纳为两种,g-SpMM(generalized sparse-dense matrix multiplication)和g-SDDMM(generalized sampled dense-dense matrix mutiplication)。这里对论文中g-SpMM和g-SDDMM部分做个简单笔记。
1.什么是g-SpMM和g-SDDMM
SpMM的全称是sparse-dense matrix multiplication,SDDMM的全称是sampled dense-dense matrix mutiplication.通过下图可以更直观地理解它们。
常用的稀疏矩阵格式介绍可以参考:https://www.cnblogs.com/xbinworld/p/4273506.html
论文中的表述:
2.g-SpMM和g-SDDMM与GNN的关系
现有的GNN主要都遵循Message Passing paradigm,其定义如下:
而Message passing Paradigm和稀疏矩阵操作有着很强的相关性.论文中也通过GCN(计算结点特征时属于SpMM)和GAT(计算边的权重时属于SDDMM)进行了举例说明:
而且g-SpMM和g-SDDMM的梯度计算仍然可以用g-SpMM和g-SDDMM来完成,论文中有相关的证明过程,所以backward的时候仍然可以通过SpMM和SDDM来计算。
3.使用g-SpMM和g-SDDMM好处
4.g-SpMM和g-SDDMM的性能测试
实验数据:
REDDIT graph from (Hamilton
et al., 2017) and a nearest neighbor graph generated by (Qi et al., 2017), with varying feature sizes.
具体测试:
实验结果:
结论: