千亿特征流式学习在大规模推荐排序场景的应用

摘要:2017云栖大会机器学习平台PAI专场,阿里巴巴高级技术专家陈绪带来千亿特征流式学习在大规模推荐排序场景的应用的演讲。主要从电商个性化推荐开始谈起,进而描述了技术挑战和PAI解决方案,重点分享了鲲鹏框架和算法调优,最好作了简要总结。

以下是精彩内容整理:

电商个性化推荐

淘宝、天猫在无线、PC端各个场景的商品个性化推荐大家都很熟悉,这些展示都是由个性化推荐排序算法决定的。根据每个用户不同的兴趣,做到千人千面的个性化展示,比如手淘首页的猜你喜欢,它是阿里电商最大的推荐场景,还有人群导购、看了又看、买了又买等页面,背后都是由机器学习算法来规划商品个性化排序。

点击率预估算法

商品的个性化排序一般都转化成点击率预估问题,给定一个当前用户,并且给定用户相关上下文的一些特征,来预测对于一个特定的商品的点击概率有多大,我们希望用户点击率越高的商品排在前面,点击或者不点击是二分类问题,通过采集用户商品各种维度特征进行建模,最终训练排序模型。

点击率预估算法是经典的研究课题,很早以前就有逻辑回归:Logistic Regression(LBFGS、FTRL)线性算法,还有决策树GBDT、XGBOOST提供非线性分类能力,近几年逐渐往更深层次发展研究,比如Factorization Machine、DNN、Wide&Deep。

 

挑战和解决方案

具体到阿里电商场景,我们也有特定的问题和挑战。

阿里电商推荐的业务特点:最大场景达到百亿级别的PV/天,训练样本很大,亿级别用户维度和亿级别商品维度使我们做特征工程交叉组合时非常容易形成爆炸式天文数字的特征维度,还有快速实时变化的用户兴趣和热门商品。

传统的点击率预估算法和平台的挑战是特征规模有限(10亿~100亿)难以刻画全网用户行为和商品特征,热门商品每天也在快速变化,离线训练难以捕捉用户短期内兴趣模式。

基于以上问题,我们做了大量算法框架和平台优化,在PAI平台上开发千亿特征流式学习这样的机器学习框架。

 

