什么叫图神经网络,从名字可以看出这里有两个概念。
第一个概念是图。图是我们日常生活中非常普遍的存在,一般我们会把现实中的实体抽象成图中的点,点和边都有丰富的属性信息。因为图可以表示复杂的关系,所以图蕴含了巨大的价值。
第二个概念是神经网络,更准确的说是深度神经网络。深度神经网络是深度学习背后的核心技术,并且在我们的生产生活中得到了广泛的应用。
图神经网络就是将图和深度神经网络这两个概念结合起来,通过把图中的元素映射到低维度空间中以便于处理我们用深度神经网络挖掘出的潜在价值。
最近几年,图神经网络得到了学术界和工业界的广泛关注,但相比传统的深度学习,图神经网络的开发和学习有更大的挑战,挑战主要来自于三个方面。
挑战一是数据的复杂性,图数据有非结构化、异构、稀疏性的特点,其特点给图神经网络提出了更高的挑战。
挑战二是图数据规模巨大,用传统机器学习的样本处理方式非常容易造成样本指数级的膨胀,这对于想要大规模应用图神经网络的企业来说是巨大的成本开销。
挑战三是图算子种类非常多,不能很好的与深度学习相结合,导致深度学习系统很难通过简单扩展来无缝支持图神经网络的操作。
因此,需要得到图神经网络一体化的解决方案,这个解决方案从三个层次上提出了需求。首先是数据层要能够支持大规模异构且带有丰富属性的图,并且可以方便对接多种数据源进行适配,抽象出简单的数据接口供用户使用。其次是计算层要可以引擎一体化,这样用户才可以方便的编写图和深度神经网络相结合的代码,并保证计算的高效性。最后是在应用层,要针对不同业务场景构建从图数据到业务逻辑,中间不割裂的端到端的神经网络。
Graph-Learn就是针对这三个层次的要求应运而生的,该平台有三个显著的特点。第一个特点是企业级,区别于学术框架,Graph-Learn系统从实际生产出发,一开始就把解决数据复杂性作为目标,支持高达TB级别的图数据。第二个特点就是端到端,Graph-Learn为用户提供一体化简洁的IBE,方便从原始数据构建业务模型,省去中间链路,从而省去巨额的存储和计算开销。第三个特点是生产与研发相结合,Graph-Learn系统有非常良好的拓展性和优异的性能,既可以适应GNN快速发展研究的节奏,又可以实现实际生产和应用相结合,推动GNN的探索落地。
下面介绍一下Graph-Learn背后的系统架构和核心技术。
首先Graph-Learn提出我们自己的统一编程范式,包含了四个步骤。第一个步骤是采样,指从大的图中采样,做到数据对齐,从而便于后面神经网络对它的处理。第二个步骤是把采样的顶点和边的属性信息向量化,以便于后面的处理。第三个步骤,我们把向量化信息技术聚合,聚合所产生的向量信息在第四个步骤中跟中心节点信息相互整合,从而输出中心节点向量化的表示。
其次,为了支持编程范式,Graph-Learn提出一体化的系统,该系统包括两部分。第一部分的图引擎是分布式服务,提供了对大规模异构以及带有丰富属性图的层次,同时,图引擎自带容错,可以保持稳定,具备高效性能。第二部分是Tensor引擎作为用户访问图数据接口,在神经网络部分,用户可以充分与现有主流的系统相互对接,与图引擎接口一起,开发面向业务的模型。
再者,在对图引擎进行优化的层面,我们为了加速图构建过程的效率,整个图引擎框架从主体、解析到构成都实现了数据流水线方式,充分利用了CPU和计算力。比如说为了加速多效采样过程,减少多效采样中的通信,我们采取了多效反映机制,基于观察我们定义了顶点重要性的定义,实现采样效率成倍的提升。
最后,我们在图引擎下层打造了统一的高性能和自适应数据通信层,利用异步并发集合通信的数据,同步模型在数据层上,打造了智能化的控制层,可以实现梯度自动监控和自动伸缩等功能。
目前,这些优化是Graph-Learn表现突出的性能,Graph-Learn已经在阿里内部进行了广泛部署,有很多成功的案例。Graph-Learn平均每天可以节省300TB存储,万CPU的算力,可以实现在两分钟之内构建百亿级别规模,并把延迟缩短到十毫秒级别。这些性能极大地缩短了经营算法的开发周期,将之前以周为单位的开发周期缩短了80%。我们已经在Graph-Learn系统上支持了各种各样的算法,Graph-Learn已经应用在很多场景中,比如淘宝推荐、搜索、反作弊、网络安全等。
今后,我们希望Graph-Learn的发展会基于算法驱动来对性能进行精益求精的优化,我们会在系统延展性、生态多样性上发力,希望大家能加入我们,跟我们一起打造开源生态。