欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

图神经网络代码_第一篇:图神经网络(GNN)计算框架绪论

发布时间:2025/3/19 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 图神经网络代码_第一篇:图神经网络(GNN)计算框架绪论 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

写在开头:

这个专栏是为了总结我本科毕业设计中所设计的题目《基于GPU的图神经网络算法库的设计钰实现》。这半年来一直在这个方向上啃代码,读论文,真的学到了很多东西。尤其是阅读了大佬团队写的开源框架代码,受益良多。本专栏计划从三个大的方面进行整理:

第一部分是对典型的图神经网络(GNN)模型 进行介绍,抽象出其核心的计算过程;

第二部分是对GPU编程进行介绍,即CUDA代码的编写;

第三部分是对目前学界和业界主流的图神经网络计算平台进行介绍,计划选取DGL和PyG。

绪论:

随着深度学习技术在2012年起开始的爆发式的发展。很多以欧式空间为输入空间并依赖手工特征工程提取特征的机器学习任务,如图像目标检测,语言识别与机器翻译等,被各种端到端的深度学习范式彻底改变了。尽管针对欧式空间设计的DNN(Deep Neural Network,深度神经网络)取得了巨大的成功,但在以图结构为代表的非欧式空间上这些性能强大的算法却难以一展拳脚。主要原因有两点:首先,图数据是不规则的,比如图中各节点的度是不确定的,这就导致一些在规则的欧式空间上定义的算子如卷积操作无法直接应用在图数据上,如图1.1 所示。此外,在很多图数据中每个节点与其邻居节点之间的拓扑结构链接蕴含了依赖或因果关系,而基于欧式空间的神经网络无法有效地对这些关系进行学习。因此,一系列针对图结构设计的GNN网络(Graph Neural Network,图神经网络)被学者们提出,其中代表性的有GCN网络[1](Graph Convolutional Network,图卷积网络),GraphSAGE模型[2],GAT网络[3](Graph Attention Network,图注意力网络)。

图1.1 欧式空间卷积操作(左图)和非欧式空间卷积操作的区别(右图)

于此同时,GPU(Graphics Processing Units, 图形处理单元)已经成为推动深度学习技术快速发展不可或缺的重要力量。GPU从曾经的图形加速器到现在已经演化为一种强大、多用途的、可编程的,用于大规模并行计算的协处理器。GPU的单指令多线程的众核架构有着并行加速神经网络计算天然的优势,如图1.2所示。目前英伟达性能最强悍的GPU是NVIDIA TITAN RTX,其包含了多达4608个单精度CUDA处理核心,这些核心又被划分为72个流式多核处理单元,另外还有一个高达24GB被所有核心共享的全局内存[6]。

图1.2 CPU与GPU架构对比[17]

为了更大程度的发挥出GPU的能力,英伟达公司推出了CUDA(Compute Unified Device Architecture,统一计算设备架构)编程模型[7]。CUDA编程模型提供了一个计算机架构抽象作为应用程序和其可用硬件之间的桥梁,程序员可以使用C语言自由设计所需的并行计算程序。CUDA已经从最早的CUDA 1.0版本发展到现在的CUDA 10.2版本,期间CUDA推出了专门针对神经网络优化的GPU加速库cuDNN(CUDA Deep Neural Network library,CUDA深度神经网络库)。现在GPU已经发展到了十分成熟的阶段,凭借硬件的进步和CUDA的不断发展其运行速度已远远超过了多核 CPU 的运算速度[8]。

GNN的训练难点:

尽管如此,为图数据编写高性能图神经网络算法仍然是一个非常有挑战性的任务。

  • 首先由于图结构的复杂性导致图神经网络难以像在欧式空间数据上那样实现一个通用且简洁高效的特征提取和消息传递范式。
  • 第二,由于图数据的不规则导致其很难与深度学习广泛使用的数据流编程范式相融合,这就使得图神经网络无法利用当前成熟的深度学习框架实现如反向传播等神经网络训练时专有的功能。
  • 第三,图数据的不规则也导致了难以设计出一种高效的并行算子对GNN的进行并行加速计算。
  • 第四,图数据的尺寸一般十分庞大,一个实际应用场景下的图,比如电商交易关系图和社交网络关系图往往有着数十万的节点和上亿的边,这就导致在设计图神经网络计算框架时需要考虑如何在有限的显存下对GNN进行并行加速。
  • 总结

    以上是生活随笔为你收集整理的图神经网络代码_第一篇:图神经网络(GNN)计算框架绪论的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。