刚刚,阿里妈妈正式对外发布了X-Deep Learning(下文简称XDL)的开源代码地址,开发者们能够在Github上自主下载。算法
此前,在11月底,阿里妈妈就公布了这项开源计划,引来了业界的普遍关注。XDL突破了现有深度学习开源框架大都面向图像、语音等低维稠密数据而设计的现状,面向高维稀疏数据场景进行了深度优化,并已大规模应用于阿里妈妈的业务及生产场景。本文将为你们详细介绍XDL的设计理念及关键技术。后端
以深度学习为核心的人工智能技术,过去的几年在语音识别、计算机视觉、天然语言处理等领域得到了巨大的成功,其中以GPU为表明的硬件计算力,以及优秀的开源深度学习框架起到了巨大的推进做用。服务器
尽管以TensorFlow、PyTorch、MxNet等为表明的开源框架已经取得了巨大的成功,可是当咱们把深度学习技术应用在广告、推荐、搜索等大规模工业级场景时,发现这些框架并不能很好的知足咱们的需求。矛盾点在于开源框架大都面向图像、语音等低维连续数据设计,而互联网的众多核心应用场景(如广告/推荐/搜索)每每面对的是高维稀疏离散的异构数据,参数的规模动辄百亿甚至千亿。进一步的,很多产品应用须要大规模深度模型的实时训练与更新,现有开源框架在分布式性能、计算效率、水平扩展能力以及实时系统适配性的等方面每每难以知足工业级生产应用的需求。网络
X-DeepLearning正是面向这样的场景设计与优化的工业级深度学习框架,通过阿里巴巴广告业务的锤炼,XDL在训练规模和性能、水平扩展能力上都表现出色,同时内置了大量的面向广告/推荐/搜索领域的工业级算法解决方案。并发
系统核心能力框架
1) 为高维稀疏数据场景而生。支持千亿参数的超大规模深度模型训练,支持批学习、在线学习等模式。机器学习
2) 工业级分布式训练能力。支持CPU/GPU的混合调度,具有完整的分布式容灾语义,系统的水平扩展能力优秀,能够轻松作到上千并发的训练。异步
3) 高效的结构化压缩训练。针对互联网样本的数据特色,提出告终构化计算模式。典型场景下,相比传统的平铺样本训练方式,样本存储空间、样本IO效率、训练绝对计算量等方面都大幅降低,推荐等场景下总体训练效率最大可提高10倍以上。分布式
4) 成熟多后端支持。单机内部的稠密网络计算复用了成熟开源框架的能力,只须要少许的分布式驱动代码修改,就能够把TensorFlow/MxNet等的单机代码运行在XDL上,得到XDL分布式训练与高性能稀疏计算的能力。高并发
内置工业级算法解决方案
1)点击率预估领域的最新算法,包括深度兴趣网络(Deep Interest Network, DIN),用户兴趣演化模型(Deep Interest Evolution Network, DIEN),跨媒介网络(Cross Media Network,CMN)。
2)点击率&转化率联合建模的全空间多任务模型(Entire Space Multi-task Model, ESMM)。
3)匹配召回领域的最新算法——深度树匹配模型(Tree-based Deep Match,TDM)。
4)轻量级通用模型压缩算法(Rocket Training)
XDL-Flow:数据流与分布式运行时
XDL-Flow驱动整个深度学习计算图的生成与执行,包括样本流水线、稀疏表征学习、稠密网络学习。同时,XDL-Flow也负责分布式模型的存储与交换控制逻辑,分布式容灾与恢复控制等全局一致性协调的工做。
在搜索、推荐、广告等场景下的样本量巨大,一般达到几十TB至数百TB,若是不能很好的优化样本流水线,样本IO系统很容易成为整个系统的瓶颈,从而致使计算硬件的利用率低下。在大规模稀疏场景下,样本读取的特色是IO密集,稀疏表征计算的特色是参数交换网络通讯密集,稠密深度计算是计算密集型。
XDL-Flow经过把三个主要环节异步流水线并行,较好的适配了3种不一样类型任务的性能。最好的状况下,前两个阶段的延时都被隐藏了。同时,咱们也正在尝试自动化的Tunning异步流水线的各个参数,包括各个Step的并行度、Buffer大小等,尽量让用户不须要关心整个异步流水线并行的细节。
AMS:高效模型服务器
AMS是面向稀疏场景专门设计与优化的分布式模型存储与交换子系统。咱们综合小包网络通讯、参数存储结构、参数分布式策略等进行了大量的软硬件优化,使得AMS在吞吐力和水平扩展力上都大幅优于传统的Parameter Server,AMS也支持内置的深度网络计算,使得你可使用AMS进行表征子网络的二阶计算。
1)AMS经过软硬件结合在网络通讯层作了大量优化,包括使用Seastar,DPDK,CPUBind,ZeroCopy等技术,充分压榨硬件性能,通过咱们实际测试,大规模并发训练下,参数交换致使的小包吞吐能力是传统RPC框架的5倍以上。
2)经过内置的参数动态均衡策略,能够在运行过程当中找到最优的稀疏参数分布策略,有效解决传统参数服务器因为参数分布式不均匀带来的热点问题,大幅提升了系统在高并发状况下的水平扩展能力。
3)AMS一样支持经过GPU加速大Batch Size场景下的Sparse Embedding计算,针对超大Batch的场景,能够起到很好的加速做用。
4)AMS支持内部定义子网络。例如咱们的算法解决方案中提供的Cross-Media建模,图像部分的表征子网络就是以AMS内运行的方式定义的,大幅减小了重复计算和网络吞吐。
Backend Engine:桥接技术复用成熟框架的单机能力
为了充分利用现有开源深度学习框架在稠密深度网络上的能力,XDL使用桥接技术(Bridging),把开源深度学习框架(本期开源版XDL支持了TensorFlow、MxNet)做为咱们的单机稠密网络的计算引擎后端。用户能够在保留TensorFlow或MxNet网络开发习惯的同时,经过少许的驱动代码修改,就直接得到XDL在大规模稀疏计算上的分布式训练能力。换句话说,使用XDL时无需再学习一门新的框架语言,这带来另外一个好处是XDL能够跟现有成熟的开源社区无缝对接——用户能够很轻松地将tensorflow社区的某个开源模型经过XDL拓展到工业级场景。
Compact Computation:结构化计算模式大幅提高训练效率
工业界稀疏场景下的样本表征,每每呈现很强的结构化特色,例如用户特征、商品特征、场景特征。这种构建方式决定了某些特征会大量出如今重复的样本中——隶属于同一个用户的多条样本中,用户特征很大一部分是相同的。结构化样本压缩正是利用海量样本中,大量局部特征重复这一特色,在存储和计算两个维度上对特征进行压缩,节省了存储、计算和通讯带宽资源。样本预处理阶段,对须要聚合的特征进行排序(例如按用户ID排序,聚合用户特征);batching阶段,在tensor层面进行压缩;计算阶段,压缩特征只有在最后一层才会展开,极大节省深层网络的计算开销。 推荐场景下的效果验证表示,在典型的生产数据上,使用聚合排序的样本和彻底shuffle的样本评估AUC指标一致,总体性能提高10倍以上。
Online-Learning:大规模在线学习
在线学习近年来在工业界开始被大规模应用,它是工程与算法的深刻结合,赋予模型实时捕捉线上流量变化的能力,在一些对时效性要求很高的场景,有十分大的价值。例如在电商大促等场景下,在线学习能够更加实时的捕捉用户行为的变化,显著的提高模型的实时效果。XDL提供了一套完整的在线学习的解决方案,支持基于全量模型,读取实时消息队列里的样本进行实时持续学习,咱们内置支持了Kafka等做为Message Source,并容许按照用户设置控制模型写出的周期。另外,为了不无限制的新特征流入致使的实时模型爆炸问题,XDL内置了实时特征自动选择与过时特征淘汰等功能,保证用户使用XDL进行在线学习的简便性。
1)去ID化的稀疏特征学习:传统的机器学习框架通常要求对稀疏特征进行ID化表征(从0开始紧凑编码),以此来保证训练的高效性。XDL则容许直接以原始的特征进行训练,大幅简化了特征工程的复杂度,极大地增长了全链路数据处理效率,这一特性在实时在线学习场景下显得更加有意义。
2)实时特征频控:用户能够设置一个特征过滤的阈值,例如出现次数大于N次的特征才归入模型训练,系统会自动的采用自动几率丢弃的算法进行特征选择,这样能够大幅下降无效超低频特征在模型中的空间占用。
3)过时特征淘汰:长周期的在线学习时,用户也能够经过打开过时特征淘汰功能,系统会自动的对影响力弱且长周期没有碰触到的特征参数进行自动淘汰。
典型的点击率(Click-Through Rate)预估模型
DIN(Deep Interest Network)
传统的Embedding&MLP类的模型并未对用户的表达作过多的工做。每每经过embedding的机制将用户的历史行为投影到一个定长的向量空间,再通过一个sum/avg pooling操做获得一个定长的用户向量表达。可是用户的兴趣是多种多样的,用一个固定的向量去表达用户不一样的兴趣是很是难的。事实上用户在面对不一样商品的时候,其兴趣表现也不同,仅仅和这个商品相关的兴趣会影响用户的决策。
所以咱们在预估用户对一个具体商品的点击率的时候只须要表达其与此商品相关的兴趣。在DIN中咱们提出了一个兴趣激活机制,经过被预估的商品去激活用户历史行为中相关的部分,从而获取用户在这个具体商品上的兴趣。
论文地址:https://arxiv.org/abs/1706.06978
DIEN(Deep Interest Evolution Network)
DIEN主要解决两个问题:兴趣提取和兴趣演化。在兴趣提取这部分,传统的算法直接将用户的历史行为当作用户的兴趣。同时整个建模过程当中的监督信息所有集中于广告点击样本上。而单纯的广告点击样本只能体现用户在决策是否点击广告时的兴趣,很难建模好用户历史每一个行为时刻的兴趣。
本文中咱们提出了auxiliary loss 用于兴趣提取模块,约束模型在对用户每个历史行为时刻的隐层表达可以推测出后续的行为,咱们但愿这样的隐层表达能更好的体现用户在每个行为时刻的兴趣。在兴趣提取模块后咱们提出了兴趣演化模块,传统的RNN相似的方法只能建模一个单一的序列,然而在电商场景 用户不一样的兴趣其实有不一样的演化过程。在本文中咱们提出AUGRU(Activation Unit GRU),让GRU的update门和预估的商品相关。在建模用户的兴趣演化过程当中,AUGRU会根据不一样的预估目标商品构建不一样的兴趣演化路径,推断出用户和此商品相关的兴趣。
论文地址:https://arxiv.org/abs/1809.03672
CMN(Cross Media Network)
CMN旨在CTR预估模型中引入更多的模态数据,如图像信息。在原有ID类特征基础上,增长了图像视觉特征,共同加入广告CTR预估模型,在阿里妈妈大规模数据上取得了显著的效果提高。CMN包括多项技术特点:第一,图像内容特征抽取模型与主模型共同训练,联合优化; 第二,同时使用图像信息表达广告和用户,其中用户表达采用用户历史行为对应的图片; 第三,为处理训练涉及到的海量图像数据,提出了“高级模型服务”的计算范式,有效减小训练过程当中的计算、通讯、存储负载。CMN除用于图像特征引入外,对于文本、视频等内容特征也能够以合适的特征提取网络、用一样的模型处理。
论文地址:https://arxiv.org/abs/1711.06505
典型的转化率(Conversion Rate)预估模型
ESMM(Entire Space Multi-task Model)
Entire Space Multi-task Model (ESMM) 是阿里妈妈研发的新型多任务联合训练算法范式。ESMM模型首次提出了利用学习CTR和CTCVR的辅助任务迂回学习CVR的思路,利用用户行为序列数据在完整样本空间建模,避免了传统CVR模型常常遭遇的样本选择误差和训练数据稀疏的问题,取得了显著的效果。
ESMM 能够很容易地推广到具备序列依赖性的用户行为(浏览、点击、加购、购买等)预估中,构建全链路多目标预估模型。ESMM模型中的BASE子网络能够替换为任意的学习模型,所以ESMM的框架能够很是容易地和其余学习模型集成,从而吸取其余学习模型的优点,进一步提高学习效果,想象空间巨大。
论文地址:https://arxiv.org/abs/1804.07931
典型的匹配召回模型
TDM(Tree-based Deep Match)
TDM自主创新提出了一套完整的基于树的复杂深度学习推荐匹配算法框架,它经过创建用户兴趣层次树结构实现了高效的全库检索,并以此为基础赋能深度模型引入Attention等更先进的计算结构,达到了在精度、召回率以及新颖性等指标上相对于传统推荐方法的显著效果提高。
进一步的,TDM设计实现了一套完整的 初始树-模型训练-树重建-模型再训练 的联合训练迭代框架,更加促进了效果的提高。联合训练赋予了TDM算法框架较好的通用性,为TDM向新场景、新领域的迁移扩展提供了良好的理论基础和极大的工程可行性。
论文地址:https://arxiv.org/abs/1801.02294
典型的模型压缩算法
Rocket Training
工业上在线模型的实时推理对响应时间提出很是严苛的要求,从而必定程度上限制了模型的复杂程度。模型复杂程度的受限可能会致使模型学习能力的下降从而带来效果的降低。
目前有2种思路来解决这个问题:一方面,能够在固定模型结构和参数的状况下,用计算数值压缩来下降inference时间,同时也有设计更精简的模型以及更改模型计算方式的工做,如Mobile Net和ShuffleNet等工做。
另外一方面,利用复杂的模型来辅助一个精简模型的训练,测试阶段,利用学习好的小模型来进行推理。这两种方案并不冲突,在大多数状况下第二种方案能够经过第一种方案进一步下降inference时间,同时,考虑到相对于严苛的在线响应时间,咱们有更自由的训练时间,有能力训练一个复杂的模型。Rocket Training属于第二种思路,它比较的轻巧优雅,方法具备很强的通用性,能够根据系统能力来定制模型复杂度,提供了一种"无极调速"手段。在阿里妈妈的生产实践中,Rocket Training能够极大地节省在线计算资源,显著提高系统应对双十一大促等流量洪峰的能力。
论文地址:https://arxiv.org/abs/1708.04106
咱们提供几组Benchmark数据供你们参考,重点看一下XDL在大batch、小batch等场景下的训练性能以及水平可扩展能力,以及结构化压缩训练带来的提速。
基于CPU训练的深度CTR模型
咱们选取模型结构为Sparse Embedding DNN结构,N路Sparse特征分别作Embedding,再经过BiInteraction获得若干路NFM特征。选择两个特征规模的场景,Sparse特征总规模分别约为10亿(对应百亿参数)/100亿(对应千亿参数),dense维度为数百维,单条样本Sparse特征id数量约100+/300+个。
训练模式:BatchSize=100,异步SGD训练。
从bechmark结果能够看到,在高维稀疏场景下,XDL有明显的优点,在至关大并发的状况下,保持了良好的线性可扩展能力。
基于GPU训练的深度CTR模型
本文做者:XDL
本文来自云栖社区合做伙伴“阿里技术”,如需转载请联系原做者。