博客详情

主页 / 博客详情
blog

v0.6 发布亮点

近期发布的 DGL 0.6 是该项目在文档、API、系统速度和可扩展性等多个方面的重大更新。本文重点介绍了一些新特性和增强功能。

120分钟闪电入门 DGL

这套全新的教程源自我们在多个重要学术会议(如 KDD’19, KDD’20, WWW’20)上进行的动手实践教程。它们从一个使用 GNN 进行节点分类的端到端示例开始,逐步揭示 DGL 中的核心组件,例如 DGLGraph、GNN 模块和图数据集。这些教程现已在 docs.dgl.ai 上提供。

blitz

GNN 小批量训练简明教程

现实世界的数据规模可能非常庞大,这需要通过小批量方式对 GNN 进行随机训练。然而,与图像或文本语料库中数据样本相互独立不同,GNN 的随机训练更为复杂,因为它必须处理样本之间的依赖关系。我们注意到随机训练是我们讨论论坛上最常被问到的主题之一。在 0.6 版本中,我们将这些常见问题的答案总结成一套关于 GNN 随机训练的教程,其中包括对邻居采样算法、训练循环以及在 DGL 中实现这些算法的代码片段的深入讲解。

sampling

更多示例

本次发布包含 13 个新示例,使得模型总数达到 72 个

官方示例文件夹现在按任务等显著标签对示例进行了索引。

易用性增强

  • 两个新的 API DGLGraph.set_batch_num_nodesDGLGraph.set_batch_num_edges,用于手动设置批处理信息,对于将一个批量图转换为另一个图或手动构建一个新的批量图非常有用。
  • 一个新的 API GraphDataLoader,是用于图分类任务的数据加载器封装。
  • 一个新的数据集类 QM9Dataset
  • 一个新的命名空间 dgl.nn.functional,用于存放与神经网络相关的实用函数。
  • DGL 现在支持半精度训练,并与 PyTorch 的自动混合精度包兼容。有关如何使用的详细信息,请参阅用户指南章节
  • (实验性)用户现在可以将 DistGraph 与异构图数据一起使用。这也适用于在 DistGraph 上调用 dgl.sample_neighbors。此外,DGL 支持在机器集群上进行分布式图划分。有关更多详细信息,请参阅用户指南章节
  • (实验性)几个用于训练稀疏嵌入的新 API

系统效率提升

  • 使用 PyTorch 后端时,DGL 将使用 PyTorch 原生的内存管理来缓存重复的内存分配和释放。
  • low_mem=True 时,nn.RelGraphConv 的新实现(PyTorch 后端)。在 V100 GPU 上的基准测试显示,它在 AIFB 数据集上的训练速度提升了 4.8 倍
  • 使用 AVX512 指令集实现更快的 CPU 内核。
  • 在 CUDA 11 上实现更快的 GPU 内核。

进一步阅读