0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第一个支持图神经网络的并行处理框架出现了

DPVg_AI_era 来源:未知 作者:李倩 2018-11-01 09:31 次阅读

第一个支持图神经网络的并行处理框架出现了!北京大学、微软亚洲研究院的研究人员近日发表论文,提出NGra,这是第一个支持大规模GNN的系统。

GNN(图神经网络)代表了一种新兴的计算模型,这自然地产生了对在大型graph上应用神经网络模型的需求。

但是,由于GNN固有的复杂性,这些模型超出了现有深度学习框架的设计范围。此外,这些模型不容易在并行硬件(如GPU)上有效地加速。

近日,北京大学、微软亚洲研究院的多位研究人员在arXiv上发布了一篇新论文,提出了解决这些问题的有效方案。

论文题为Towards Efficient Large-Scale Graph Neural Network Computing:

论文地址:https://arxiv.org/pdf/1810.08403.pdf

作者表示:“我们提出NGra,这是第一个基于图形的深度神经网络并行处理框架。”

NGra描述了一种新的SAGA-NN模型,用于将深度神经网络表示为顶点程序(vertex programs) ,其中每一层都在明确定义的图形操作阶段(Scatter,ApplyEdge,Gather,ApplyVertex)。

这个模型不仅允许直观地表示GNN,而且还可以方便地映射到高效的数据流表示。NGra通过GPU核心或多GPU的自动图分区和基于chunk的流处理透明地解决了可扩展性挑战,仔细考虑了数据局部性、数据移动以及并行处理和数据移动的重叠。

NGra通过在GPU上进行高度优化的Scatter / Gather操作进一步提高了效率,尽管它具有稀疏性。我们的评估表明,NGra可以扩展到现有框架无法直接处理的大型实际图形,而在TensorFlow的multiple-baseline设计上,即使在小规模上也可以实现约4倍的加速。

第一个支持大规模GNN的系统

NGra是第一个支持大规模GNN(图神经网络)的系统,这是一个在GPU上可扩展、高效的并行处理引擎。

NGra自然地将数据流(dataflow)与顶点程序抽象(vertex-program abstraction)结合在一个新模型中,我们将其命名为SAGA-NN(Scatter-ApplyEdge-Gather-ApplyVertex with Neural Networks)。

