DGL(0.8.x) 技术点分析

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 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层提供的运算实现



相关文章
|
10月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
|
机器学习/深度学习 人工智能 并行计算
5分钟掌握开源图神经网络框架DGL使用
近几年神经网络在人工智能领域的成功应用,让它备受关注和热捧。但是,它自身依然具有本质上的局限性,以往的神经网络都是限定在欧式空间内,这和大多数实际应用场景并不符合,因此,也阻碍了它在很多领域的实际落地应用。
5分钟掌握开源图神经网络框架DGL使用
|
1月前
|
机器学习/深度学习 人工智能 并行计算
图机器学习调研洞察:PyG与DGL
图神经网络(GNN)是人工智能领域的研究热点,广泛应用于社交网络、电商推荐、欺诈检测等。主流开源图学习引擎如DGL、PyG、GraphScope等在性能和社区活跃度上各有优劣。基于ogbn-products数据集的测试显示,DGL性能最优、内存占用最低,PyG次之。在AI for Science领域,PyG应用更广泛,尤其在小分子和晶体结构预测中表现突出。DGL采用Graph Centric方式,保留图结构;PyG则采用Tensor Centric方式,适合小图场景。
|
6月前
|
机器学习/深度学习 数据采集 算法
R语言中的机器学习库:caret与mlr的深度解析
【9月更文挑战第2天】Caret和mlr是R语言中两个非常重要的机器学习库,它们在数据预处理、模型构建、调优和评估等方面提供了丰富的功能。Caret以其易用性和集成性著称,适合初学者和快速原型开发;而mlr则以其全面性和可扩展性见长,适合处理复杂的机器学习项目。在实际应用中,用户可以根据具体需求和项目特点选择合适的库进行开发。无论是学术研究、商业智能还是教育场景,这两个库都能为数据科学家和机器学习爱好者提供强大的支持。
|
8月前
|
机器学习/深度学习 数据采集 存储
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
在机器学习和数据科学中,数据预处理是一个至关重要的步骤。数据规范化(或称为特征缩放)是预处理的一种常见技术,它可以帮助我们改进模型的性能。`sklearn.preprocessing`模块提供了多种数据规范化的方法,其中`StandardScaler`和`MinMaxScaler`是最常用的两种。
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow、Keras 和 Python 构建神经网络分析鸢尾花iris数据集|代码数据分享
TensorFlow、Keras 和 Python 构建神经网络分析鸢尾花iris数据集|代码数据分享
|
10月前
|
机器学习/深度学习 自然语言处理 数据可视化
【数据分享】R语言对airbnb数据nlp文本挖掘、地理、词云可视化、回归GAM模型、交叉验证分析
【数据分享】R语言对airbnb数据nlp文本挖掘、地理、词云可视化、回归GAM模型、交叉验证分析
|
10月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)
【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)
253 0
|
机器学习/深度学习 存储 数据可视化
PyTorch 神经网络模型可视化(Netron)
PyTorch 神经网络模型可视化(Netron)
2160 0
|
机器学习/深度学习 自然语言处理 算法
【Pytorch神经网络实战案例】31 TextCNN模型分析IMDB数据集评论的积极与消极
【Pytorch神经网络实战案例】31 TextCNN模型分析IMDB数据集评论的积极与消极
805 0