先奉上 GitHub 开源地址:https://github.com/alibaba/x-deeplearning
XDL 为何而生?
XDL 是 X-Deep Learning 的缩写,这是一个针对高维稀疏场景业务场景的深度学习框架,主要面向广告、推荐和搜索等典型的业务场景。
关于此项目,AI 前线在《阿里开源深度学习框架 XDL,面向广告、推荐、搜索场景》中有介绍。
为什么阿里妈妈要研发这样一个深度学习框架呢?在与阿里妈妈算法平台相关负责人交流之后,AI 前线得知 XDL 的诞生,源于阿里妈妈内部的实际业务场景需求驱动,即电商领域的高维稀疏数据场景。
据介绍,XDL 目前作为阿里妈妈的横向机器学习平台,自 2016 年下半年开始逐步部署到阿里妈妈的业务系统,至 2017 年初全面完成了生产化,支撑了阿里巴巴集团的多个业务场景,其中使用最多的是阿里妈妈的定向广告,包括展示广告和信息流广告。
除了这些业务场景,阿里妈妈也希望通过开源 XDL,使之应用于更多的场景。
阿里妈妈认为,在广告、推荐、搜索等互联网业务中,在目前业内已有的框架基础上去搭建一个深度学习平台还有很多工作要做,如结构化处理等,但是遵循 Facebook 或谷歌等国外公司的网络架构对框架和框架边界有很高的要求。因此,阿里妈妈把自己对于结构化数据计算、分布式模型并行等与传统框架不一样的经验分享出来,就是希望能够从算法包到底层的计算框架赋能企业,让企业在自己的业务上进行更好的迭代。
此外,阿里妈妈还透露将在此基础上陆续开放一些工业界数据集,希望研究者在这个基础上能够进行独立的创新和研发。
2016 年,XDL 项目开始启动的大背景,是在 2015 年深度学习在图像领域取得了较大突破之后,阿里妈妈受此启发开始思考,深度学习如何在广告、推荐、搜索这样的场景下发挥更大的价值。
在电商场景下,数据具有高维稀疏的特点,比如在淘宝上,一个用户对应一个商品之间的样本非常稀疏。在初期,阿里妈妈也曾尝试过使用 TensorFlow 来构建解决这个问题的技术框架,但很快得出结论,TensorFlow 解决不了阿里妈妈面对的问题。另外,深度学习网络结构非常复杂,网络结构的迭代、优化和效率都有很大的提升空间。
因此,业务和技术上的需求,加上技术的变革,推动了 XDL 的诞生。从 2016 年开始,阿里妈妈开始在这个领域探索。
在应用层面,XDL 在互联网中的核心应用主要在于广告、推荐和搜索场景,阿里妈妈认为,这些场景本身足够大、足够有特点,因此,在智能匹配、CTR 预估、广告准备和智能工具等环节,越来越多的场景都可以基于 XDL 构建模型。
此外,阿里妈妈表示,XDL 的推出将对很多业界公司或团队产生强大的助力,因此 B 类用户及合作伙伴是 XDL 生态构建的重心;当然,XDL 也面向所有的开发者,欢迎感兴趣的从业人员积极参与到 XDL 的建设,成为重要的贡献者。
XDL 的技术积累和三次迭代
在 XDL 框架研发之前,阿里妈妈已经有了一些技术积累,第一个是阿里妈妈事业部主要牵头的基于 MPI 协议搭建的第一代分布式机器学习平台,上面有很多算法,包括逻辑回归、MLR 和树类的 GBDT 等算法。另外一个技术积累是阿里妈妈内部之前在图像方面研发的格拉丹东项目,这个项目构建了分层的深度学习端到端框架,但之后阿里妈妈发现它跟 Caffe 的功能有很多重合的地方,可能对业界没有很大的增量,所以并未将其开源,而只在阿里内部使用。
任何的产品都是在迭代中不断优化的,XDL 也不例外。从 2016 年中启动项目以来,XDL 已经经过三次大版本的迭代,其中从 0 到 1 的第一个版本自研由机器学习相关的算法工程师主导,第二个版本引擎工程团队参与进来重点进行的打造,而第三个版本则是工程平台和算法平台一起合作完成迭代,并在此基础上开源。
XDL 桥接理念 V.S.微软 ONNX
XDL 声称支持任意开源深度学习框架,要实现这一点,核心依赖于一个叫做桥接的概念。
举个例子,桥接可以把整个计算流从 tensor 流变成一个结构化计算流,在计算流的中间环节桥接任何其他框架作为其中的一个点来计算。用户可以用 XDL 做第一步的结构化计算,变成 tensor 以后,用 Pytorch、TensorFlow 或 MXnet 来做矩阵预算,再回到 XDL 里做结构化运算。当然,用户在单机 tensor 计算上也可以用自己已经熟悉的框架工具,XDL 对用户来说不是一个替代品。
乍一看,阿里妈妈的 XDL 似乎与微软的模型标准 ONNX 非常相似,后者是微软与亚马逊、Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在 Github 上的一种针对机器学习所设计的开放式文件格式,用于存储训练好的模型,它使得不同的人工智能框架,如 Pytorch、MXNet 等可以采用相同格式存储模型数据并交互。
在这一点上,ONNX 的功能性与 XDL 有共通之处。
然而,阿里妈妈认为这两者完全是两个不同层面的概念,ONNX 是一种模型标准,而 XDL 则是一种建模框架和计算范式。
阿里妈妈认为,现有框架在单机稠密网络上的建模能力都做得比较好,并且大家习惯于用 TensorFlow、Pytorch 等编程语言去写,而 XDL 可以提供分布式的运行能力。如果你以前擅长用 TensorFlow 去写单机模型,可能不用做过多改动,加几行代码就能够获得 XDL 提供的构建在结构化数据基础上的大规模分布式计算能力。
总而言之,它是对现有的框架的能力在稀疏场景和分布式场景下的一个扩充。而对于 ONNX 来说,可能 TensorFlow 在单机的建模能力比较强,但是在分布式建模能力和处理高维数据场景数据时,ONNX 的分布式建模能力就比较弱,XDL 是对这个能力的弥补,用户写一个 TensorFlow 单机网络后跑在 XDL 上,就可以获得 XDL 提供的核心能力。
另外,桥接与 Keras 之类的神经网络库有所不同,Keras 是在 TensorFlow 架构上层包的一个更易用的东西,但桥接是一个接口,可以把整个数据流的不同部分连接起来,对业界没有的分布式能力和结构化计算能力做了补充,以并行桥接的方式,在底层 kernel 计算上来回桥接跳转,发挥各个框架的优势,而无需转换成 TensorFlow 特性或者它的一些底层计算。
目前,XDL 选择的是 Python 环境,用户在 Python 环境下可以并入很多包,XDL 将不同的框架连接起来。阿里妈妈表示,之所以选择支持 Python,是阿里妈妈在做出判断之后的选择,因为现在深度学习研究和使用中,Python 已经成为使用最多的语言,采用 Python 就保证了互通性和易用性。而且,XDL 采用了桥接,阿里妈妈不希望在桥接的过程中还要切换语言。
当然,用户也可以选择其他语言,XDL 的后端框架开源的代码也包含了 TensorFlow 和 MXnet 这两个框架,这与阿里妈妈内部之前各个业务线使用 MXnet 和 TensorFlow 相对较多有关。另外,阿里妈妈内部还有一小部分人在使用 Pytorch。阿里妈妈表示,如果以后有精力或者看到大家对 Pytorch 的需求比较大,会考虑将这个能力释放出来。
其实,XDL 在内部迭代的两年多时间里,在早期也曾支持过 Caffe 等框架,但后来保留下了 MXnet 和 TensorFlow,一是因为内部使用这两个框架较多,二是因为实测证明,这两个框架不管是从易用性、性能各方面都比较好。但这并不代表 XDL 无法支持其他框架,XDL 框架做了很好的接口抽象,任意开源框架和 XDL 框架之间有通用接口相连,未来还要接通什么框架取决于用户的需求,用户也可以很轻松地通过插件的方式把自己喜爱的开源框架引入到 XDL。
新一代分布式数据框架,XDL“新”在哪里?
在面对高维稀疏数据中,阿里妈妈看到计算模式的变化,首先是 XDL 具有分布式计算的能力,第二个是结构化数据。
阿里妈妈认为,计算流用简单的,比如用 tensor 流来表示的方式是非常固化的,而且限制了计算和表示。模型就是抽象表示各种信息,这些信息具有非常强的关联性,如果我们像原来一样把一个样本作为一个向量来表示,或者并列起来变成一个 Tensor 矩阵来表示,会带来信息的冗余或折损。而 XDL 这种在结构化数据上构建表示和计算的能力,实际上是计算模式上的变化。
此外,整个分布式计算能力也会发生变化,原来像 parameter server 参数分布式是比较常见的模式,现在,XDL 使得模型随着不同实体分布和关联,模型计算也随着实体的分布把计算也分布出去,而不只是信息的传递,整个模型的分布式计算模式也会有很大的变化。
“虽然现在这不能算是一个完美的解决方案,但阿里妈妈提出了一个 advanced model Server,这是一种与 parameter server 很不一样的计算模式。这只是第一步,阿里妈妈还希望与业界共同努力,把结构化计算,包括结构化分布式模式从框架层面变成可以解决现实问题的工具。这样的底层抽象的变化,就是 XDL 作为新一代分布式计算框架的体现。”
性能、易用性、资源调度和兼容性上有何优势?
XDL 目前主要针对广告、推荐、搜索场景,重点关注此类场景下高维稀疏数据的性能。
从整个分布式水平扩展能力来说,XDL 能够做到规模化性能提升,这意味着有了更多的机器,整个训练速度会有更大的提升,目前并发度可以达到上千的规模。
从模型能够支持的特征和参数规模来说,高维稀疏数据场景一个很大的特点是模型经常达到百亿特征,千亿参数,模型的物理规模也是从几十 G 到几百 G 不等。
从训练性能来说,阿里妈妈实际生产的大部分模型都是可以做到在分布式高维稀疏场景下,比开源 TensorFlow 性能高 10 倍以上的量级。
另外,高维稀疏数据处理中的一个关键过程是参数的交换,它非常依赖于网络的吞吐。XDL 在网络吞吐上做了很多的优化,目前在双 25G 带宽下,XDL 参数交换的网络利用率可以达到 90%,甚至 100%。(25G 是指网络带宽值,业界现在大部分的网络环境都是万兆,阿里的基础设施已经发展到 25G 或 100G。)
另一方面,在高维稀疏场景下的优化方向跟业界典型框架优化方向不太一样,比如在图像领域场景下,业界大部分的优化方向是怎么把硬件计算性能充分用好,在单机的编译优化上做一些工作,把 GPU 计算力释放出来。但是在广告、搜索等高维稀疏场景下,仅仅把单机计算能力释放出来还不够,因为高维稀疏场景有大量的分布式参数交换。因此,XDL 做了很多分布式通信、小包通信、参数交换优化。
阿里妈妈表示,在易用性、资源调度和兼容性上,XDL 也做了一些优化。
在易用性上,XDL 主要做了两点优化:
整个分布式容灾和调度。目前开源的所有框架,如 TensorFlow 都声称能够支持分布式运行,但实际上整个分布式运行的原生支持都不是特别好,很多第三方的解决方案,如 TensorFlow ONNX 的原生支持也是如此。但 XDL 在原生支持,动态资源分配、调度,以及分布式容灾都做了一个内置的原生支持,并且在多租户环境下做了资源隔离。
编程的易用性,如果写一个单机的 TensorFlow 或单机的 MXnet 网络,你只需要改十来行代码,就能够直接运行在 XDL 的分布式流上,对用户编程很友好。
开发和维护
阿里妈妈将 XDL 开源,是希望对用户更有价值,目前主要做了三个层面的事。
第一,在底层设计上,XDL 是一个桥接兼容的设计;第二,框架开源后用户可以自行改动,而不只是给个 API 接口;第三,XDL 为用户提供模板算法包,告诉用户阿里妈妈的算法设计,生产主力模型。至于后面的发展方向,阿里妈妈表示还需要讨论之后才能正式公布。
此外,开源 XDL 后阿里妈妈会有专人负责社区里的问题解答,针对一些中小型企业的个性化需求,阿里妈妈也会组织一些会议和活动。
XDL 商业价值究竟几何?
XDL 据说是阿里妈妈最具商业价值的深度学习框架,那么它究竟为公司带来多大的经济效益呢?
据了解,基于 XDL 构建的深度学习模型在阿里妈妈带来的广告收入增量已达百亿以上,具体数据并未透露。
开源 XDL 对阿里妈妈核心竞争力影响几何?
对于阿里来说,广告是其核心竞争力所在,如今将这一代表阿里妈妈核心竞争力的深度学习框架开源,是否会对阿里的核心竞争力产生影响呢?
对此,阿里妈妈算法平台负责人给出了否定的答案。他表示,阿里巴巴拥有庞大的生态体,其在数据上的核心竞争力并不会因为一两个开源项目而有所减弱。对于技术团队来讲,创新迭代能力至关重要,不能躺在功劳簿上安枕无忧,开源可以获得业界的反馈,站在更大的舞台上重新审视自己,这对整个团队继续向前是一件好事。因此,开源并不会影响其核心竞争力,反而会加强。
系统化解决方案发布计划
除了核心的 XDL 训练框架外,阿里妈妈透露将全面开源面向高维稀疏数据场景的系统化解决方案,计划分批次对外发布,包括面向在线实时服务的高性能深度学习预估引擎、面向全库实时检索的全新深度学习匹配引擎;同时还内置阿里妈妈自主研发的一系列创新算法,涉及 CTR 预估模型、CVR 预估模型、匹配召回模型、模型压缩训练算法等。
其中,阿里妈妈确认在线低延迟预估引擎会在近期开源,但具体时间未定。
最后,阿里妈妈还透露出了在生态建设上的野心。当被问道 XDL 是否有比肩 TensorFlow 的目标,以及建设一个更广阔的生态时,阿里妈妈算法平台的几位负责人相对一笑,给出了这样的回答:“我自己有个目标,我觉得,运营生态确实很难,但我们还是会朝这个目标前进,希望在国内广告、推荐、搜索领域,我们将成为这个方向深度学习最主流的选择。”
评论 1 条评论