目前,深度学习技术通常以深度神经网络(DNN)的形式展现。由于其在语音、视觉和自然语言处理等领域所取得的成功,深度学习技术越来越受欢迎。在这些领域中,底层数据表征的坐标通常具有规则的网格结构,这有利于包含大量类似于单指令多数据流(SIMD)数据并行运算的硬件加速机制(例如 GPU)。
目前,将深度学习模型应用在具有不规则图结构的数据上成为了一种新兴的趋势 ,这种趋势是由诸如社交网络、知识图谱、以及生物信息学和神经科学(例如,蛋白质之间的交互或大脑中的神经元连接)中的图形的重要性所驱动的。这种趋势也促使人们在其目标应用(例如,分类、嵌入、问答系统)上取得了当前最佳的结果。这些基于图的神经网络(GNN)通常将神经网络模型应用在图中与顶点和边相关的特征上,传播运算结果并进行聚合,从而生成下一级的特征。
现有的解决方案都不能很好地支持 GNN。现有的图处理引擎往往会提供一个类似于信息收集(Gather)——应用(Apply))——结果分发(Scatter)的 GAS 顶点程序模型,但这种方式无法在图结构中表达和支持神经网络架构。TensorFlow、PyTorch、MxNet[8]、CNTK等深度学习框架旨在将神经网络表示为数据流图,但并不直接支持图传播模型。此外,它们都不能提供处理大型图所需的可扩展性,也不支持基于 GPU 的图传播 operator(将图传播转换为稀疏操作)的高效实现。当前缺乏对这些需求的支持严重限制了充分挖掘大规模 GNN 潜力的能力,同时也为 DNN 与大型图结构的结合在系统层面上提出了巨大的挑战。
在本文中,作者介绍了首次实现支持大规模 GNN 的 NGra 系统,它从一个易于表达的编程模型发展到一个可扩展的、高效 GPU 并行处理引擎。NGra 将数据流与顶点程序的抽象自然地结合在了一个名为 SAGA-NN(Scatter-Apply Edge Gather-Apply Vertex with Neural Networks)的新模型中。SAGA 可以被认为是一个 GAS 模型的变体,SAGA-NN 模型中由用户定义的函数使用户能够通过使用数据流抽象(而不是使用那些为处理传统图问题如 PageRank、连通分量、最短路径而设计的算法)在顶点或边数据(以张量形式被处理)上表达神经网络计算。
与在深度神经网络上的情况一样,高效使用 GPU 对 GNN 的性能至关重要,而且由于处理大型图结构的额外挑战,对 GPU 的使用就显得更为关键了。为了实现超越 GPU 物理限制的可扩展性,NGra 显式地将图结构划分(顶点和边数据)成块,将一个在 SAGA-NN 模型中表达的 GNN 算法转成了具有块粒度 operator 的数据流图,通过该数据流图,作者可以在单个或多个 GPU 上进行基于块的并行流处理。
然后,NGra 引擎的效率在很大程度上取决于 NGra 如何管理和调度并行流的处理过程,以及如何在 GPU 上实现关键的图传播 operator(结果分发和信息收集)。NGra 十分关注数据的位置,从而尽量减少 GPU 内存内外的数据交换,最大限度地提高 GPU 内存中数据块的重用性,同时以流形式同时进行数据迁移和计算。对于多 GPU 的情况,它使用了一种基于环的流机制,通过在 GPU 之间直接交换数据块来避免主机内存中的冗余数据迁移。SAGA-NN 模型中的结果分发和信息收集阶段执行沿着边的顶点数据传播,在稀疏结构上表现为矩阵乘法。众所周知,在像 GPU 这样数据并行的硬件上执行稀疏的矩阵操作是非常困难的。因此,NGra 将图传播引擎支持的特殊 operator 引入到数据流图中,并优化其在 GPU 上的执行。请注意,与其 基于 GPU 的图引擎所关注的传统图处理场景不同,在 GNN 的场景下,由于每个顶点的数据可能就是一个特征向量,而不是简单的标量,可变顶点数据本身可能无法被容纳到 GPU 设备内存中。因此,本文的方案更倾向于利用每个顶点数据访问中的并行性来提高内存访问效率。
作者使用顶点程序抽象和用于图传播过程的自定义 operater 对 TensorFlow 进行扩展,从而实现 NGra。结果证明 NGra 可以被扩展,然后通过利用单个服务器的主机内存和 GPU 的计算能力,实现在(包含数百万顶点和数百特征维度以及数亿边的)大型图上对 GNN 算法的支持,而这不能直接通过使用现有的深度学习框架实现。与可以通过 GPU 支持的小型图上的 TensorFlow 相比,NGra 可以取得大约 4 倍的运算加速。作者还对 NGra 中的多个优化所带来的性能提升进行了广泛的评估,以证明它们的有效性。
NGra 系统
<section style="white-space: normal;line-height: 1.75em;text-align: center;"><strong style="color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;widows: 1;background-color: rgb(255, 255, 255);max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong>完<strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong></span></strong></span></strong></section><pre><pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section><section style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;white-space: normal;widows: 1;max-width: 100%;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;font-size: 16px;white-space: normal;widows: 1;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;color:#000;">吴恩达推荐笔记:22 张图总结深度学习全部知识</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;">图灵奖得主Yann LeCun《深度学习》春季课程</section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;">你一定从未看过如此通俗易懂的YOLO系列解读 (下)</section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;">22课时、19大主题,CS 231n进阶版课程视频上线</section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="color: rgb(87, 107, 149);font-size: 14px;">震惊!这个街道办招8人,全是清华北大博士硕士!</span><br /></section></section></section></section></section></section></section></section></section>
本篇文章来源于: 深度学习这件小事
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
内容反馈