写点什么

阿里开源 Euler:国内首个工业级图表征学习框架

  • 2019-01-19
  • 本文字数:4069 字

    阅读完需:约 13 分钟

阿里开源Euler:国内首个工业级图表征学习框架

先奉上开源地址:https://github.com/alibaba/euler

Euler 开源:用图表征学习解决深度学习瓶颈

Euler 是阿里巴巴旗下数字营销平台阿里妈妈自研的大规模分布式图表征学习框架,目前已经应用于阿里妈妈的各项业务中,包括检索匹配场景、CTR 预估场景、营销工具场景和反作弊场景等。


近年来,图神经网络和图表征学习成为一大热门研究领域,尤其在今年的 NeurIPS 上,图与表征学习论文数量众多,表现出很强势的上升势头和关注度,获得了来自学界的更多关注和探索。


为什么阿里妈妈会选择在图表征学习大热的背景下开源 Euler 呢?


阿里妈妈告诉 AI 前线记者,事实上早在 2016 年,也就是图表征学习还未受到热切关注之前,阿里妈妈就已经开始进行了图表征学习相关的探索,2017 年开始大规模应用,最终沉淀出首个工业级图表征学习框架 Euler。


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


但是,阿里妈妈在做技术探索的过程中发现,目前业界的一些图深度学习算法并不能在大规模异构数据上直接应用,业界并没有一个可以处理大规模复杂关系链接的图学习表示框架。出于业务需求,阿里妈妈在探索过程中逐渐沉淀出了 Euler。


阿里妈妈研发 Euler 的另一个原因,基于阿里妈妈的技术判断——图神经网络将端到端学习与归纳推理相结合,有望解决深度学习无法处理的关系推理、可解释性等一系列问题,对结构知识的表达、计算和组合泛化是实现具备 human-like AI 的关键,图神经网络有希望在这些方面形成突破,使得机器能力进一步提升,因此对图神经网络的深入应用有希望形成下一波技术红利。虽然图和表征学习虽然还处于早期发展阶段,但阿里妈妈判断未来它将是技术发展的一个非常大的赛道,在这个时间点开源,一是为了将其创新成果开放给业界,二是希望将这个主赛道的成果聚集起来,一起促进该领域的发展。

Euler 有哪些核心能力?

1)大规模图的分布式学习


工业界的图往往具有数十亿节点和数百亿边,有些场景甚至可以到数百亿节点和数千亿边,在这样规模的图上单机训练是不可行的。Euler 支持图分割和高效稳定的分布式训练,可以轻松支撑数十亿点、数百亿边的计算规模。


2)支持复杂异构图的表征


工业界的图关系大都错综复杂,体现在节点异构、边关系异构,另外节点和边上可能有非常丰富的属性,这使得一些常见的图神经网络很难学到有效的表达。Euler 在图结构存储和图计算的抽象上均良好的支持异构点、异构边类型的操作,并支持丰富的异构属性,可以很容易的在图学习算法中进行异构图的表征学习。


3)图学习与深度学习的结合


工业界有很多经典场景,例如搜索/推荐/广告场景,传统的深度学习方法有不错效果,如何把图学习和传统方法结合起来,进一步提升模型能力是很值得探索的。Euler 支持基于深度学习样本的 mini-batch 训练,把图表征直接输入到深度学习网络中联合训练。


4)分层抽象与灵活扩展


Euler 系统抽象为图引擎层、图操作算子层、算法实现层三个层次,可以快速的在高层扩展一个图学习算法。实际上,Euler 也内置了大量的算法实现供大家直接使用。


###详解 Euler 内置算法实现


考虑到框架的易用性,我们内置了多种知名算法以及几种我们内部的创新算法。所有实现,我们仔细进行了测试,保证了算法运行效率,且算法效果与原论文对齐。用户无需进行开发,注入数据到平台后,可以直接使用。我们内置的算法列表见下表。鉴于公开算法知名度很高,我们不做出详细描述,请参见原始论文。有关我们内部算法的详细信息请见 2.3 节。


Euler 系统设计

Euler 系统整体可以分为三层:最底层的分布式图引擎,中间层图语义的算子,高层的图表示学习算法。


下边我们分开描述各个层次的核心功能。


Figure 1 Euler架构Overview

分布式图引擎

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


l 首先为了存储超大规模图(数十亿点,数百亿边),Euler 必须突破单机的限制,从而采用了分布式的存储架构。在图加载时,整张图在引擎内部被切分为多个子图,每个计算节点被分配 1 个或几个子图进行加载。


l 为了充分利用各个计算节点的能力,在进行图的操作时,顶层操作被分解为多个对子图的操作由各个节点并行执行。这样随着更多节点的加入,我们可以得到更好的服务能力。其次,我们引入了多 replica 的支持。从而用户可以灵活平衡 shard 与 replica 的数量,取得更佳的服务能力。最后,我们针对图表示学习优化了底层的图存储数据结构与操作算法,单机的图操作性能获得了数倍的提升。


