14

京东零售图计算平台Galileo即将开源 瞄准大规模图算法在工业级场景落地

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzUyMDAxMjQ3Ng%3D%3D&%3Bmid=2247494535&%3Bidx=1&%3Bsn=29d1f9403352413ab90c3cc80255baac
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

导读:图是关联关系数据的有效表示方式,在零售场景中,人、货、场之间的关联,都非常适合用图结构来表达,这些图数据中隐含了大量可解释和可挖掘的知识。京东零售图计算平台Galileo(伽利略)提供离线/在线图计算和图数据库服务能力。本次分享围绕图数据的深度学习建模技术,介绍Galileo平台中的图深度学习框架(后文简称为Galileo),该框架具备超大规模,高效,紧致存储等典型优点,旨在解决大规模图算法在工业级场景落地问题。

介绍之前,首先致谢京东零售数据算法通道委员会对项目的支持。在京东零售数据算法通道委员会的协调领导下,营造了良好的技术氛围,注重技术沉淀及行业影响,积极参与学术交流,鼓励前瞻性项目探索,挑战业界难题。

uAZN7be.png!mobile

研发背景

图神经网络

图神经网络( Graph Neural Networks, GNN)是一类基于深度学习处理图域信息的方法。其有望解决现有深度学习算法无法解决的关系推理、可解释性等问题。

现实世界的许多问题都可以用图结构数据刻画,因而图神经网络的应用场景也非常多,如推荐、风控、知识图谱、计算机视觉、自然语言处理等。

学术界

过去几年,在深度学习、计算机视觉、文本处理以及数据挖掘等多个顶级会议上,图深度学习相关探究工作有了明显的增长。学术界对图深度学习的关注度显著提高。

学术界开源的图深度学习库有Deep Graph Library(DGL)和PyTorch Geometric(PYG)。

工业界

2019年1月,阿里妈妈开源工业级图深度学习框架 Euler。

2019年11月,腾讯开源了高性能图计算框架Plato。

2019 深度学习开发者秋季峰会上,百度发布基于飞桨的图学习框架Paddle Graph Learning (PGL)。

核心挑战

图神经网络的应用主要面临着如下挑战:

  • 图的异构关系处理

  • 动态图学习

  • 工业级超大规模数据场景模型训练

  • 框架易用性

uAZN7be.png!mobile

架构设计

Galileo是一个分布式的图深度学习框架,具备图嵌入(Graph Embedding)学习和图神经网络端到端学习的能力。 其拥有如下五大特色:

  • 支持异构图学习

  • 支持动态图学习

  • 支持超大规模数据场景模型训练

  • 支持自定义模型

  • 简单易用

为了方便系统的迭代、优化升级和扩展,Galileo系统采用分层设计:图引擎、深度学习后端、图算法层。

IZzE3ar.png!mobile

图引擎

图引擎主要功能:数据加载、数据采样及查询服务。为了实现对京东零售业务场景的应用支持,图引擎的设计不仅需要考虑超大规模图的存储和计算,还需要支持处理复杂的异构图。

1. 超大规模图

京东商城的活跃用户超4亿,活跃商品亿级别,基于用户和商品的关系(如:购买、点击、加购等)构建的图,顶点可达数十亿,边数量数百亿。在如此大规模的图上进行单机训练是不可行的。Galileo支持图分割和高效稳定的分布式训练,可以轻松支撑十亿顶点、百亿边的计算规模。

2.异构图

实际应用场景中,图结构往往非常复杂,体现在顶点和边关系的异构性,以及顶点和边上拥有大量属性的特点。经过特定的优化设计,Galileo图引擎在图存储和计算上均能很好的支持异构图,从而能够支撑上层算法对异构图的学习。

3.静态图和动态图

根据业务应用场景的不同,图数据的结构可能是固定不变的,也有可能是动态变化的。兼顾不同业务场景和性能,Galileo图引擎内置了两种实现:静态图和动态图。静态图应用于离线训练场景,存储和计算性能更高;动态图实现了图数据更新的接口,应用于增量学习等业务场景。

4.内存优化

实践中发现,工业级别图数据对内存资源的消耗非常大。Galileo采用紧凑高效的内存图数据结构(如下图所示),图数据的内存消耗得到了极大的降低,相比其它开源图计算框架,内存消耗减少了近70%。

JVzURzj.png!mobile

5.图数据加载优化

图规模变大之后,图数据的加载耗时会明显增长,Galileo对此进行了精心优化, 基于二进制数据无损加载及高效的内存分配机制,相比其它开源框架, 加载性能提升了近40%。

6.接口丰富

为了满足各种复杂应用场景下的采样和查询需求,Galileo提供了如下图操作算子接口:

  • 随机游走采样

  • 全局带权点、边采样

  • 基于指定顶点的邻居采样

  • 点、边的属性查询及基于索引的过滤采样

  • 基于时间戳的倾向性采样,可以实现子图过滤,避免时间穿越问题

  • 子图采样

深度学习后端

Galileo无缝对接深度学习两大主流框架TensorFlow和PyTorch。兼顾扩展性和易用性,Galileo抽象封装了Dataset和多种训练模式。自研Parameter Server服务实现对超大模型的训练支持。

1.Dataset机制

