GAMMA LAB于今日正式发布GammaGL的0.5版本,大家可以从GitHub,启智社区或通过pip安装最新的gammagl。在新版本中引入了10种图神经网络模型,5种新数据集以及优化部分问题。特别地,我们增加了GraphStore和FeatureStore,使用户能够从nebula和neo4j数据库中加载数据;为了提升采样效率,我们实现了CUDA上的采样方法,较原始方法效率提升了9 ~ 22 倍;同时为了应对更广泛的数据场景,我们扩展了segment算子以支持更多的数据类型,我们也实现了bspmm算子,效率较之前的方法提升2.3倍左右。
一、新增图神经网络模型、数据集和工具类
GammaGL第五个版本支持70余种模型算法供大家使用,包括新增10种同质图模型算法和异质图模型算法,以及优化部分已有模型。
新增带有保真度项的通用扩散方程框架Hid-Net [AAAI 2023]
新增从协调计算、IO和内存角度优化计算图的图神经网络模型FusedGAT [MLSys 2022]
新增通过知识蒸馏结合GNN和MLP的图神经网络模型GLNN [ICLR 2022]
新增揭示不同GNN传播机制本质关联的图神经网络模型GNNLF-HF [WWW 2021]
新增融合空间与光谱视图的图对比学习框架Sp2GCL [NeurIPS 2023]
新增无数据对抗知识蒸馏图神经网络模型DFAD-GNN [IJCAI 2022]
新增针对异构交通参与者的轨迹预测框架HEAT [T-ITS 2022]
新增自监督异质图神经网络对比学习框架HeCo [KDD 2021]
新增提高异质图神经网络表达能力的距离编码技术DHN [TKDE 2023]
新增基于注意力的动态邻域聚合图表示学习方法DNA [ICLR 2019]
GammaGL新版本新增5个数据集:
新增同质图数据集 Facebook 和 Yelp 新增异质图数据集 ACM4DHN 和 ACM4HeCo 新增用于交通模拟的数据集 NGSIM
GammaGL在新版本中支持了新的工具类:
新增SVD方法特征分解接口 SVDFeatureReduction 新增数据集划分接口 get_train_val_test_split
修改、优化部分问题:
为amazon数据集添加数据集划分字段 修复MLP前向dropout重复定义问题 修复segment_mean算子在cuda下计算错误问题 修复get_laplacian工具类在大图计算时效率过低问题
二、图数据结构
高效的图数据处理不仅能够提升算法的性能,还能扩展算法库的应用范围,适应不同规模的图数据。在新版本中,我们设计了SparseGraph。同时,GammaGL通过图数据库接口gdbi实现对图数据库的操作。在新版本中,我们基于 neo4j 和 NebulaGraph 两个图数据库实现了 GammaGL 的 FeatureStore 和GraphStore接口,提供更便捷的图数据库操作接口,并提供了使用Reddit数据集训练GraphSAGE的example。
此外,我们实现了图信息的多格式转换接口,以及根据图节点列表查询节点特征/标签的接口,扩展了gdbi的功能。
三、消息传递模块
消息传递是图神经网络中的核心机制,高效的消息传递算子对于提升整个网络的性能至关重要。在新版本中,我们扩展了segment算子以支持更多数据类型,包括float16、float64和int类型,以适应更广泛的应用场景。此外,我们新增了bspmm算子来优化边特征的计算,提高运算效率,相比于原始方法提升了2.3倍左右。为了简化用户操作,我们还改进了spmm和bspmm算子的调用方式,用户在卷积层中用对应算子实现 message_aggregate
方法即可实现自动调用稀疏矩阵计算,从而提高算子的易用性。
四、采样模块
在处理大规模图数据时,高效的采样策略对于减少计算资源消耗和提高算法运行速度非常关键。采样模块的性能直接影响到图神经网络的可扩展性和实用性。新版本我们使用Reservoir算法实现了CUDA下的采样。我们使用Reddit数据集在 NVIDIA RTX 3090显卡上进行了测试 ,对于2-hop和3-hop的邻域采样,CUDA上的采样方法相对于CPU分别实现了 15 ~ 22X 和9 ~ 11X 倍的性能提升。具体结果如下图所示:
五、TensorlayerX模块
TensorLayerX是GammaGL算法库的基础组件,它提供了与主流深度学习框架如PyTorch和MindSpore等的兼容性接口。在新版本中,我们更新了TensorlayerX,使其能够提供一个统一的Extension接口,并实现了对最新版本的PyTorch的兼容。
结语
感谢大家一直以来对GammaGL算法库的支持,我们将继续努力,不断创新,为用户提供更好的工具和解决方案。如果你在使用过程中有任何问题或者有任何模型、功能上的建议,欢迎提交issue或者通过邮件来联系我们。我们也欢迎大家将自己的研究工作集成到GammaGL当中,方便大家使用,提高影响力,也为国产开源做贡献。
Github地址:https://github.com/BUPT-GAMMA/GammaGL
启智社区地址:https://git.openi.org.cn/GAMMALab/GammaGL
Email: jixy2314@bupt.edu.cn