l 多种不同类型的边,点与属性所组成的异构图,对很多复杂的业务场景必不可少。为了支持异构图计算能力,底层存储按照不同的节点与边的类型分别组织。这样我们可以高效支持异构的图操作。

中间图操作算子

由于图学习算法的多样性以及业务的复杂性,固定的某几种甚至几十种算法实现无法满足客户的所有需求。所以在 Euler 设计中,我们围绕底层系统的核心能力着重设计了灵活强大的图操作算子,且所有算子均支持异构图操作语义。用户可以利用它来快速搭建自己的算法变体,满足独特的业务需求。


首先,Euler 分布式图引擎提供了 C++的 API 来提供所有图操作。基于这个 API,我们可以方便的基于某个深度学习框架添加图操作的算子,从而利用 Euler C++接口访问底层图引擎的能力。我们支持广泛使用的深度学习框架,比如阿里巴巴的 X-DeepLearning 与流行的 TensorFlow。后继我们也会考虑支持其它的深度学习框架,比如 PyTorch。


利用灵活的图操作算子,机器学习框架可以在每个 mini-batch 与 Euler 交互,动态扩充与组织训练样本。这样,Euler 不仅支持传统的以图为中心的学习模式,且可以把图学习的能力注入传统的学习任务,实现端到端训练。


按照功能分类,我们的核心系统提供的 API 可以分类如下:


  • 全局带权采样点和边的能力。主要用于 mini-batch 样本的随机生成以及 Negative Sampling。

  • 基于给定节点的邻居操作。这个是图计算的核心能力包括邻居带权采样,取 Top 权重的邻居等。

  • 点/边的属性查找。这个能力使得算法可以使用更丰富的特征,而不仅限于点/边的 ID 特征。

高层算法实现

如 1.2 节所述,除了 LINE 算法以外,我们实现的算法可以分为随机游走与邻居汇聚两大类算法。有关外部算法的详细信息,请参见 1.2 节提供的论文链接。下面我们详细介绍内部的三个创新算法,相关论文的链接我们会在 github 上给出。


  • Scalable-GCN


它是一种高效的 GCN 训练算法。GCN 以及更一般的 Graph Neural Network (GNN)类的方法由于能有效的提取图结构信息,在许多任务上均取得了超过以往方法的效果。但是 GCN 的模型会引入巨大的计算量,导致模型的训练时间不可接受。Scalable-GCN 在保证优秀效果的前提下,把 mini-batch GCN 的计算复杂度从层数的指数函数压到线性。这使得在阿里妈妈的海量数据下应用三层 GCN 成为可能,广告匹配的效果获得了显著提升。


  • LsHNE


LsHNE 是我们结合阿里妈妈搜索广告场景创新地提出一种无监督的大规模异构网络 embedding 学习方法。区别于 DeepWalk 类算法,LsHNE 的特点包括:a) 采用深度神经网络学习表达,可以有效融合 Attribute 信息;b)考虑 embedding 表示的距离敏感需求,提出两个负采样原则:分布一致性原则和弱相关性原则;c)支持异构网络。


  • LasGNN


LasGNN 是一种半监督的大规模异构图卷积神经网络学习方法, 它有效融合了图结构知识信息和海量用户行为信息,大幅提升了模型精度,是工业界广告场景下首次应用半监督图方法。该方法有多处创新,例如将 metapath 的思想应用于图卷积网络中,并提出了 metapathGCN 模型,有效解决了异构网络的卷积问题;提出了 metapathSAGE 模型,在模型中我们设计高效的邻居采样的方法,使得大规模的多层邻居卷积成为可能。

Euler 应用实例

Euler 平台已经在阿里妈妈搜索广告的多个场景下广泛实用,并取得了出色的业务效果,例如检索匹配场景、CTR 预估场景、营销工具场景和反作弊场景等。我们以匹配场景的为例来看下 Euler 的应用。


广告匹配的任务是给定用户搜索请求,匹配模块通过理解用户意图,快速准确地从海量广告中找到高质量的小规模候选广告集,输送给下游的排序模块进行排序。


我们首先使用一些传统的挖掘算法,从用户行为日志、内容属性等维度挖掘出 Query(查询词), Item(商品)和 Ad(广告)的多种关系,然后利用 Euler 平台的 LsHNE 方法学习图中节点的 embedding,这里节点 embedding 后的空间距离刻画了原来图中的关系,对于在线过来的请求通过计算用户查询词向量、前置行为中节点向量和广告节点向量之间的距离进行高效的向量化最近邻检索,可以快速匹配到符合用户意图的广告。图 2 展示了 LsHNE 方法的离线和在线流程。具体图 3 展示了样本构造和网络结构示意。