虽然SAGA可以被认为是GAS(Gather-Apply-Scatter)模型的变体,但SAGA-NN模型中的用户定义函数允许用户通过使用数据流抽象来表示对vertex或edge数据(被视为tensors)的神经网络计算,而不是专为传统图形处理而设计(例如PageRank、 connected component和最短路径等算法

与DNN一样,高效地使用GPU对于GNN的性能至关重要,而且由于要处理的是大型图形结构,这一点更为重要。为了实现超出GPU物理限制的可扩展性,NGra将图形(顶点和边缘数据)透明地划分为块(chunk),并将SAGA-NN模型中表示的GNN算法转换为具有chunk粒度的运算符的dataflow graph,从而在单个GPU或多个GPU上启用基于chunk的并行流处理。

NGra engine的效率在很大程度上取决于NGra如何管理和调度并行流处理,以及在GPU上关键图形传播运算符Scatter和Gather的实现。

NGra非常注重数据局部性,以最大限度地减少GPU内存中的数据交换,并在GPU内存中最大化数据块的重用,同时将数据移动和计算以流的方式重叠。

对于多GPU的情况,它使用 ring-based streaming机制,通过直接在GPU之间交换数据块来避免主机内存中的冗余数据移动。

与其他基于GPU的图形引擎关注的传统图形处理场景不同,在GNN场景中,可变顶点数据本身可能无法容纳到GPU设备内存中,因为每个顶点的数据可以是特征向量( feature vector)而不是简单的标量(scalar)。因此,我们的方案更倾向于在每个顶点数据访问中利用并行性,从而提高内存访问效率。

我们通过使用vertex-program abstraction和图形传播过程的自定义运算符扩展TensorFlow,从而实现NGra。

我们利用单个服务器的主机内存和GPU的计算能力,证明NGra可以扩展以支持大型图形的各种GNN算法,其中许多是现有深度学习框架无法直接实现的。

与小型graph上的TensorFlow相比,它可以支持GPU,NGra可以获得最多4倍的加速。我们还广泛评估了NGra的多重优化所带来的改进,以证明其有效性。

接下来的部分将描述SAGA-NN编程抽象,NGra系统的组件,以及NGra的实现和评估。

NGra程序抽象

基于图(graph)的神经网络(GNN)是根据图形结构定义的一类通用神经网络架构。

图中的每个顶点或边可以与张量数据(通常是vector)相关联,作为其特征或嵌入。GNN可以堆叠在多个层中,迭代传播过程在同一个图上逐层进行。

在图的每个层中,顶点或边缘要素沿边缘变换和传播,并在目标顶点聚合,以生成下一层的新要素。转换可以是任意的DNN计算。

图还可以包含每个顶点,每个边缘或整个图形的标签,用于计算顶层的损失函数。然后从底层到顶层执行前馈计算(feedforward computation)和反向传播。

图1描述了一个2层的GNN的前馈计算。

图1

我们使用Gated Graph ConvNet(G-GCN)算法作为一个具体示例。 Graph ConvNet概括了卷积运算的概念,通常应用于图像数据集,用于处理任意图形(例如knowledge graph)。Gated Graph ConvNet进一步结合了门控机制,因此模型可以了解哪些边对学习目标更重要。

G-GCN每一层的前馈计算如图2所示:

图2:SAGA-NN模型中,Gated Graph ConvNet的layer,其中⊗指矩阵乘法。

NGra系统的组成

NGra提供dataflow和vertex program abstractions的组合作为用户界面。

NGra主要包括:

一个前端,它将SAGA-NN模型中实现的算法转换为块粒度数据流图(chunk-granularity dataflow graph),使GPU中大型图的GNN计算成为可能;

一个优化层,它产生用于最小化主机和GPU设备存储器之间的数据移动的调度策略,并识别融合操作和删除冗余计算;

一组有效的传播操作内核,支持基于流的处理,以将GPU中的数据移动和计算重叠;

dataflow execution runtime。NGra主要利用现有的基于数据流的深度学习框架来处理dataflow execution runtime。

图3:SAGA-NN Stages for each layer of GN

NGra的优化

图4描述了ApplyEdge阶段中矩阵乘法运算:

图4

图5显示了优化的dataflow graph,其中矩阵乘法移入ApplyVertex stage:

图7是多GPU的架构

图7:多GPU架构

NGra的评估

我们在TensorFlow (v1.7) 上实现NGra,使用大约2,900行C++代码和3000行Python代码。NGra通过前端扩展TensorFlow,将SAGA-NN程序转换为chunk-granularity dataflow graph,几个scatter/gather 运算符,以实现高效的图传播,以及ring-based的流调度方案。

以下是评估结果。评估证明了NGra的高效和可扩展性,以及与state-of-the-art的系统TensorFlow的比较。

表1:数据集 (K: thousand, M: million)

图13:TensorFlow(TF),cuSPARSE和NGra(NG) 在不同密度graphs上的传播内核时间

表2:与TensorFlow的迭代时间比较(ms)

图14:不同应用程序的Streaming scheduling策略比较。(Data: reddit middle)

图15:NGra在不同应用程序的扩展性能

图16:在大型图上使用不同应用程序加速NGra

结论

GNN代表了一种新兴的计算模型,这自然地产生了对在大型graph上应用神经网络模型的需求。由于GNN训练固有的复杂性,支持高效的、可扩展的并行计算是很困难的。

NGra是第一个支持GNN的并行处理框架,它使用新的编程抽象,然后将其映射和优化为数据流,进而在GPU上高效执行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微软
    +关注

    关注

    4

    文章

    6218

    浏览量

    103063
  • 神经网络
    +关注

    关注

    42

    文章

    4562

    浏览量

    98645
  • 深度学习
    +关注

    关注

    73

    文章

    5224

    浏览量

    119865

原文标题:北大、微软亚洲研究院:高效的大规模图神经网络计算

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浅析深度神经网络压缩与加速技术

    深度神经网络是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似
    的头像 发表于 10-11 09:14 386次阅读
    浅析深度<b class='flag-5'>神经网络</b>压缩与加速技术

    《 AI加速器架构设计与实现》+学习和些思考

    几个问题: 网络结构简单(貌似对我来说是优点,容易看懂) 对于些问题的抽象程度不够 难以体现输入的数据之间的关系 因此GCN应运而生,GCN是基于神经网络,其基本
    发表于 09-16 11:11

    不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)

    ,是模拟人工智能的条重要途径。人工神经网络与人脑相似性主要表现在: ①神经网络获取的知识是从外界环境学习得来的; ②各神经元的连接权,即突触权值,用于储存获取的知识。
    发表于 09-13 16:41

    《 AI加速器架构设计与实现》+第一章卷积神经网络观后感

    《 AI加速器架构设计与实现》+第一章卷积神经网络观感    在本书的引言中也提到“胜千言”,读完第一章节后,对其进行了
    发表于 09-11 20:34

    人工神经网络和bp神经网络的区别

    人工神经网络和bp神经网络的区别  人工神经网络(Artificial Neural Network, ANN)是一种模仿人脑神经元网络结构和功能的计算模型,也被称为
    的头像 发表于 08-22 16:45 3406次阅读

    卷积神经网络和深度神经网络的优缺点 卷积神经网络和深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经元之间的权重,从而实现对大规模数据进行预测和分类。卷积
    发表于 08-21 17:07 2222次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    的深度学习算法。CNN模型最早被提出是为了处理图像,其模型结构中包含卷积层、池化层和全连接层等关键技术,经过多个卷积层和池化层的处理,CNN可以提取出图像中的特征信息,从而对图像进行分类。 一、卷积神经网络算法 卷积
    的头像 发表于 08-21 16:49 1406次阅读

    卷积神经网络的基本原理 卷积神经网络发展 卷积神经网络三大特点

    中最重要的神经网络之一。它是一种由多个卷积层和池化层(也可称为下采样层)组成的神经网络。CNN 的基本思想是以图像为输入,通过网络的卷积、下采样和全连接等多个层次的处理,将图像的高层抽
    的头像 发表于 08-21 16:49 1415次阅读

    卷积神经网络三大特点

    是一种基于图像处理神经网络,它模仿人类视觉结构中的神经元组成,对图像进行处理和学习。在图像处理中,通常将图像看作是二维矩阵,即每个像素点都
    的头像 发表于 08-21 16:49 3452次阅读

    卷积神经网络模型有哪些?卷积神经网络包括哪几层内容?

    、视频等信号数据的处理和分析。卷积神经网络就是一种处理具有类似网格结构的数据的神经网络,其中每个单元只处理与之直接相连的
    的头像 发表于 08-21 16:41 1489次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点  卷积神经网络(Convolutional neural network,CNN)是一种基于深度学习技术的
    的头像 发表于 08-21 16:41 1910次阅读

    卷积神经网络的应用 卷积神经网络通常用来处理什么

    卷积神经网络的应用 卷积神经网络通常用来处理什么 卷积神经网络(Convolutional Neural Network,简称CNN)是一种在神经网
    的头像 发表于 08-21 16:41 3894次阅读

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    一。其主要应用领域在计算机视觉和自然语言处理中,最初是由Yann LeCun等人在20世纪80年代末和90年代初提出的。随着近年来计算机硬件性能的提升和深度学习技术的发展,CNN在很多领域取得了重大的进展和应用。 一、卷积神经网络模型 (一)卷积层(Convolution
    的头像 发表于 08-17 16:30 889次阅读

    用CMSIS-NN版本转换Arm Cortex-M的神经网络:r0p0指南

    2. 概览 本指南向您展示了如何将神经网络从任何框架转换成基于 Arm Cortex-M-M 装置的实施工具, 使用 Arm CMSIS- NN 库。 此教程用于不再
    发表于 08-11 07:06

    如何使用TensorFlow将神经网络模型部署到移动或嵌入式设备上

    有很多方法可以将经过训练的神经网络模型部署到移动或嵌入式设备上。不同的框架在各种平台上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如Android
    发表于 08-02 06:43