DGL v0.7正式发布

简介: 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内核的贡献。


image.png

image.png

针对多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上提供了一个新的搜索工具,供用户使用关键字来搜索模型样例。

image.png

以下为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里面看到。

image.png

更多内容请参阅0.7版本

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

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
机器学习/深度学习 人工智能 并行计算
5分钟掌握开源图神经网络框架DGL使用
近几年神经网络在人工智能领域的成功应用,让它备受关注和热捧。但是,它自身依然具有本质上的局限性,以往的神经网络都是限定在欧式空间内,这和大多数实际应用场景并不符合,因此,也阻碍了它在很多领域的实际落地应用。
5分钟掌握开源图神经网络框架DGL使用
|
4月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十二)(6)
Transformers 4.37 中文文档(四十二)
34 5
|
4月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(四十二)(5)
Transformers 4.37 中文文档(四十二)
44 4
|
4月前
|
XML 测试技术 数据格式
Transformers 4.37 中文文档(四十二)(4)
Transformers 4.37 中文文档(四十二)
34 3
|
4月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十二)(3)
Transformers 4.37 中文文档(四十二)
21 2
|
4月前
|
自然语言处理 PyTorch 区块链
Transformers 4.37 中文文档(四十二)(1)
Transformers 4.37 中文文档(四十二)
72 1
|
4月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(四十二)(2)
Transformers 4.37 中文文档(四十二)
60 1
|
4月前
|
PyTorch 算法框架/工具 计算机视觉
Transformers 4.37 中文文档(六十四)(4)
Transformers 4.37 中文文档(六十四)
25 1
|
4月前
|
编解码 PyTorch 定位技术
Transformers 4.37 中文文档(六十四)(3)
Transformers 4.37 中文文档(六十四)
34 0
|
4月前
|
机器学习/深度学习 存储 PyTorch
Transformers 4.37 中文文档(六十四)(5)
Transformers 4.37 中文文档(六十四)
20 0