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必须设定成0batch_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

DGL v0.7正式发布相关推荐

  1. K8S 生态周报| KIND v0.8 正式发布

    「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息.欢迎订阅知乎专栏「k8s 生态」 ( https://zhuanlan.zhihu.com/container ...

  2. 从另一页面调用html代码_GNE v0.1正式发布:4行代码开发新闻网站通用爬虫

    摄影:产品经理GNE 比羊肉面还香! GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片 ...

  3. 性能提升19倍,DGL重大更新支持亿级规模图神经网络训练

    https://www.toutiao.com/a6690329469023945220/ 本文重点介绍了 DGL v0.3的重要特性之一 - 消息融合. 我们在去年12月发布了Deep Graph ...

  4. 开源图神经网络框架DGL升级:GCMC训练时间从1天缩到1小时,RGCN实现速度提升291倍...

    乾明 编辑整理  量子位 报道 | 公众号 QbitAI 又一个AI框架迎来升级. 这次,是纽约大学.亚马逊联手推出图神经网络框架DGL. 不仅全面上线了对异构图的支持,复现并开源了相关异构图神经网络 ...

  5. 图网络:从数据处理到DGL模型构建(GCN, GraphSAGE, RGCN)

    目录 1.数据处理 1.1.原始数据节点去重 1.2.训练集和测试集的节点划分 1.3.边数据中删除节点 1.4.节点特征数据和Label 2.建图 2.1.同质图 Networkx→DGL 2.2. ...

  6. websocket 本地可以服务器断开 springboot linux_SpringBoot+WebSocket实现简单的数据推送...

    问题背景 为什么要要用websocket呢?websocket相对于传统http协议有什么优势呢? http协议有一个缺陷,就是通信只能由客户端发起,服务器返回数据,不能做到服务器主动向客户端推送.这 ...

  7. js 链接websocket马上断开_SpringBoot+WebSocket实现简单的数据推送

    问题背景 为什么要要用websocket呢?websocket相对于传统http协议有什么优势呢? http协议有一个缺陷,就是通信只能由客户端发起,服务器返回数据,不能做到服务器主动向客户端推送.这 ...

  8. 2023年4月国产数据库大事记-墨天轮

    本文为墨天轮社区整理的2023年4月国产数据库大事件和重要产品发布消息. 目录 4月国产数据库大事记 TOP10 4月国产数据库大事记(时间线) 产品/版本发布 兼容认证 代表厂商大事记 厂商活动 相 ...

  9. 「紫禁之巅」四大图神经网络架构

    近年来,人们对深度学习方法在图数据上的扩展越来越感兴趣.在深度学习的成功推动下,研究人员借鉴了卷积网络.循环网络和深度自动编码器的思想,定义和设计了用于处理图数据的神经网络结构.图神经网络的火热使得各 ...

最新文章

  1. python爬取电影和美食数据实战
  2. python管道_python中管道用法入门,举个例子
  3. influxdb java api使用_java使用influxDB数据库的详细源码
  4. linux运行库,Linux C 静态库 共享库 运行库
  5. mybatis-plus根据多个字段排序_PHP中Thinkphp5框架的多字段排序
  6. 两次被简书签约作者拉黑的经历
  7. java 构造函数的执行顺序
  8. 前景检测算法(二)--codebook和平均背景法
  9. 使用vue自定义组件以及动态时间
  10. vim保存文件”:wq与“:x的区别以及小写:x与大写“:X”的区别
  11. matlab二阶系统设置参数,一阶和二阶系统响应的matlab制作
  12. 大学课程 | 《计算机网络》知识点超详细总结
  13. SG90舵机的电路连接和驱动(树莓派)
  14. 入门小白不到三个月就学会了用maya软件如何制作动画
  15. 【第十八题】填坑I(北理工/北京理工大学/程序设计方法与实践/小学期 )
  16. 自然语言处理(一)——中英文分词
  17. 解决win10系统便签提示无法打开这个应用,以及win10下照片查看器的问题
  18. 修改MTK平台Android P系统支持系统A/B分区升级
  19. 初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意
  20. 代理arp 无故arp 反向arp

热门文章

  1. 确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...
  2. dorado7通用代码
  3. GRE逻辑单题:削弱、加强和假设
  4. u盘拷贝显示目标文件过大怎么办-解决方法
  5. C#Parse 方法
  6. Junous HA配置
  7. 应对劳动力红利瓶颈的对策
  8. 无限个开区间的交是闭区间的例子
  9. ScalaNote11-面向过程练习题2
  10. 微信扫二维码缓存的问题