阿里Parameter Server (鲲鹏,SIGKDD'17)优化

 

PS支撑阿里集团最大规模的分布式算法训练,我们从2014年开始研发,到目前为止服务广告、推荐、搜索等多个重要场景,支撑PAI平台大规模算法,Owlqn-LR:300亿特征、1千亿样本,LDA:1万亿word - topic矩阵等,我们也逐步向公有云用户开放算法训练服务。

PS框架面临的挑战有很多,包括参数规模和样本规模巨大,为了能够更精确的学习商品特征,我们需要将规模提升到几千亿甚至上万亿级别;模型更新间隔短(分钟级别)才能尽快捕捉线上用户变化信息特征;算法效果稳定性要求高,在鲲鹏基础上做了大量针对性功能和优化来适应新型算法场景。

PS框架具备以下特点:

l  迈向千亿特征规模

200~400台Server,平均35GB内存。

l  特征集合高频率变化

使用定制的ArrayHashMap存储特征权重向量,去除特征ID化环节,插入、迭代性能较std::unordered_map提升300%。我们以高频率向模型中插入新特征到模型中,也会以非常高的频率剔除过期特征,在工程实践上做了大量改进,能够适应高频率特征集合的高频率变化。

l  通信性能优化

当并行server数量非常高时,我们做了大量通信性能优化,使得我们对大量特征样本量实时训练更新,Sparse、Dense参数合并通信,通信链路无锁。

我们将以前离线batch方式转换成实时在线训练,由全量样本训练向流式增量训练(Online Learning)演化,由训练Job转化为不间断训练Service,整个过程中内存数据不落盘,实时感知新数据分区触发训练,将训练样本读到训练进程中,将更新后的模型实时推到在线预测服务中去。同时,框架还支持灵活控制实时训练触发间隔,如果某些场景需要高频模型,最高可以精确到分钟级触发。

我们在多数据源支持统一checkpoint、Exactly Once Failover,所有数据保证严格训练一遍;支持单节点异步failover,在训练过程中,如果有个别进程crash,整个进程不需要打断,可以继续不受影响继续更新模型;我们也可以灵活断点调参,结合流式预估、流式评价算子,加速调参过程。

 

千亿特征流式算法体系

我们在鲲鹏平台上打造了一系列千亿特征流式学习系列算法。包括XFtrl是线性模型+千亿级宽特征;XSVD是千亿规模Embedding向量召回模型,融合了许多矩阵算法;XNN也是千亿特征DNN算法。我们具备了从线性到浅层Embedding再到深层DNN网络的算法建设,实际上涵盖了个性化推荐在算法场景下的粗排召回模型以及精排的ranking模型,在平台上都可以支持。

我们对于参数更新模式进行了相应改进,不间断实时模型更新算法优化(XFtrl为例),比如在样本量累积到很大时很容易遇到数值稳定性问题和参数抖动问题,我们做了动态梯度平均策略和正则策略来弥补甚至消除动态抖动影响;此外,我们需要把特征进行高频增删,我们通过特征权重动态衰减策略及时从模型中剔除,保证模型始终是正向更新。

我们也进行了抽象算子(Operator)体系,比如参数Optimizer,支持稀疏梯度矩阵,减少计算量;参数Initializer,支持Lazy initialization,一直到参数第一次出现时我们才会进行随机初始化;我们还有很多的模型评估operator。

模型评估范式


常规模型评价方式是准备一个验证数据集,每次训练完后在模型上计算Loss、AUC等指标,这样会带来流式场景下的问题:用户点击行为和商品快速变化;静态测试集无法反馈模型动态效果。

流式模型评估:对“未来”数据实时评估当前模型准度:AUC、PCOPC、MAE、...,提高了算法工程师对离线调参的效率。

 

总结

PAI平台鲲鹏框架在手淘、天猫多个大规模推荐场景上线,单场景1天100亿+训练样本,累积2000亿+特征;平台训练速度达到500万Sample/s迭代性能,模型持续增量在线训练超过60天;有了大规模特征和实时应用更新,使引导点击率和客单价显著提升。

我们在千亿特征流式学习模式下训练框架和实现算法的革新,PAI平台鲲鹏框架是推荐、广告、搜索排序算法的利器,而且我们以算法组件形式即将通过PAI平台提供公有云服务。

欢迎加入“数加·MaxCompute购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下:

 

阿里巴巴大数据-玩家社区 /

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

 

时间: 2025-01-25 06:55:56

千亿特征流式学习在大规模推荐排序场景的应用的相关文章

双12根本不在话下,阿里首次揭秘扛过双11的千亿级特征分布式机器学习平台XPS

阿里巴巴电商平台有上亿的用户和产品,每天产生百亿规模的用户反馈数据.比如淘宝首页的猜你喜欢场景,每天就有100亿规模的用户行为数据.如此超大规模的训练数据,给分布式机器学习带来了巨大的挑战,也引入了有趣的研究问题.2017年,阿里巴巴推荐算法团队和计算平台PAI团队合作打造了eXtreme Parameter Sever (XPS) 机器学习平台,其中eXtreme寓意为"追求极致", 体现我们希望设计具有极致性能和效果的机器学习平台的愿景.XPS平台已经广泛全流量运行在手机淘宝的猜你

Android实现热门标签的流式布局_Android

一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出) 类似的自定义布局.下面我们就来详细介绍流式布局的应用特点以及用的的技术点:1.流式布局的特点以及应用场景    特点:当上面一行的空间不够容纳新的TextView时候,     才开辟下一行的空间 原理图:        场景:主要用于关键词搜索或者热门标签等场景2.自定义ViewGroup,重点重写下面

Android实现热门标签的流式布局

