DGL v0.6 终于如约而至。新版DGL在很多方面都做了重要的改进和提升。其中增加了新的入门教程和文档,新的API,同时对系统易用性和性能也做了一次大更新。让我们来看看新版本具体有哪些变化吧!
新教程:120分钟快速上手DGL —— 从小白到实战
这一全新的DGL系列教程是DGL团队对多个主要的学术会议上的实战教程的总结,并进一步优化和精炼而成。教程从最简单的点分类问题出发,逐步展示了DGL的核心组件,如DGLGraph、GNN模型库和图数据集等。现在登陆文档主页https://docs.dgl.ai/就可以阅览该教程。
新教程:面向大规模图数据的GNN批次训练
真实世界里的数据规模是巨大的,这就需要对GNN模型进行批次训练(mini-batch training)。然而,不同于面向图片和文本数据的训练算法,GNN的批次训练更加复杂。这是因为模型需要处理图数据样本间存在的依赖关系。DGL团队在官方论坛上也注意到GNN模型的批次训练是被问到次数最多的主题之一。在0.6版里,DGL团队发布了针对GNN批次训练的全新教程。该教程详细阐述了邻居采样算法的原理,并介绍了如何使用DGL编写训练代码。同样,该教程也已经上传至官方文档主页https://docs.dgl.ai/。
中文版用户指南
经过14位社区小伙伴的努力,DGL用户指南中文版终于上线了!现在登陆官方文档主页,并在边栏选择“用户指南”即可开始阅览!
更多模型实现样例
本次更新还发布了13个新的模型实现样例,使得DGL实现的论文样例总数达到72个。以下为新样例的名称和链接:
MixHop: Higher-Order Graph Convolutional Architectures via Sparsified Neighborhood Mixing: https://github.com/dmlc/dgl/tree/master/examples/pytorch/mixhop
Self-Attention Graph Pooling: https://github.com/dmlc/dgl/tree/master/examples/pytorch/sagpool
GNN-FiLM: Graph Neural Networks with Feature-wise Linear Modulation: https://github.com/dmlc/dgl/tree/master/examples/pytorch/GNN-FiLM
TensorFlow implementation of Simplifying Graph Convolutional Networks: https://github.com/dmlc/dgl/tree/master/examples/tensorflow/sgc
Graph Representation Learning via Hard and Channel-Wise Attention Networks: https://github.com/dmlc/dgl/tree/master/examples/pytorch/hardgat
Graph Random Neural Network for Semi-Supervised Learning on Graphs: https://github.com/dmlc/dgl/tree/master/examples/pytorch/grand
Hierarchical Graph Pooling with Structure Learning: https://github.com/dmlc/dgl/tree/master/examples/pytorch/hgp_sl
Towards Deeper Graph Neural Networks: https://github.com/dmlc/dgl/tree/master/examples/pytorch/dagnn
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation/PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space (part segmentation): https://github.com/dmlc/dgl/tree/master/examples/pytorch/pointcloud/pointnet
Graph Cross Networks with Vertex Infomax Pooling: https://github.com/dmlc/dgl/tree/master/examples/pytorch/gxn
Neural Graph Collaborative Filtering: https://github.com/dmlc/dgl/tree/master/examples/pytorch/NGCF
Link Prediction Based on Graph Neural Networks: https://github.com/dmlc/dgl/tree/master/examples/pytorch/seal
Graph Neural Networks with Convolutional ARMA Filters: https://github.com/dmlc/dgl/tree/master/examples/pytorch/arma
此外,DGL团队也对官方样例目录进行了整理。对样例按照一些重要的标签(如目标任务等)进行了索引。
系统易用性的改进
针对用户进行批次图(batched graph)进行变化的过程中无法手动设置批次信息的问题,DGL提供了两个新的API DGLGraph.set_batch_num_nodes 和 DGLGraph.set_batch_num_edges 。
针对整图分类任务提供了一个的数据加载器 GraphDataLoader。
提供了一个新的内置数据集QM9Dataset。
提供了一个新的子模块dgl.nn.functional,用于NN相关的函数。
增加了对于半精度训练的支持,并和PyTorch的自动混合精度包相互兼容。用户可以查看用户手册了解使用方法。
(测试版本功能) 增加了DistGraph类对于异构图数据的支持,同时也增加了dgl.sample_neighbors对DistGraph进行异构采样。此外,新版本DGL也增加了在分布式环境下进行图划分的支持。用户可以查看用户手册了解使用方法。
(测试版本功能) 增加了一些针对稀疏嵌入(Embedding)的新API:
提供了一个新的类dgl.nn.NodeEmbedding用于存储可训练的节点嵌入。经测试,该类可以支持百万级别的节点嵌入。
提供了两个新的优化器dgl.optim.SparseAdagrad 和 dgl.optim.SparseAdam,用于优化dgl.nn.NodeEmbedding。
系统效率的改进
通过使用PyTorch原生的内存管理机制,DGL减少了许多内存分配和释放的次数,从而提高了整体运行效率。
对nn.RelGraphConv进行了优化。在V100 GPU上的基准性能测试显示,它在AIFB数据集上有了4.8倍的训练速度提升。
想要了解更多?
请参阅完整的发布日志:
https://github.com/dmlc/dgl/releases/tag/v0.6.0