您现在的位置是:首页 > 文章详情

阿里巴巴开源GNN框架Graph-Learn

日期:2020-03-31点击:380

介绍

项目地址:https://github.com/alibaba/graph-learn

阿里巴巴近期开源了面向图神经网络(GNN)的框架Graph-Learn(GL,原AliGraph)。框架由阿里内部团队研发,研发同学分别来自计算平台事业部-PAI团队,新零售智能引擎事业群-智能计算实验室,以及安全部-数据与算法团队。

GL旨在降低GNN应用落地的成本,加速整个GNN生态的迭代。阿里内部早在几年前就开始了GNN相关的探索,从研究到实际落地积累了很多有价值的经验,我们把这些经验通过GL逐渐传递出来,希望能对相关从业者有所帮助。

GL面向工业场景而设计,为当下主流GNN算法提供了基础运行框架。由于起源于工业界,GL天然支持大规模图数据、异构图、属性图等十分必要但棘手、而当下深度学习框架(TensorFlow、PyTorch等)又不擅长的问题。同时,考虑到上层NN极具面向业务定制化的特点,GL支持与任意python接口的深度学习框架结合。GL框架轻便灵活,内部模块都预留了充足的扩展空间,方便基于不同的场景进行定制。同时,GL内置了基于TensorFlow实现的各类GNN模型和编程接口,供复用和参考。

设计理念

GNN是当下AI领域中非常热门的子领域,被研究者给予了很高的期待。在一切皆向量的深度学习中,我们希望融入更多的知识,使得深度学习由感知学习迈向认知学习。人类的知识在计算机中依托于图结构而存在,这也是为什么要融合Graph和Neural Network的缘由。

从深度学习过渡到GNN,作为开发者,我们深知落地一个GNN算法的难点在哪里,阻碍GNN被大范围应用的环节是什么。我们也知道GNN虽热,但也并不像每个人说的那么好,应用场景的拓宽、算法理论的变化、编程范式的变化都可能带来平台的变化甚至颠覆,面对这些不确定性,平台该做什么。

我们将这些摸爬滚打的经验积累下来,融入到GL,无论是对GL的直接用户,还是参考GL做类似系统设计的同学,希望有所助益。只有更多人了解GNN,玩的起GNN,由感知到认知的跨越才不会是一句空话。

GL遵循轻便易用的原则,充分保留内部子模块的扩展性,并兼容开源生态。概括来讲包括:轻量可移植,模块可扩展,接口可复用,生态可兼容。

轻量可移植

和主流深度学习框架一样,GL平台代码由C++写成,Linux系统下,所有支持C++11的编译器都可以对源码进行编译打包,所依赖的几个外部库也都是开源社区广为人知的。第一次编译过程由于下载外部依赖,需要大概几分钟,后续每次开发编译打包只需秒级,部署成本很低。GL可运行于物理机,也可运行于Docker内,也可基于阿里云的ACK服务一键拉起,确保分布式的机器间网络连通即可。

模块可扩展

系统内部实现高度模块化,每个模块都可独立扩展。可扩展给系统足够的弹性,以适应未来发展的不确定性,以及和不同运行环境的适配。可扩展也为广大开发者提供自由伸缩的空间,快速进行原型验证,而不局限于系统当前提供的功能。

存储模块,抽象了FileSystem和Storage两层,如需扩展自定义存储,一般只需实现FileSystem接口即可,或者通过实现Storage接口直接外接其他图存储系统。Partition模块,定义了数据如何在分布式Server间分布,以及一个分布式计算请求如何正确的转发,新的Partition策略(例如某种更适合业务场景的图切分)只需扩展该模块即可。计算模块,由一个个算子组成,算子可自定义。算子被框架分布式执行,每个算子定义的计算根据指定的Partition策略进行转发,并可通过资源的形式访问全局存储。目前内置的算子种类包括:Sampling,Negative Sampling,Aggregation,Graph Traverse,Graph Query,Graph Update。RPC模块,解耦于其他模块,只负责请求的收发,很容易对接其他RPC框架。Naming模块,用于分布式地址发现,可方便对接不同的调度环境。
1

接口可复用

接口可复用体现在两个方面:向后兼容与功能扩展。兼容性不言而喻,很多开发者受困于版本更新后的接口兼容问题。功能扩展,一般的做法是新增API,意味着在用户能关注到的基础上带来学习成本。新增API对用户的困扰相对小于兼容性,但API增加也带来庞大的系统维护成本。在GNN快速迭代的当下,功能扩展几乎时刻都在发生,比如新增一种图采样算法,而向后兼容更是由于应用场景和算法更迭带来的变化而不容易做到,我们尽可能使得当这些变化发生时,对用户的损失最小。

