Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造

千呼万唤始出来!阿里妈妈正式公布重磅开源项目——图深度学习框架Euler。这是国内首个在核心业务大规模应用后开源的图深度学习框架。此次开源,Euler内置了大量的算法供用户直接使用,相关代码已经可在GitHub上进行下载。

图学习和深度学习都是人工智能的一个分支,作为阿里巴巴旗下的大数据营销平台,阿里妈妈创新性地将图学习与深度学习进行结合,推出了Euler,可帮助大幅度提升营销效率。Euler已在阿里妈妈核心业务场景进行了锤炼和验证,同时,在金融、电信、医疗等涉及到复杂网络分析的场景中也具有很高的应用价值。例如,用户可以利用Euler对基于用户交易等金融数据构建的复杂异构图进行学习与推理,进而应用于金融反欺诈等场景。

下面让我们一起走进Euler的世界。
Euler 开源地址

https://github.com/alibaba/euler

1. 概述

过去几年随着数据规模和硬件计算力的迅速增长,深度学习技术在工业界被广泛应用并产生了巨大的技术红利。当前应用已经相对成熟,下一步的技术红利在哪里还在积极探索之中。图神经网络将端到端学习与归纳推理相结合,有望解决深度学习无法处理的关系推理、可解释性等一系列问题。对结构知识的表达、计算和组合泛化是实现具备human-like AI的关键,图神经网络有希望在这些方面形成突破,使得机器能力进一步提升,因此对图神经网络的深入应用有希望形成下一波技术红利。

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

1.1Euler的核心能力

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

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

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

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

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

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

4)分层抽象与灵活扩展

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

1.2 Euler内置的算法实现

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

2. 系统设计

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

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


2.1分布式图引擎

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

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

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

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

2.2中间图操作算子

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

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

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

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

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

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

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

2.3高层算法实现

如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模型,在模型中我们设计高效的邻居采样的方法,使得大规模的多层邻居卷积成为可能。

3. 应用实例

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

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

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

 


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询某一支接口,指定时间段的数据 按分钟排序

--查询某一支接口,指定时间段的数据 按分钟排序 select a.servicename,reqdate,substr(reqtime,1,5),count&#xff08;1&#xff09;from 表名 awhere servicename 接口名and reqdate date 2020-06-28and reqtime > 16:00:00and reqtime < 17:00:00group by a.service…

天啦噜!在家和爱豆玩quot;剪刀石头布quot;,阿里工程师如何办到?

如今&#xff0c;90、00后一代成为消费主力&#xff0c;补贴、打折、优惠等“价格战”已很难建立起忠诚度&#xff0c;如何与年轻人建立更深层次的情感共鸣&#xff1f;互动就是一种很好的方式&#xff0c;它能让用户更深度的参与品牌/平台呈现的内容&#xff0c;提供更深层的参…

查看计算机或网络资源列表的命令,dos命令net view图文教程,显示网络计算机列表查看共享资源...

大家好&#xff0c;我是老盖&#xff0c;首先感谢观看本文&#xff0c;本篇文章做的有视频&#xff0c;视频讲述的比较详细&#xff0c;也可以看我发布的视频。今天我们学习net命令中的view&#xff0c;它这个命令可以查看网络计算机列表和共享的资源。直接输入net view可以看到…

使用Opencv构建一个简单的图像相似检测器(MSE、SSIM)

介绍 作为人类&#xff0c;我们通常非常善于发现图像中的差异。例如&#xff0c;常见的游戏——两张图像找不同。现在让我们玩下这个游戏吧&#xff0c;首先让我们看看上面的图像&#xff0c;三十秒内看看是否能够从中找出有什么不同的地方。 答案&#xff1a;水果、冰淇淋和…

云+X案例展 | 民生类:云途腾助力城建开启智慧城轨新征程

本案例是由云途腾投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;推动整个“云行业”的健康发展。2019年7月&#xff0c;城建…

Apache ActiveMQ 各个版本所依赖的JDK版本

ActiveMQ下载地址 http://activemq.apache.org/download-archives.html ActiveMQ 依赖JDK版本 MQ版本号Build-Jdk依赖JDKapache-activemq-5.0.01.5.0_121.5apache-activemq-5.1.01.5.0_121.5apache-activemq-5.2.01.5.0_151.5apache-activemq-5.3.01.5.0_171.5apache-activem…

关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题

开源分布式事务中间件 Fescar 自1月10日上线v0.1版本以来&#xff0c;受到了开发者们的极大关注&#xff08;watch249&#xff0c;star3005&#xff0c;fork649&#xff0c;社区讨论的issue58&#xff0c;数据统计于1月17日14:00&#xff09;&#xff0c;可见&#xff0c;天下苦…

计算机桌面图标变成腾讯图标,桌面图标变成了未知图标

在电脑日常使用生活中&#xff0c;有时候会遇到桌面图标显示不正常&#xff0c;变成未知图标或者白色。遇到这种情况怎么办呢&#xff1f;今天就让我来和大家分享一下我的经验。首先&#xff0c;产生这种问题的原因&#xff0c;有如下几种&#xff1a;• 电脑桌面图标缓存导致的…

云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台

本案例由浪潮投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。上海市基础工程集团有限公…

互联网下半场的角逐,玩转轻资产的大数据服务 | 阿里云栖开发者沙龙大数据专场(北京站)干货集锦

2019年1月18日下午&#xff0c;一个晴冷的冬日&#xff0c;由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学。当日&#xff0c;近200名大数据开发者和爱好者现场参与了本次活动&#xff0c;同时也有1800多名开发…

SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder

SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”解决方案&#xff1a; <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>1.7.5</version></dependency>

日志服务与SIEM(如Splunk)集成方案实战

背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心&#xff08;SOC&#xff09;中。 名词解释 LOG&#xff08;SLS&#xff09; - 阿里云日志服务&#xff0c;简…

请问如何正确使用计算机的接口芯片,[计算机软件及应用]第05章接口芯片1.ppt

[计算机软件及应用]第05章接口芯片1第5章 可编程接口芯片 5.2 可编程定时器/计数器8254 计算机系统中经常要用到定时信号&#xff0c;如定时检测、定时扫描和时钟定时等&#xff0c;定时方法通常有以下三种&#xff1a; (1)软件定时 (2)不可编程的硬件定时 (3)可编程的硬件定时…

行,Python终于跌神坛了!程序员:活该!你敢来评论吗...

Python还有“敌人”吗&#xff1f;最近网络上一则帖子吸引了笔者&#xff0c;大意内容为&#xff1a;据说A是有2年多经验的Python工程师&#xff0c;面一个公司相关的岗位&#xff0c;由于人手紧缺&#xff0c;所以只问了一个框架&#xff0c;就按笔者提的29K办理了入职。对此&…

jdk1.6集成activemq的2种方式

文章目录一、maven方式1. 依赖2. 发送端3. 接收端4. 工具类二、引入jar方式2.1.下载jar2.2. 按需导入三、添加账号密码一、maven方式 1. 依赖 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-core</artifactId><v…

Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数&#xff0c;这样通过Watch 或者Get List 可以获取对应的Object&#xff0c;下面我们从源码分析角度来看一下Client go Informer 的机制。 kubeClient, err : kubernetes.NewForConfig(cfg) …

html边框大一点,CSS3 框大小(box-sizing)

CSS3 框大小(box-sizing)使用CSS3框大小调整功能&#xff0c;您可以指定元素的有效宽度。使用框大小(box-sizing)重新定义框宽度默认情况下&#xff0c;元素的盒子可见/呈现在网页上的实际宽度或高度依赖于它width或height&#xff0c;padding和border属性值。例如&#xff0c;…

Kube Controller Manager 源码分析

Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色&#xff0c;它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理&#xff0c;可以说是k8s的核心模块&#xff0c;下面我们以概略的形式走读一下k8s Controller Manager 代码…

plsql 快捷键设置

文章目录1. 创建shortcuts.txt2. 添加自定义内容3. plsql添加配置文件1. 创建shortcuts.txt 路径&#xff1a; 进入PLSQL 的PlugIns目录下面 D:\software\PLSQL Developer\PlugIns\shortcuts.txt2. 添加自定义内容 iINSERT uUPDATE sSELECT fFROM wWHERE oORDER BY dDELETE …

数据中心“容灾”和“备份”的区别

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据中心运行突发故障(如&#xff1a;天灾不可避免的灾难)是无法预测的&#xff0c;计算机里的数据就像扫雷游戏一样&#xff0c;十面埋伏充满雷区&#xff0c;随时都有可能Game Over&#xff0c;容灾备份就是数据安全的最后防线&am…