图神经网络代码_第一篇:图神经网络(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)计算框架绪论的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: string 字符串中字符无效_7.3
- 下一篇: power shell远程_PowerS