GL通过提高User Interface的抽象程度,来降低上述风险。我们发现很多GNN研究者都有图的背景,因为对Gremlin或多或少有了解。Gremlin是一种抽象的图查询语言,Gremlin之于Graph,类似SQL之于Table。GL设计了一套Gremlin-Like的python接口,接口内部会翻译成各种算子实现,每新增一种算子,只需改变接口对应的参数即可。例如,用户随机采样某种顶点的邻居,当新增一种采样算法时,只需改动如下:

import graphlearn as gl g = gl.Graph() # sample 10 neighbors for each node in this batch by random sampler g.V("vertex_type").shuffle().batch(512).outV("edge_type").sample(10).by("random") # sample 10 neighbors for each node in this batch by new sampler g.V("vertex_type").shuffle().batch(512).outV("edge_type").sample(10).by("new")

在GNN模型编程接口方面,我们也进行了一定程度的抽象,且提供了诸多可供参考示例。

生态可兼容

GL提供python形式的用户接口,结果以NumPy形式呈现,易于上手。此外,GL可与当下主流的深度学习框架,如TensorFlow、PyTorch等配套使用,丰富上层NN的表达能力。在一个e2e的GNN应用场景中,GL和深度学习框架之间有良好的互补关系,把计算交给擅长的框架,Graph->GL,Numeric->TensorFlow、PyTorch,这也是我们一贯的原则。
2

取得成果

GL已在阿里集团内数十个场景落地,包括搜索推荐、安全风控、新零售、知识图谱等。GL日常任务数据为规模达百亿级边、十亿级顶点的异构图,且包含百余个混合类型属性。相比之前通过大数据计算任务(如Map-Reduce)把图数据处理成可供深度学习框架使用的样本的方式,每个模型日均可节省万CPU时(core x hour)算力、百TB存储,从GNN算法开发到上线的周期被缩短到原来的1/3,而且带来了显著业务效果的提升。此外,GL获得2019世界人工智能大会SAIL先锋奖。

安全风控

• 垃圾注册识别:保持准确率的情况下,垃圾账号识别率提升10-15%
• 淘系假货识别:保持准确率的情况下,假货商品识别率提升10%
• 闲鱼垃圾评论识别:保持准确率的情况下,覆盖率提升16%
• 恶意评价识别:保持准确率的情况下,恶意评价识别率提升7%
• 恶意买家识别:保持准确率的情况下,恶意买家识别率提升15%

搜索推荐

• 淘宝主题推荐业务,CTR提升15%
• 购后信息流推荐业务,DPV提升2%

发表文献

• AliGraph: A Comprehensive Graph Neural Network Platform. VLDB, 2019.
• Representation Learning for Attributed Multiplex Heterogeneous Network. KDD, 2019.
• Is a Single Vector Enough? Exploring Node Polysemy for Network Embedding. KDD, 2019.
• Towards Knowledge-Based Personalized Product Description Generation in E-commerce. KDD, 2019.
• Large Scale Evolving Graphs with Burst Detection. IJCAI, 2019.
• Hierarchical Representation Learning for Bipartite Graphs. IJCAI, 2019.
• Cognitive Graph for Multi-Hop Reading Comprehension at Scale. ACL, 2019.

未来规划

围绕GL,我们未来会在以下几个方面投入精力。GL良好的扩展性,也使得未来存在更多的想象空间。

新硬件

以图像为代表的应用催化了GPU的发展,可以预见,Graph作为实际生产中最广泛的数据格式,与NN的结合,也会引发更多从硬件角度追求卓越性能的思考。目前阿里内部已经在这方面开始了探索。

新算法

近年来GNN算法相关的paper主要在GCN框架下做延伸,编程方式比较固定,目前或多或少遇到了一些瓶颈。我们也开始在算法理论上尝试做一些创新,GL的易用和可扩展会助力这一过程。

新业务

GNN覆盖的业务非常广,也会带来很多意想不到的效果。当前落地的应用主要集中在了少数大公司内,还没有普及开来。GL的开源也希望能够助力相关从业者,共同扩大GNN的生态。

欢迎感兴趣的同学加入我们: kun.zhao@alibaba-inc.com 。
更多文章请关注开源项目,地址:https://github.com/alibaba/graph-learn
本文作者:赵昆

原文链接:https://yq.aliyun.com/articles/752628
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章