DGL(0.8.x) 技术点分析

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: DGL是由Amazon发布的图神经网络开源库,支持TensorFlow、PyTorch和MXNet。DGL采用消息传递范式进行图计算,包括边上计算、消息函数、点上计算、聚合与更新函数等。其架构分为顶层业务抽象、Backend多后端适配、Platform高效计算适配以及C++性能敏感功能层,确保高效、灵活的图神经网络开发。

DGL为Amazon发布的图神经网络开源库(github)。支持tensorflow, pytorch, mxnet。

如何初始化一个图:

  • 节点ID从0开始标号
  • G = dgl.graph((us, vs)) 一系列点和边,us->vs
  • G.add_nodes(n) 添加n个点
  • G.add_edge(u, v)添加边u->v
  • G.add_edges(u[s], v[s])添加边u[s]->v[s]
  • 节点和边都可以具有特征数据,存储为键值对,键是可选的,值必须是张量
  • G.ndata['x'] = th.zeros((3, 5)) 对所有节点都设置特征数据,名称为x
  • G.ndata['y'] = th.randn(g.num_nodes(), 5) 不同名称的特征数据可以有不同形状
  • G.nodes[[0, 2]].data['x'] = th.ones((2, 5)) 对节点0,2设置特征数据

消息传递范式:

  • 边上计算:计算边信息(涉及消息函数)
  • 消息函数:接受edges,成员包括src, dst, data,得到发出的信息
  • 点上计算:汇总边信息,更新点信息(涉及聚合函数,更新函数
  • 聚合函数: 节点有属性mailbox访问节点收到的信息,并进行聚合操作(min, max, sum等)
  • 更新函数: 用聚合函数的结果对原特征进行更新
  • 高级API
  • update_all: 接受一个消息函数,一个聚合函数,一个更新函数
  • 高效的消息传递代码
  • 实现细节避免消耗大量内存: 大矩阵乘法分拆
  • 在图的一部分上进行消息传递:用想囊括的节点创建一个子图


顶层提供对不同业务抽象

Backend层: 实现多后端适配

Platform层:适配不同架构,支持高效计算

Platform层:适配不同架构,支持高效计算


c++层提供性能敏感功能

python层基于c++能力拓展更多功能,同时算子多态适配不同后端

图网络算子基于python层提供的运算实现



相关文章
|
机器学习/深度学习 人工智能 并行计算
5分钟掌握开源图神经网络框架DGL使用
近几年神经网络在人工智能领域的成功应用,让它备受关注和热捧。但是,它自身依然具有本质上的局限性,以往的神经网络都是限定在欧式空间内,这和大多数实际应用场景并不符合,因此,也阻碍了它在很多领域的实际落地应用。
5分钟掌握开源图神经网络框架DGL使用
|
3天前
|
机器学习/深度学习 人工智能 并行计算
图机器学习调研洞察:PyG与DGL
图神经网络(GNN)是人工智能领域的研究热点,广泛应用于社交网络、电商推荐、欺诈检测等。主流开源图学习引擎如DGL、PyG、GraphScope等在性能和社区活跃度上各有优劣。基于ogbn-products数据集的测试显示,DGL性能最优、内存占用最低,PyG次之。在AI for Science领域,PyG应用更广泛,尤其在小分子和晶体结构预测中表现突出。DGL采用Graph Centric方式,保留图结构;PyG则采用Tensor Centric方式,适合小图场景。
|
4月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
69 0
|
5月前
|
机器学习/深度学习 数据采集 算法
R语言中的机器学习库:caret与mlr的深度解析
【9月更文挑战第2天】Caret和mlr是R语言中两个非常重要的机器学习库,它们在数据预处理、模型构建、调优和评估等方面提供了丰富的功能。Caret以其易用性和集成性著称,适合初学者和快速原型开发;而mlr则以其全面性和可扩展性见长,适合处理复杂的机器学习项目。在实际应用中,用户可以根据具体需求和项目特点选择合适的库进行开发。无论是学术研究、商业智能还是教育场景,这两个库都能为数据科学家和机器学习爱好者提供强大的支持。
|
7月前
|
机器学习/深度学习 数据采集 存储
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
|
机器学习/深度学习 存储 数据可视化
PyTorch 神经网络模型可视化(Netron)
PyTorch 神经网络模型可视化(Netron)
2013 0
|
存储 数据采集 机器学习/深度学习
Prophet模型的简介以及案例分析(下)
Prophet模型的简介以及案例分析(下)
|
机器学习/深度学习 自然语言处理 算法
用Python实现一个基础的神经网络模型
用Python实现一个基础的神经网络模型
451 0
|
机器学习/深度学习 存储 并行计算
【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库
DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC、RGCN等业内知名的模型实现上也取得了很好的效果。
1765 0
|
机器学习/深度学习 数据采集 算法
Prophet模型的简介以及案例分析(上)
Prophet模型的简介以及案例分析