Figure 2 DeepMatch召回框架


Figure 3 离线训练流程


阿里妈妈专家表示,目前,图与表征的研究热点主要集中在四个方面:1)图的异构关系处理;2)动态图学习;3)面对大规模数据场景如何提高训练速度;4)新的图网络结构探索和组合,实现组合泛化。


阿里妈妈表示,因为该技术还处于发展的早期阶段,因此不可避免还具有一些局限性,比如训练速度还有很大提升空间。目前,Euler 在实际生产中能够支持百亿节点,千亿边,在一天之内完成训练部署和线上服务,处理规模在业界属于前列;另外,对于更加复杂的网络,如何有效学习表征以及和已有学习任务的结合,也有很大的探索空间。


据阿里妈妈透露,其还有可能开源一个相关数据集,不排除未来以组织相关比赛的方式让大家熟悉 Euler 的可能,而且阿里妈妈也将投入精力维护开源社区,包括将内部版本的迭代同步到开源社区,制作教程等。


2019-01-19 08:009174
用户头像

发布了 98 篇内容, 共 64.2 次阅读, 收获喜欢 285 次。

关注

评论

发布
暂无评论
发现更多内容

【网络安全】手把手给大家演练红队渗透项目

H

网络安全 渗透测试·

混沌工程之ChaosBlade-Operator 使用之模拟 POD 丢包场景

zuozewei

性能测试 混沌工程 ChaosBlade 1月月更

雷霆传奇H5光柱版游戏详细图文架设教程

echeverra

游戏

小白都能吃透Java IOl流,最骚最全笔记,没有之一!1️⃣

XiaoLin_Java

Java io 基础 1月月更

从技术新趋势到云原生应用开发,云计算下一个十年将走向何方

亚马逊云科技 (Amazon Web Services)

计算

测试用例八大要素

爱吃小舅的鱼

深入 MySQL 索引:从数据结构到具体使用

Ayue、

MySQL 数据库 1月月更

1月月更|推荐学java——MyBatis高级

逆锋起笔

mybatis SSM框架 java 编程 动态SQL

仅有0.1M可训参数,AIOps日志异常检测新范式

云智慧AIOps社区

AI 算法 异常检测 智能运维 日志解析

java开发面试之Redis高并发处理

@零度

redis JAVA开发

代码审计思路之PHP代码审计

网络安全学海

网络安全 信息安全 渗透测试 安全漏洞 代码审计

KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题

阿里巴巴云原生

阿里云 云原生 KubeMeet 交付 直播活动

13 Prometheus之云时代的监控目标及挑战

穿过生命散发芬芳

运维 监控 Prometheus 1月月更

【架构实战营】模块九作业

Geek_99eefd

架构实战营 「架构实战营」

公开啦!「2021中国技术品牌影响力企业 」OceanBase 成功上榜

OceanBase 数据库

数据库 开源 开发者 OceanBase 开源 技术品牌

基于云上 Arm 架构赋能数值天气预报

亚马逊云科技 (Amazon Web Services)

计算

失去了SDK,云计算将会怎样?

亚马逊云科技 (Amazon Web Services)

计算

Hibernate 的 HHH90000022 警告

HoneyMoose

手机APP消息推送极光推送jpush-php实例

Owen Zhang

极光推送 jpush-php实例

“爆到天际线” - TiDB 2021 Hackathon 决赛不负责任点评

PingCAP

Go 语言快速入门指南:Go 语言解析JSON

宇宙之一粟

Go json 1月月更

知识库建设的5个步骤

爱吃小舅的鱼

深入理解MySQL的binlog

JavaEdge

1月月更

在 Flutter 中使用交错网格视图创建瀑布流布局

坚果

flutter 1月月更

类脑计算技术领域领导者灵汐科技加入龙蜥社区,共同繁荣开源生态

OpenAnolis小助手

Linux 开源 芯片 生态

再一次重构云计算底座, Amazon Graviton3!

亚马逊云科技 (Amazon Web Services)

计算

终于“打造”出了一个可以随时随地编程的工具

老表

Python Linux 服务器 跟老表学云服务器

聊聊Netty那些事儿之Reactor在Netty中的实现(创建篇)

bin的技术小屋

网络编程 socket nio netty java 编程

黑客技能:xss攻击入门

喀拉峻

黑客 网络安全 XSS 渗透测试

被赶出自己公司的40岁程序员,为Coder们写了个网站--程序员福利网

程序员福利网老骨

程序员 导航网站

Spring Boot Admin,贼好使!

王磊

springboot

阿里开源Euler:国内首个工业级图表征学习框架_AI&大模型_Debra_InfoQ精选文章