一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出) 类似的自定义布局.下面我们就来详细介绍流式布局的应用特点以及用的的技术点: 1.流式布局的特点以及应用场景     特点:当上面一行的空间不够容纳新的TextView时候,     才开辟下一行的空间 原理图: 场景:主要用于关键词搜索或者热门标签等场景 2.自定义ViewGroup,重点重写下面两个方法

Android中常见的热门标签的流式布局的实现

一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出) 类似的自定义布局.下面我们就来详细介绍流式布局的应用特点以及用的的技术点: 1.流式布局的特点以及应用场景     特点:当上面一行的空间不够容纳新的TextView时候,     才开辟下一行的空间 原理图:     场景:主要用于关键词搜索或者热门标签等场景 2.自定义ViewGroup,重点重写下面

双11数据大屏背后的秘密:大规模流式增量计算及应用

首先从理解什么是数据流开始今天的分享,其实在真实的世界中,大部分的数据都是连续产生的数据流,比如手机上产生的GPS信号.用户在互联网上的行为.在线搜索.用户的点击.社交网络分享.即时通信以及一些传感器和物联网设备采集的日志信息等,这些数据都是连续产生的,自然就形成了数据流,在这些数据流产生以后,在很多场景下对于数据流的实时分析就会产生很大的价值. 接下来从大家比较熟悉的数据场景切入,比如大家经常会关注的股市情况,股价的波动其实就是实时数据的分析和聚合,除此之外大家在日常生活中还可能比较关心天气预

双11数据大屏背后:大规模流式增量计算及应用(附资料)

首先从理解什么是数据流开始今天的分享,其实在真实的世界中,大部分的数据都是连续产生的数据流,比如手机上产生的GPS信号.用户在互联网上的行为.在线搜索.用户的点击.社交网络分享.即时通信以及一些传感器和物联网设备采集的日志信息等,这些数据都是连续产生的,自然就形成了数据流,在这些数据流产生以后,在很多场景下对于数据流的实时分析就会产生很大的价值. 接下来从大家比较熟悉的数据场景切入,比如大家经常会关注的股市情况,股价的波动其实就是实时数据的分析和聚合,除此之外大家在日常生活中还可能比较关心天气预

从Storm和Spark 学习流式实时分布式计算的设计

0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛.本来想就写Spark源码分析的文章吧.但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够.因此,我将最近一直在做的系统架构的思路整理出来,形成此文.为什么要参考Storm和Spark,因为没有参照效果可能不会太好,尤其是对于Storm和Spark由了解的同学来说,可能通过对比,更能体会到每个具体实现背后的意义. 本文对流式系统出现的背景,特点,数据HA,服务HA,节点间和计算逻辑间

开源IndexR:如何对上千亿的数据进行秒级探索式分析

在当前信息大爆炸的时代,"大数据"已成为互联网行业人人谈论的热词和话题,比如近几年快速发展的基于大数据进行精准用户定向的程序化广告,以及去年马云提出的利用大数据重塑商品的生产 - 流量 - 销售流程的"新零售"模式等.大数据已经渗透到众多的行业,为许多企业带来了变革性影响.那么,何为"大数据"呢?大数据(Big Data),可以简单的理解为无法在一定时间范围内用常规手段进行处理的海量数据集合.所有企业的业务分析都是基于数据的,每家企业对数据的收集

PostgreSQL "物联网"应用 - 1 实时流式数据处理案例(万亿每天)

物联网的一个特点是万物联网,会产生大量的数据.例如 :一盒药,从生产,到运输,到药店,到售卖.每流经一个节点,都会记录它的信息.又如 :健康手环,儿童防丢手表,一些动物迁徙研究的传感器(如中华鲟),水纹监测,电网监测,煤气管道监测,气象监测等等这些信息.股价的实时预测.车流实时数据统计,车辆轨迹实时合并.商场人流实时统计.数据监控实时处理,例如数据库的监控,服务器的监控,操作系统的监控等.等等......传感器种类繁多,采集的数据量已经达到了海量.这些数据比电商双十一的量有过之而不及,怎样才能处