0
雷锋网 AI 科技评论按:11 月 28 日,阿里巴巴宣布将旗下的大数据营销平台阿里妈妈的算法框架 X-Deep Learning(下文简称 XDL)进行开源,其中,XDL 的面向高维稀疏数据场景、工业级分布式训练以及桥接多后端支持三大主要特点,更是引起了业界的广泛关注。
12 月 21 日,阿里妈妈正式对 XDL 开源,雷锋网 AI 科技评论也借这一机会对阿里妈妈 XLD 团队进行了采访,来了解 XDL 研发背后的契机和技术积累、应用场景、特点优势及未来规划。
XDL 四位主要负责人:
靖世:研究员,阿里妈妈定向广告技术团队负责人兼阿里妈妈算法平台负责人
见独:资深技术专家,阿里妈妈工程平台技术负责人
怀人:资深算法专家,阿里妈妈算法平台深度学习方向负责人兼定向广告排序算法团队负责人
乐迪:资深技术专家,阿里妈妈大数据计算与机器学习平台的工程架构负责人
据悉,XDL 这一框架的研发萌芽于 2016 年年初,当时 XDL 团队就开始探索深度学习在广告技术中端到端建模的方法,在这个过程中遇到的来自业务和技术方面的挑战,则促成了 XDL 研发。
在采访中,XDL 团队透露,在阿里发布开源 XDL 这一消息后,就有超过十家以上的大中型公司向阿里妈妈团队表达了它们的需求,这无疑大大也大大增强了团队对于这一框架的信心。采访最后,他们还表达了对 XDL 的愿景:「希望在国内的推荐、搜索、广告领域,XDL 是深度学习框架最主流的选择。」
1.这一框架是从什么时候开始进行研发的?基于怎样的契机和阿里已有的技术积累?
XDL 是从 2016 年中期开始研发的。不过实际上,早在 2016 年初的时候,我们就在探讨深度学习在广告技术的发展方向,并在当时提出了面向核心的点击率(CTR)预估建模的 Deep Interest Network 算法雏形;2016 年年中,我们启动了第一个基于深度学习的端到端 CTR 模型的研发,并且希望不只是采用 Embedding+MLP 这样的简单架构,而是实现深度学习模型更灵活多样的创新迭代。这是 XDL 项目启动前的一个大背景。
具体来说,XDL 的研发主要受业务和技术两个层面的驱动,这也是该项目启动的契机:
一方面是业务场景对深度学习提出了更高的要求。在淘宝这样的电商场景下,数据具有高维稀疏的特点,比如在淘宝上的一个用户对应一个商品,二者间的样本非常稀疏,因而给数据表示、组织以及传输、计算带来了极大的挑战。一开始,我们也曾尝试过使用 TensorFlow 来构建技术框架来解决这一问题,但实践后很快得出结论,单纯使用 TensorFlow 很难解决阿里妈妈面对的问题。
另一方面则是技术的变革驱动了我们在该技术领域的研究。随着深度学习的发展,其网络结构变得特别复杂,我们认为这种复杂的复合网络结构的迭代、优化的效率,在硬件和软件层面都有很大的提升空间。
XDL 研发前,阿里主要有两个技术积累:一是阿里妈妈事业部牵头做的阿里巴巴最早一代的基于MPI 协议搭建的分布式机器学习平台,其中实现了逻辑回归、MLR、GBDT 等一系列大规模并行算法;另一个是阿里巴巴内部之前启动的图像深度学习项目,做了一个类似分层的深度学习端到端的框架,但是由于这个框架跟 Caffe 的功能有较大重合,因此没有对其进行开源,而之后我们也发现它对业界可能并没有那么大的增量,因而只在内部进行使用,最后也转向其他框架的研发了。
2. 研发至今,经历了哪些比较大的迭代?
现在开源的 XDL 已经经历了三次迭代。第一个版本是由算法团队主导的,第二个版本则是由引擎工程团队主导,现在的第三个版本是由工程团队和算法团队合作迭代的。
3. XDL 目前用在阿里的哪些业务场景?未来是否会考虑将这一框架应用到其他场景?
XDL 作为阿里妈妈的一个横向的机器学习平台,在支撑阿里巴巴的各项业务,目前应用最多的是阿里妈妈的定向广告,包括展示广告和信息流广告,在这个典型应用场景中,每天支撑大约 100 个模型的生产化训练。
将这一框架应用到更多的其他场景中,也是我们对 XDL 进行开源的初衷。我们认为在广告、推荐、搜索等互联网业务中,在目前业内已有的框架基础上去搭建一个深度学习平台还有很多工作要做,包括结构化数据处理、模型结构的创新研发等,但是如果不只是遵循谷歌、Facebook 等国外公司的网络结构的话,就对框架及框架边界提出了更高的要求。因此,我们将结构化数据处理以及模型分布式计算等与传统结构不一样的经验沉淀下来,从算法包到底层计算框架赋能企业,使其在自己的业务上进行更好的迭代。
后期我们也会开放一些工业界的数据集,让研究者也能以这些技术和数据集为基础,进行独立的创新研发。
4.相较于目前两大深度学习开源框架 TensorFlow 和 PyTorch 来说,XDL 独有的特色和产品优势集中体现在哪些方面?
相较于目前两大深度学习开源框架 TensorFlow 和 PyTorch 来说,XDL 的特色和产品优势集中体现两个方面:
第一,XDL 面向超大规模高维稀疏特征的深度学习进行了分布式运行时的设计与优化,这个对推荐、搜索、广告等互联网场景的工业化应用至关重要,而 TensorFlow、PyTorch 等开源深度学习框架更多的是面向图像、视频、语音等低维稠密数据场景进行了优化。 例如,XDL 针对推荐、搜索、广告等场景的训练方式独创了结构化压缩、高阶模型嵌套训练等范式,对大规模深度网络的存储、通信、计算等有一个数量级以上的效率提升。
第二,XDL 不仅仅只是一个训练框架,我们开源的是面向高维稀疏数据场景的完整解决方案,尤其是一系列在阿里妈妈的核心业务场景经过生产验证的算法模型,这对于推荐、搜索、广告等领域从业者来说,有极高的参考价值,可以帮助这个行业的很多团队实现技术的跨越式前进。
5.在具体的应用上,XDL 的性能达到了什么程度,是否有针对 TensorFlow、PyTorch 的「槽点」进行更深层次的优化?
由于 XDL 主要针对推荐、搜索、广告这些场景,因此我们会重点考量 XDL 在这些高维稀疏场景下的性能,我主要从三个层面来讲:
第一个是从分布式水平扩展能力来看,TensorFlow、PyTorch 等适用于低维稠密数据的框架在机器并行度增加时,其性能无法实现较好的提升,例如 TensorFlow 在并发度达到百以上时,很难再通过增加更多的计算资源来提升整体的训练吞吐率,而 XDL 在千级别的并发度上,也能实现线性的提升。
第二个是从支持的特征和参数的规模来看,XDL 支持模型的规模和参数比传统情况下有所提升,XDL 可以支持千亿参数的大规模深度学习模型训练,包括批量训练模式和在线训练模式。
第三个是从实际运行的性能来看,在高维稀疏分布式训练下,XDL 大部分模型比开源的 TensorFlow 模型整体高出十倍以上的一个量级。
6.开源之后,主要的用户群体是哪些人?这一框架又是怎样满足不同领域的用户需求的?
我们在 11 月 28 号发布了开源计划后,就有超过十家以上的大中型公司向我们表达了需求,这是因为我们将 XDL 定义为一个偏向企业级用户的框架,包括 XDL 所面向的高维稀疏场景以及推荐、搜索、广告这三个互联网最核心的典型场景,因此我们会在 To B 这个方向上有较大的着力点。
在满足不同领域的用户需求方面,首先,由于 XDL 本身带有很强的归属性,它跟 TensorFlow 等通用开源框架不太一样。一方面非企业级用户并不需要处理太多的工业场景数据,XDL 对他们的必要性不是很多;另一方面,在工业场景下,XDL 除了考虑训练框架本身的基础属性,还需要考虑怎么跟生产系统耦合、怎么访问和调度嵌入数据、数据训练后又怎样将模型发布到生产系统中等等一系列问题。对此,我们给出的其实是一整套解决方案。当然,这套方案并不能覆盖所有用户的需求,我们之所以开源,也是希望以生态化的开放方式,来让业界共同发展这个领域。
另外从业务价值上讲,推荐、搜索、广告三大场景已是互联网信息爆炸时代的一个「标配」,因为这些场景足够大且足够有特点,而阿里妈妈又正好覆盖了这些场景,从业务场景到整个解决方案,有助于实际解决各种各样的技术挑战。
7. 对这一框架未来的发展有怎样的愿景?
希望在国内的推荐、搜索、广告领域,XDL 是深度学习框架最主流的选择。
8.目前 TensorFlow 和 PyTorch 的用户群体已经很大了,你们认为 XDL 的未来地位能否与二者并肩,又打算如何推广 XDL?
XDL 确实对 TensorFlow 和 PyTorch 的一些能力进行了扩展,我们也希望能在推荐、搜索、广告领域建立一个庞大的技术生态去与 PyTorch 和 TensorFlow 比肩,但目前还处于迈向这个目标的重要阶段。当下,我们主要还是比较务实地将一些技术成果公布出来,按照我们认为对的方向以及业界的需求,希望能够填补在搜索、推荐、广告等高维稀疏场景的技术真空,至于最终能否实现 TensorFlow 和 PyTorch 这样的生态级别,需要我们和业界的共同努力。
9. 接下来是否会投入专门的团队对这一框架进行维护和更新?有哪些更新计划?
一方面,这个框架进行开源后,一定会有很多人在使用过程中遇到一些问题或者需要我们帮助的地方,我们这边会有专门的团队来负责对用户反馈的 bug 等整个社区的问题进行解答,社区建设是我们非常看重的一个方面。
另一方面,针对对我们这个框架有迫切需求的公司,我们之后也会组织一些类似 workshop 这样的会议和活动,来与他们进行面对面的交流。同时,我们还会有针对性地挑选出一些合作伙伴,以重点贴身服务的方式帮助其完成初期的全链路系统建设,并从它们的视角去考量用户使用等方面的需求。
除此之外,我们还会结合阿里内部其他团队的力量,来将这件事情做起来。至于之后的发展方向和更新规划,还需要我们团队进行讨论后才能正式公布。
109. 是否会考虑借用社区的形式,和开发者一起去维护这个框架?
当然会,因为我们希望给用户带来价值,我主要从以下三个层面来谈一下:
第一个层面是底层设计上的桥接兼容,可以让用户直接使用自己熟悉的编程方式就可以获得 XDL 的结构化数据的分布式建模能力以及大规模稀疏数据的计算能力;
第二个我们将 XDL 进行开源,也是希望让用户(有能力的情况下)可以在框架中自行改动,而不是仅仅给他们一个 API 接口,让他们在云上跑一跑;
第三个是我们也在框架中直接给了算法模板,展示了我们自己如何使用框架设计相关算法。
XDL 目前已在 Github 社区开放,大家可前往以下地址获取:
雷峰网原创文章,未经授权禁止转载。详情见转载须知。