DGL(0.8.x) 技术点分析

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



相关文章
|
10月前
|
PyTorch 算法框架/工具 芯片
新手入门:DGL在昇腾上的安装问题
本文介绍了在aarch64架构和Python 3.10环境下安装DGL(Deep Graph Library)的过程。首先通过`uname -a`确认硬件架构,接着使用`python --version`检查Python版本。为确保兼容性,从指定链接下载适合的whl包或通过pip安装dgl。过程中遇到了torchdata版本不兼容的问题,通过降级torchdata至0.7.1版本解决。此外,针对NPU芯片适配,重新安装了与CANN 8.0.RC2兼容的torch和torch_npu组件。最终成功导入dgl包并准备进行模型训练验证。
|
9月前
|
关系型数据库 MySQL 数据库
从MySQL优化到脑力健康:技术人与效率的双重提升
聊到效率这个事,大家应该都挺有感触的吧。 不管是技术优化还是个人状态调整,怎么能更快、更省力地完成事情,都是我们每天要琢磨的事。
211 23
|
9月前
|
机器学习/深度学习 资源调度 计算机视觉
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
388 2
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
|
9月前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
5917 119
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
9月前
|
XML Shell Android开发
Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡
156 22
|
9月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
364 25
Linux系统之whereis命令的基本使用
|
9月前
|
机器学习/深度学习 人工智能 并行计算
图机器学习调研洞察:PyG与DGL
图神经网络(GNN)是人工智能领域的研究热点,广泛应用于社交网络、电商推荐、欺诈检测等。主流开源图学习引擎如DGL、PyG、GraphScope等在性能和社区活跃度上各有优劣。基于ogbn-products数据集的测试显示,DGL性能最优、内存占用最低,PyG次之。在AI for Science领域,PyG应用更广泛,尤其在小分子和晶体结构预测中表现突出。DGL采用Graph Centric方式,保留图结构;PyG则采用Tensor Centric方式,适合小图场景。
|
9月前
|
机器学习/深度学习 算法 计算机视觉
RT-DETR改进策略【SPPF】| SimSPPF,简化空间金字塔池化设计,提高计算效率
RT-DETR改进策略【SPPF】| SimSPPF,简化空间金字塔池化设计,提高计算效率
308 19
RT-DETR改进策略【SPPF】| SimSPPF,简化空间金字塔池化设计,提高计算效率
|
9月前
|
算法
基于排队理论的客户结账等待时间MATLAB模拟仿真
本程序基于排队理论,使用MATLAB2022A模拟客户结账等待时间,分析平均队长、等待时长、不能结账概率、损失顾客数等关键指标。核心算法采用泊松分布和指数分布模型,研究顾客到达和服务过程对系统性能的影响,适用于银行、超市等多个领域。通过仿真,优化服务效率,减少顾客等待时间。
187 33
|
9月前
|
机器学习/深度学习 数据可视化 网络架构
RT-DETR改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
RT-DETR改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF
208 18
RT-DETR改进策略【SPPF】| NeuralPS-2022 Focal Modulation : 使用焦点调制模块优化空间金字塔池化SPPF