阿里妹导读: 千呼万唤始出来! 阿里妈妈正式公布重磅开源项目 -- 图深度学习框架 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 高层算法实现
来源: https://yq.aliyun.com/articles/688074