Galileo秉承TensorFlow和PyTorch的设计理念,遵循数据与模型分离的原则,使用Dataset封装图数据采样逻辑,主要有以下三点优势:

  • 实现了数据与模型的解耦,降低了代码复杂度,并提升了复用性

  • 借助Dataset的预取及并行处理特性,提升模型训练速度

  • 采样逻辑进行去重、合并等优化

Galileo抽象了三个基础的Dataset:

  • NodeDataset 从图数据中采样一个batch的顶点数据

  • EdgeDataset 从图数据中采样一个batch的边数据

  • FileDataset 从外部输入文件生成一个batch的样本数据

在基础Dataset之上,提供了一个Transform接口,可以定制图算法模型的输入。当然用户也可以实现自己的Dataset。

2.训练模式

Galileo支持非常多的训练模式,既支持CPU和GPU的单机训练,也支持分布式训练:

  • CPU: 单机训练、 分布式训练

  • GPU: 单机单卡、 单机多卡、 多机单卡、 多机多卡

Galileo对以上多种训练模式进行了抽象封装,用户只需简单的参数配置即可使用不同的训练模式,极大的降低了用户的使用成本。

3.超大模型

对于超出单卡GPU显存的大模型,需要使用PS训练方式。尤其是图嵌入算法(如node2vec),由于顶点的编码没有使用权重共享,导致模型的权重数量随着图数据量的增长而线性增长。Galileo在PyTorch框架之上自研Parameter Server服务,实现了对超大模型的训练支持。

图算法模型

1.内置模型

为降低图模型使用门槛,Galileo内置了常见的图算法模型:

  • DeepWalk,经典无偏随机游走的无监督算法

  • Node2vec,配置p、q参数实现偏向BFS或DFS游走的无监督算法

  • LINE ,灵活利用1阶,2阶邻居信息的无监督算法

  • Metapath2vec ,应用于异构图的 node2vec 算法

  • GraphSAGE ,基于邻居采样汇聚的GCN算法

  • GAT,采用Attention机制进行邻居汇聚

这些模型的实现,经过仔细的测试对比,效果与原论文对齐。紧随业界图算法的发展,支持的模型也将持续更新。

2.模型层抽象

Galileo根据图算法模型的共性,抽象了一些公用层,比如图卷积层、Attention机制层、邻居汇聚层等。基于这些模型层抽象,用户可以快速实现一个自定义模型。

3.自定义模型

考虑到学术界不断有新成果涌现,算法人员有进行算法创新及改造的需求, Galileo精心设计了自定义模型接口,用户只需基于TensorFlow或PyTorch框架实现对应的模型代码以及在Dataset的Transform接口中实现对应的数据采样和处理逻辑,即可完成自定义模型。自定义模型样例(Supervised GraphSAGE)如下图所示:

BrYBB3q.png!mobile

uAZN7be.png!mobile

产品化

高性能

Galileo分布式图引擎底层使用C++实现,均衡的进行子图划分,顶层的采样操作可分解为对多个子图的操作,然后由多个节点并行执行计算,从而实现对大图数据的高效率查询。

多框架

业务方选用的算法框架相对比较自由,为了让用户有更好的体验,方便复用开源模型,Galileo优先支持了使用最为广泛的两大框架TensorFlow和PyTorch,Galileo计划将来支持更多的深度学习框架。

扩展性

为了跟进学术界的最新研究成果,Galileo精心设计了自定义模型接口,用户只需基于TensorFlow或PyTorch框架实现对应的模型代码以及在Dataset的Transform接口中实现对应的数据采样和处理逻辑,即可完成自定义模型。

一致性

Galileo框架对TensorFlow和PyTorch的采样接口和训练接口进行抽象,统一了接口的定义,用户可以无区别的在TensorFlow或PyTorch代码中使用这些接口。

易用性

为了方便用户快速地完成图数据的准备,Galileo定义了通用的图数据格式,采用文本格式表示点、边及其属性数据,并且提供了高效的分布式图数据转换工具。

Galileo无缝集成到京东零售Easy-Algorithm算法平台,从而实现图数据生成、处理/转换、查询分析、图模型训练、结果分析等一站式服务。

uAZN7be.png!mobile

即将开源

据京东零售数据算法通道委员会会长包勇军透露,Galileo目前已服务于内部多个业务场景,包括搜索、推荐、知识图谱、反作弊等,部分业务已取得显著的效果。 未来,平台计划对图引擎底层算子、模型训练等方面做特定优化加速,探索图模型的离在线一体化方案,持续追踪和探索学术界的最新研究成果,需要做的工作还很多,但未来可期。 此外,Galileo的开源准备工作也在进行中,预计将于年底开放源码。

meum6r.jpg!mobile

团队介绍

Galileo项目组属于京东零售数据算法通道下的数据智能研发部。

这是一个有技术和梦想的团队,团队成员均来自国内一线互联网公司和双一流大学,既有经验丰富的资深架构师和技术扎实的中坚力量,也有朝气蓬勃的后起之秀。团队在训练框架及高性能计算领域积累了丰富的实战经验。

团队致力于工业级数据算法模型在京东零售真实业务场景中的落地,大规模机器学习及商业分析平台九数,推动了京东无人投放广告的高速增长,成为京东广告的核心收入来源。

Galileo团队也非常欢迎志同道合的优秀人才加入,有意者请与 <[email protected]> 联系。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK