介绍
阿里巴巴近期开源了面向图神经网络(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 系统下,所有支持 C11 的编译器都可以对源码进行编译打包,所依赖的几个外部库也都是开源社区广为人知的。第一次编译过程由于下载外部依赖,需要大概几分钟,后续每次开发编译打包只需秒级,部署成本很低。GL 可运行于物理机,也可运行于 Docker 内,也可基于阿里云的 ACK 服务一键拉起,确保分布式的机器间网络连通即可。
模块可扩展
系统内部实现高度模块化,每个模块都可独立扩展。可扩展给系统足够的弹性,以适应未来发展的不确定性,以及和不同运行环境的适配。可扩展也为广大开发者提供自由伸缩的空间,快速进行原型验证,而不局限于系统当前提供的功能。
存储模块,抽象了 FileSystem 和 Storage 两层,如需扩展自定义存储,一般只需实现 FileSystem 接口即可,或者通过实现 Storage 接口直接外接其他图存储系统。Partition 模块,定义了数据如何在分布式 Server 间分布,以及一个分布式计算请求如何正确的转发,新的 Partition 策略(例如某种更适合业务场景的图切分)只需扩展该模块即可。计算模块,由一个个算子组成,算子可自定义。算子被框架分布式执行,每个算子定义的计算根据指定的Partition策略进行转发,并可通过资源的形式访问全局存储。目前内置的算子种类包括:Sampling,Negative Sampling,Aggregation,Graph Traverse,Graph Query,Graph Update。RPC 模块,解耦于其他模块,只负责请求的收发,很容易对接其他 RPC 框架。Naming 模块,用于分布式地址发现,可方便对接不同的调度环境。
接口可复用
接口可复用体现在两个方面:向后兼容与功能扩展。兼容性不言而喻,很多开发者受困于版本更新后的接口兼容问题。功能扩展,一般的做法是新增 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,这也是我们一贯的原则。
取得成果
GL 已在阿里集团内数十个场景落地,包括搜索推荐、安全风控、新零售、知识图谱等。GL 日常任务数据为规模达百亿级边、十亿级顶点的异构图,且包含百余个混合类型属性。相比之前通过大数据计算任务(如 Map-Reduce)把图数据处理成可供深度学习框架使用的样本的方式,每个模型日均可节省万 CPU 时(core x hour)算力、百 TB 存储,从 GNN 算法开发到上线的周期被缩短到原来的 1/3,而且带来了显著业务效果的提升。此外,GL 获得 2019 世界人工智能大会 SAIL 先锋奖。
应用案例
我们以在安全风控中的各种典型场景为例,来看 GL 的应用效果。阿里巴巴安全部数据与算法团队一直致力于与黑灰产进行对抗,保障用户在淘宝、天猫、闲鱼等相关平台上的使用体验和切身利益。面对各类黑灰产,已经研究出了一系列的算法武器,图神经网络(GNN)是其中重要的防控技术之一。GNN 作为近年来新兴的技术,不仅能考虑节点本身的属性,还能同时考虑到网络结构特征,进而刻画黑灰产的关系、团伙以及产业链信息,在风控场景中取得了广泛的应用和效果增益。将 GNN 应用到风控场景中是一件十分有挑战的事情,我们面临的图结构往往有着以下两个特点:
- 高度异构:节点和边都丰富多样
- 数据规模巨大:很多图结构都是亿级节点、数十亿甚至上百亿的边
垃圾注册识别
淘宝每天新注册的用户中,正常用户占绝大多数,但也有许多黑灰产用户伪装成正常用户,企图获取一个账号从而进行刷单、垃圾评论等等活动,我们称这些账户为“垃圾账户”。“垃圾账户”如果注册通过,就可能从事各种危害活动,因此在注册时将其识别并删除非常有必要。我们通过手机号,设备信息,ip 地址等多种关系构建账户与账户之间的连接关系,基于 graph-learn 构建账户和账户之间的同构图以刻画账户的新表征,垃圾注册图模型目前线上已稳定运行近1年,相比于单纯使用账户的特征,每日额外识别 10-15% 的垃圾账号,保持着相当高的识别准确率。
淘系假货识别
阿里巴巴对于知识产权的保护一直都在进行大量的努力,也取得了十分显著的成果。但是仍然有极少部分卖家在淘宝上售卖假货商品,这一直是我们深恶痛绝的。为此,除了应用假货商品本身的特征以外,我们仔细甄别了假货商品和售假卖家之间的多种关系,比如售假卖家之间的团伙关系,物流等产业链关系,并且通过这些关系构建商家-商品之间的异构图,基于 graph-learn 开发的淘宝假货图模型目前已在服饰类、鞋类、首饰等诸多大类中落地,相比于直接使用商品、商家的特征信息,图模型能够额外识别 10% 以上的假货商品。
闲鱼垃圾评论识别
闲鱼是目前国内最大的二手商品交易平台,买卖家可以在商品下面评论进行沟通和询问,但其中也有黑灰产会在商品下面留下一些涉嫌广告、欺诈、假货甚至违禁的评论,影响了用户的使用体验,也给用户带来了风险。为了识别闲鱼上的垃圾评论,我们结合业务特点,自主设计了基于异构图卷积网络的反垃圾系统—— GAS,相对于单节点的深度模型,能够在同样准确率情况下获得16%的覆盖率提升,同时我们将该项目中的方法进行总结,所著文章《Spam Review Detection with Graph Convolutional Networks》发表在信息检索领域顶级会议 CIKM2019 上,并斩获最佳应用论文奖。
恶意评价识别
恶意评价包括评价要挟,同行攻击和虚假评价等多种类型,在淘宝平台上一直是困扰商家的主要问题之一。和传统图模型相比,异构图神经网络通过聚合不同子图的方式消除主观上对强弱边的判断,能够通过图间融合的方式融合不同强度的边信息。在淘系恶意评价的场景上,基于 graph-learn 开发的恶意评价图模型优化了整体数据准备流程,提高训练效率,上线后已稳定运行近半年,日均额外识别7%以上的恶意评价,优化了商家的营商体验。
“职业吃货”识别
淘宝平台上还有一部分“职业吃货”存在,他们在淘宝、饿了吗等平台疯狂下单,收货后却立即申请“仅退款”而拒不退货,继而以职业投诉等方式威逼商家妥协,这就是典型的“职业吃货”行为。对这种滥用淘宝会员权利,损害平台正常运营秩序的人,我们通过各种媒介关系基于 graph-learn 构建“职业吃货”图模型,相对于 GBDT 的传统模型,“职业吃货”图模型在相同准确率的情况下,额外识别了 15% 的恶意买家,保障了商家在平台上的权益。
发表文献
- 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 的生态。