DGL v0.7正式发布

DGL最新的v0.7版刚刚正式发布。大家已经可以通过pip或conda下载升级。这里我们总结了新版本的一些特性。

系统层面的增强

此次0.7版中有不少底层系统结构上的增强。其中很大一部分有来自用户社区的参与和贡献。我们非常高兴地注意到这一趋势,也欢迎未来能有更多来自社区的贡献。

基于GPU的邻居采样加速

我们知道邻居采样(neighbor sampling)是巨图训练非常重要的基础算法。在英伟达团队的帮助下,新版DGL现在支持在GPU上进行等概率邻居采样,并在GPU上完成MFG转换。这就避免了在每个采样迭代过程中把数据从CPU内存到GPU显存的拷贝,同时还能利用GPU的加速能力加快采样的过程。有了这一功能,在ogbn-product数据上运行GraphSAGE模型取得了超过10倍的提速 (在g3.16x实例上,每epoch运行时间从113秒降低到11秒)。想要使用这一功能,可以对一个存在GPU上的图创建一个NodeDataLoader,并指明在GPU上进行采样,如下所示。

g = ...             # 一个图
g = g.to('cuda:0')  # 把此图存入GPU
# 创建一个dataloader
dataloader = dgl.dataloading.NodeDataLoader(
    g,                                # 支持存在GPU上的图
    train_nid,
    sampler,
    device=torch.device('cuda:0'),    # 指定特定的GPU来进行采样
    num_workers=0,                    # num_workers必须设定成0
    batch_size=1000,
    drop_last=False,
    shuffle=True)
# 模型训练的循环
for input_nodes, output_nodes, sample_graphs in dataloader:
    # 生成的sample_graphs已经在GPU里了
    train_on(input_nodes, output_nodes, sample_graphs)

对应此功能,以下文档也相应地进行了修改:

在《用户手册》中新增了一章《Using GPU for Neighborhood Sampling》,介绍了何时以及如何使用这一新功能。

在NodeDataLoader代码中新增了API文档。

CPU上消息传递内核的加速

CPU上GNN消息传递的GSpMM内核的核心代码在0.7版中进行了改写增强。新的内核对CSR矩阵进行操作,并利用了英特尔的LibXSMM实现内核生成。相关细节可参考论文 https://arxiv.org/abs/2104.06700。在Xeon处理器上,这个功能会自动打开,从而带来显著的性能提升。这里非常感谢英特尔团队对于新CPU内核的贡献。

针对多GPU和分布式场景的节点嵌入(NodeEmbedding)模块的优化

新版的DGL使用NCCL来同步训练过程中的稀疏点嵌入(dgl.nn.NodeEmbedding)的梯度。用户指定nccl作为torch.distributed.init_process_group的后端选项时,这一功能会被自动启动。我们的试验显示,使用这一功能在ogbn-mag数据上训练RGCN会带来20%左右的提速。在g4dn.12xlarge实例(4块T4 GPU)上,每epoch的训练时间从47.2秒降到39.5秒。这里非常感谢英伟达团队的贡献。此外,在新版本中,分布式的点嵌入模块(dgl.distributed.DistEmbedding)也实现了同步的梯度更新机制,让训练过程更加的稳定。

DGL Kubernetes Operator

奇虎360团队为DGL贡献了专用的Kubernetes Operator,使得在Kubernates上使用DGL进行分布式或非分布式训练变得更加方便。感兴趣的用户可以参考奇虎团队的github仓库:https://github.com/Qihoo360/dgl-operator。

其他关键性能提升

除了上述提到的主要性能提升,DGL社区还帮助我们修复了一些性能的问题。其中,DGL在中等规模的图数据上使用CPU进行随机游走采样的速度提升了24倍。对十亿级别点的超大图进行分布式训练集分割的内存消耗节省了7倍。详情请参阅0.7版本的发布日志。

更多的模型

和之前的版本发布一样,0.7版里面也发布了新的19个模型样例,使得样例总数达到了90个。为了便于用户找到他们需要的样例(比如,特定的主题或数据集),我们在dgl.ai上提供了一个新的搜索工具,供用户使用关键字来搜索模型样例。

以下为0.7版里新发布的模型样例列表:

  • Interaction Networks for Learning about Objects, Relations, and Physics (https://arxiv.org/abs/1612.00222.pdf)

  • Multi-GPU RGAT for OGB-LSC Node Classification

  • Network Embedding with Completely-imbalanced Labels (https://ieeexplore.ieee.org/document/8979355)

  • Temporal Graph Networks improved

  • Diffusion Convolutional Recurrent Neural Network (https://arxiv.org/abs/1707.01926)

  • Gated Attention Networks for Learning on Large and Spatiotemporal Graphs (https://arxiv.org/abs/1803.07294)

  • DeeperGCN (https://arxiv.org/abs/2006.07739)

  • Deep Graph Contrastive Representation Learning (https://arxiv.org/abs/2006.04131)

  • Graph Neural Networks Inspired by Classical Iterative Algorithms (https://arxiv.org/abs/2103.06064)

  • GraphSAINT

  • Label Propagation

  • Combining Label Propagation and Simple Models Out-performs Graph Neural Networks (https://arxiv.org/abs/2010.13993)

  • GCNII

  • Latent Dirichlet Allocation on GPU

  • A Heterogeneous Information Network based Cross Domain Insurance Recommendation System for Cold Start Users

  • Five heterogeneous graph models: HetGNN/GTN/HAN/NSHE/MAGNN. Sparse matrix multiplication and addition with autograd are also added as a result.

  • Heterogeneous Graph Attention Networks with minibatch sampling

  • Learning Hierarchical Graph Neural Networks for Image Clustering

单机多GPU和分布式训练的教程

随着用户对于在超大规模图数据上运用图神经网络的需求的增加,我们收到了很多对于如何使用单机多GPU和多机分布式训练的问题。在本版本里,我们新增了两个教程,分别介绍了使用单机多GPU训练进行点分类和图分类的方法,和如何使用多机进行DGL分布式训练的方法。目前这两个教程都可以在docs.dgl.ai里面看到。

更多内容请参阅0.7版本

https://github.com/dmlc/dgl/releases/tag/v0.7.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DrugAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值