v0.6 发布亮点
近期发布的 DGL 0.6 是该项目在文档、API、系统速度和可扩展性等多个方面的重大更新。本文重点介绍了一些新特性和增强功能。
120分钟闪电入门 DGL
这套全新的教程源自我们在多个重要学术会议(如 KDD’19, KDD’20, WWW’20)上进行的动手实践教程。它们从一个使用 GNN 进行节点分类的端到端示例开始,逐步揭示 DGL 中的核心组件,例如 DGLGraph、GNN 模块和图数据集。这些教程现已在 docs.dgl.ai 上提供。
GNN 小批量训练简明教程
现实世界的数据规模可能非常庞大,这需要通过小批量方式对 GNN 进行随机训练。然而,与图像或文本语料库中数据样本相互独立不同,GNN 的随机训练更为复杂,因为它必须处理样本之间的依赖关系。我们注意到随机训练是我们讨论论坛上最常被问到的主题之一。在 0.6 版本中,我们将这些常见问题的答案总结成一套关于 GNN 随机训练的教程,其中包括对邻居采样算法、训练循环以及在 DGL 中实现这些算法的代码片段的深入讲解。
更多示例
本次发布包含 13 个新示例,使得模型总数达到 72 个
- MixHop: 通过稀疏化邻居混合实现高阶图卷积架构: https://github.com/dmlc/dgl/tree/master/examples/pytorch/mixhop
- 自注意力图池化: https://github.com/dmlc/dgl/tree/master/examples/pytorch/sagpool
- GNN-FiLM: 具有特征级线性调制的图神经网络: https://github.com/dmlc/dgl/tree/master/examples/pytorch/GNN-FiLM
- Simplifying Graph Convolutional Networks 的 TensorFlow 实现: https://github.com/dmlc/dgl/tree/master/examples/tensorflow/sgc
- 通过硬注意力和通道级注意力网络学习图表示: https://github.com/dmlc/dgl/tree/master/examples/pytorch/hardgat
- 用于图半监督学习的随机图神经网络: https://github.com/dmlc/dgl/tree/master/examples/pytorch/grand
- 具有结构学习的分层图池化: https://github.com/dmlc/dgl/tree/master/examples/pytorch/hgp_sl
- 迈向更深的图神经网络: https://github.com/dmlc/dgl/tree/master/examples/pytorch/dagnn
- PointNet: 用于三维分类和分割的点集深度学习 / PointNet++: 在度量空间点集上的深度分层特征学习(部分分割): https://github.com/dmlc/dgl/tree/master/examples/pytorch/pointcloud/pointnet
- 具有顶点信息最大化池化的图交叉网络: https://github.com/dmlc/dgl/tree/master/examples/pytorch/gxn
- 神经图协同过滤: https://github.com/dmlc/dgl/tree/master/examples/pytorch/NGCF
- 基于图神经网络的链接预测: https://github.com/dmlc/dgl/tree/master/examples/pytorch/seal
- 具有卷积 ARMA 滤波器的图神经网络: https://github.com/dmlc/dgl/tree/master/examples/pytorch/arma
官方示例文件夹现在按任务等显著标签对示例进行了索引。
易用性增强
- 两个新的 API
DGLGraph.set_batch_num_nodes
和DGLGraph.set_batch_num_edges
,用于手动设置批处理信息,对于将一个批量图转换为另一个图或手动构建一个新的批量图非常有用。 - 一个新的 API
GraphDataLoader
,是用于图分类任务的数据加载器封装。 - 一个新的数据集类
QM9Dataset
。 - 一个新的命名空间
dgl.nn.functional
,用于存放与神经网络相关的实用函数。 - DGL 现在支持半精度训练,并与 PyTorch 的自动混合精度包兼容。有关如何使用的详细信息,请参阅用户指南章节。
- (实验性)用户现在可以将 DistGraph 与异构图数据一起使用。这也适用于在 DistGraph 上调用
dgl.sample_neighbors
。此外,DGL 支持在机器集群上进行分布式图划分。有关更多详细信息,请参阅用户指南章节。 - (实验性)几个用于训练稀疏嵌入的新 API
dgl.nn.NodeEmbedding
是一个专门用于存储可训练节点嵌入的类,可以扩展到包含数百万个节点的图。dgl.optim.SparseAdagrad
和dgl.optim.SparseAdam
是 NodeEmbedding 类的两个优化器。
系统效率提升
- 使用 PyTorch 后端时,DGL 将使用 PyTorch 原生的内存管理来缓存重复的内存分配和释放。
- 当
low_mem=True
时,nn.RelGraphConv
的新实现(PyTorch 后端)。在 V100 GPU 上的基准测试显示,它在 AIFB 数据集上的训练速度提升了 4.8 倍。 - 使用 AVX512 指令集实现更快的 CPU 内核。
- 在 CUDA 11 上实现更快的 GPU 内核。
进一步阅读
25 二月