微信号:yunqiinsight

介绍:云栖社区是由阿里云负责运营、阿里巴巴技术协会和阿里巴巴集团各技术团队提供内容支持的开放式技术社区.

揭秘扛过双11的千亿级特征分布式机器学习平台XPS

2018-02-07 21:29 XPS团队

云栖君导读:阿里巴巴电商平台有上亿的用户和产品,每天产生百亿规模的用户反馈数据。比如淘宝首页的猜你喜欢场景,每天就有100亿规模的用户行为数据。如此超大规模的训练数据,给分布式机器学习带来了巨大的挑战,也引入了有趣的研究问题。


2017年,阿里巴巴推荐算法团队和计算平台PAI团队合作打造了eXtreme Parameter Sever (XPS) 机器学习平台,其中eXtreme寓意为“追求极致”, 体现我们希望设计具有极致性能和效果的机器学习平台的愿景。XPS平台已经广泛全流量运行在手机淘宝的猜你喜欢、生活研究所、飞猪旅行和天猫推荐等大数据场景。


2017年双11购物狂欢节当天,小时级XNN模型在猜你喜欢和天猫推荐场景上线,稳定和快速地使用了用户双11的实时行为信息,显著提升了双11当天的收入和用户价值。在性能上,XPS平台上的例行算法,现在每天能轻松处理100亿规模样本1000亿规模的特征,算法运行速度快,容错能力强,资源利用率高。本文将对XPS平台的整体结构进行介绍,希望通过这些分享和大家交流我们在分布式算法设计和框架优化上的经验。


规模庞大且高频变化的特征和样本,给分布式机器学习平台的设计带来的挑战具体可以归结为样本、特征和分布式规模三个方面:


在样本方面,我们每天面对的是百亿规模的训练数据,累计六个月的历史训练数据就超过了万亿规模。显然,传统的全量多轮迭代的机器学习算法已经不太适合这样规模的训练样本,因为这类算法需要消耗的计算资源极多,也无法很好地引入数据的时序性。


在特征方面,大规模样本下特征总量轻易超过千亿量级,传统的特征编号方法需要消耗极多的机器资源和耗费很长的计算时间来完成特征编号,而且对新出现的特征也难以及时进行编号。从资源消耗和时间消耗上看,特征序列化编号方法已经是不可承受的步骤。此外,采用类似TensorFlow里通过string_to_hash_bucket的方法将特征映射到固定范围的做法,虽然保证固定了tensor的shape,减少了参数总量,但是在特征总数巨大的时候则又引入了大量的哈希冲突,影响了算法效果。


在分布式规模方面,大规模特征下给Server的存储和分布式计算性能带来巨大压力。举例来说,1万亿个32位float浮点数就需要3.63TB的存储空间,再加上需要保留的历史梯度等,往往需要300到600台server才能使各个进程的内存占用控制在一个合理范围。Server数成倍增长,导致并行请求数也线性增长,给通信也带来较大压力。同时,存储量以及单任务进程数的增长,也给集群调度、容错、网络、IO带来较大的压力。


面对这些挑战,XPS平台提出了很多创新的技术来应对,向“极限参数服务器”的目标前进了一步:


在样本处理问题上,我们采用流式学习算法为主的算法选型来解决大规模样本问题。在流式学习下,对每一批新数据,直接在当前模型上进行增量训练,并产出下一个模型,无需加载全量数据进行多轮全量学习。流式学习算法选型,平衡了数据规模和资源消耗问题,更轻量级地应对了大规模样本的问题;


在特征处理问题上,采用了将特征哈希映射为哈希值的方法替代特征编号机制。在节省内存、提升性能的同时,支持了特征的动态稀疏化正则机制和表示向量维度的动态扩张