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盲盒。
目录
相关文章
|
缓存 PyTorch 数据处理
基于Pytorch的PyTorch Geometric(PYG)库构造个人数据集
基于Pytorch的PyTorch Geometric(PYG)库构造个人数据集
1061 0
基于Pytorch的PyTorch Geometric(PYG)库构造个人数据集
|
3月前
|
开发工具 git 计算机视觉
Mindspore r0.7版本运行Lenet_MNIST
Mindspore r0.7版本运行Lenet_MNIST
35 2
|
5月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
使用Keras API构建神经网络的三种方法:使用Sequential模型、使用函数式API以及通过继承Model类来自定义模型,并提供了基于MNIST数据集的示例代码。
64 12
|
8月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
【2月更文挑战第22天】本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C++等其他语言中将其打开的方法~
162 1
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
|
机器学习/深度学习 数据可视化 数据挖掘
PyTorch Geometric (PyG) 入门教程
PyTorch Geometric是PyTorch1的几何图形学深度学习扩展库。本文旨在通过介绍PyTorch Geometric(PyG)中常用的方法等内容,为新手提供一个PyG的入门教程。
PyTorch Geometric (PyG) 入门教程
|
机器学习/深度学习 人工智能 PyTorch
Keras 3.0预览版迎来重大更新:适用于TensorFlow、JAX和PyTorch
Keras 3.0预览版迎来重大更新:适用于TensorFlow、JAX和PyTorch
174 0
|
机器学习/深度学习 存储 并行计算
【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库
DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC、RGCN等业内知名的模型实现上也取得了很好的效果。
1709 0
|
机器学习/深度学习 算法 PyTorch
介绍from dgl.nn.pytorch import RelGraphConv中的RelGraphConv功能
RelGraphConv是DGL库中的一个PyTorch图神经网络层,它实现了关系图卷积(RGCN)。相比于普通图卷积(GCN)只考虑节点与邻居之间的连接,RGCN还考虑了边的类型。因此,RGCN可以更好地处理多关系的图数据,即数据中有不同类型的边。 在RelGraphConv中,每种边类型都会有一组对应的参数,通过这些参数,RGCN可以在每种边类型上学习不同的权重。因此,RelGraphConv具有更强的表达能力。此外,RelGraphConv还支持dropout和批规范化等技术。
413 0
|
机器学习/深度学习 存储 算法
图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
4.图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
|
机器学习/深度学习 算法 大数据
基于GCN和DGL实现的图上 node 分类, 值得一看!!!
基于GCN和DGL实现的图上 node 分类, 值得一看!!!