Skip to content

Euler 2.0 概述

origin edited this page Jun 30, 2020 · 3 revisions

本章的章节安排如下:

新增功能

概览

图作为表达能力很强的通用的数据结构,可以用来刻画现实世界中的很多问题,例如社交场景的用户网络、电商场景的用户和商品网络、电信场景的通信网络、金融场景的交易网络和医疗场景的药物分子网络等等。文本、语音和图像领域的数据比较容易处理成欧式空间的Grid-like类型,适合现有的深度学习模型处理。图是一种非欧空间下的数据类型,并不能直接应用现有方法,需要专门设计的图神经网络系统。

图神经网络等基于图的学习方法将端到端学习与归纳推理相结合,有望解决深度学习无法处理的关系推理、可解释性等一系列问题。对结构知识的表达、计算和组合泛化是实现具备human-like AI的关键。

Euler-2.0是大规模分布式的图学习框架,配合TensorFlow或者阿里内部的XDL等深度学习工具,可以支持数十亿点数百亿边的复杂异构图上进行模型训练。本系统的核心能力如下:

  • 大规模图的分布式学习。工业界的图往往具有数十亿节点数百亿边,有些场景甚至可以到数百亿节点数千亿边,在这样规模的图上单机训练是不可行的。Euler-2.0支持图分割和高效稳定的分布式训练,可以轻松支撑如此规模的图数据。
  • 图学习与深度学习的结合。工业界有很多经典场景,例如搜索/推荐/广告场景,传统的深度学习方法有不错效果,如何把图学习和传统方法结合起来,进一步提升模型能力是很值得探索的。Euler支持基于深度学习样本的mini-batch训练,把图表征直接输入到深度学习网络中联合训练。
  • 支持复杂异构图的表征。工业界的图关系大都错综复杂,体现在节点异构、边关系异构,另外节点和边上可能有非常丰富的属性,这使得一些常见的图神经网络很难学到有效的表达。Euler-2.0在图结构存储和图计算的抽象上均良好的支持异构点、异构边类型的操作,并支持丰富的异构属性,可以很容易的进行异构图的表征学习。
  • 支持邻居、节点按照属性进行过滤。Euler-2.0通过引入节点、边、邻居的属性索引,可以按照属性值对图结构进行过滤,为算法迭代过程中引入更多专家先验知识提供便利。
  • 分层抽象与灵活扩展。Euler-2.0系统抽象为图引擎层、图学习指令执行层、消息传递接口三个层次。图引擎层提供高效的图访问接口;图学习指令执行层提供graph query language(GQL)接口,提供了图遍历操作的原语。允许用户组合使用,并对该指令实现了编译优化;消息传递接口实现了对图算法的抽象,简化了图学习算法的学习和开发难度。

系统介绍

image

分布式图引擎

工业界所处理的图是由多种不同类型的点,边及其属性构成异构图。面临超大规模图存储与计算,以及异构图的复杂性的挑战。分布式图引擎针对海量图存储,并行计算及异构图进行了优化设计,确保了工业场景下的有效应用。

  • 为了超大规模图的存储与计算,Euler-2.0采用了分布式的存储架构。在图加载时,整张图在引擎内部被切分为多个子图,每个计算节点被分配1个或几个子图进行加载。
  • 在进行图的操作时,每个图操作的指令被分解为多个子请求发送给各个计算节点并行执行。这样随着更多计算节点的加入,我们可以得到更好的服务能力。我们引入了多replica的支持,用户可以灵活平衡shard与replica的数量,取得更佳的服务能力。我们针对图表示学习优化了底层的图存储数据结构与操作算法,单机的图操作性能获得了数倍的提升。
  • 异构图是很多复杂的业务场景必不可少的数据组织形式。为了支持异构图计算能力,底层存储按照不同的节点与边的类型分别组织。Euler-2.0还并提供了图上属性的多种索引结构,用于加速基于节点属性、边属性、邻居属性的过滤与采样。Euler-2.0在机制上支持更加丰富的异构图算法,为算法迭代创新提供更多便利。
  • 相较于Euler-1.0,Euler-2.0支持部分存储结构选择性加载,并做了一系列内存优化,使得内存占用大大缩小。

GQL执行层

GQL是对图查询的高级抽象,由十几种基础图查询操作组成。GQL执行层对GQL查询语句进行词法分析后,编译为由基础算子组成的DAG执行图。在DAG图上会进行重复算子去重,公共子表达式消除等编译优化操作以提高执行效率。DAG执行引擎会运行在client进程和server进程中,单机模式下只有client进程,此时client进程中存储了图数据,所有的算子都可以在client端执行;分布式模式下只有server进程中存储图数据,client进程运行DAG中不访问图数据的算子,其余算子通过RPC发送到远端的server进程中执行。 Euler-2.0单机/分布式模式对于DAG执行引擎透明。在单机模式下,GQL会被编译为DAG,并进行相关的DAG优化操作;在分布式模式下,DAG中的需要访问图数据的算子会被进一步处理,它们将被拆分为多个远端执行的子DAG,并将其返回的结果合并。

MessagePassing接口层

Euler-2.0对GNN类的算法模型进行了Message Passing建模范式的抽象,将一个GNN类的算法模型定义为子图抽样模块,图卷积模块,以及可选的池化模块的组合。其中子图抽样模块提供了在全部大图中采样一部分结点做运算,而不是在全图运算的能力;图卷积模块将卷积的过程抽象成消息传递的过程,每一个节点会发出它自己所含有的消息,也会接受其他节点传来的消息,然后节点将得到的所有信息做聚合,计算节点新的表示。目前支持8种子图抽样算法和10+的图卷积算法,用户可以将不同的子图抽样和图卷积进行组合,对业务效果做到定制化的提升。Message Passing建模范式能够提高高稀疏不规则数据的计算效率,同时更利于算法模型的创新或组合。在这样的抽象下,只需要重写几个函数就可以实现一个改进的图神经网络算法,极大的提高了算法的开发效率,缩短开发时间。

算法层

为了用户更加方便的使用Euler来进行图表征学习方面的研究与应用,我们实现了超过30种的图神经网络模型,涵盖了图表征学习,图神经网络,图分类算法,知识图谱等多种图相关领域。我们实现这些算法一方面是检验Euler框架的易用性与扩展性的能力,一方面也是作为应用的例子,使用户更容易理解如何使用Euler来开发新的算法。用户可以直接使用这些算法来赋能给实际的业务,也可以基于这些基础的算法模型进一步创新。我们仔细对实现的这些算法进行了测试和效果调优,保证了算法运行效率,并且算法效果与原论文对齐。

image

Clone this wiki locally