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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 摘要:2017云栖大会机器学习平台PAI专场,阿里巴巴高级技术专家陈绪带来千亿特征流式学习在大规模推荐排序场景的应用的演讲。主要从电商个性化推荐开始谈起,进而描述了技术挑战和PAI解决方案,重点分享了鲲鹏框架和算法调优,最好作了简要总结。

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

以下是精彩内容整理:

电商个性化推荐

ad99a41984a434a71373871f6fe35211a4d3adb4

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

点击率预估算法

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

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

 2f05de3d348df2cc152f5bdef4b75b5ca6824d0c

挑战和解决方案

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

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

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

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

 10852409101ada02c0f28f2ded22b2f853cf9b6d

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

 0abc20db739ccce4cf06dca06ea4bdfa035bb602

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参数合并通信,通信链路无锁。

8ecc0e4ca008fa57cff15a67c87860499fa5d752

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

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

 

千亿特征流式算法体系

90464578f645c8180b87a9fc36a269cc51d1b0bf

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

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

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

模型评估范式

592704ecd5a8eeb31a41e22b43badf8008d3e691

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

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

 

总结

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

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


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

IMG_3471


 6c4b69af9fd1b465628b63fcee73224de0b62357

阿里巴巴大数据-玩家社区 https://yq.aliyun.com/teams/6/

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

bba01b493e1c5d904e882b1c380673c6ebe49a98

 

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
存储 人工智能 PyTorch
基于PyTorch/XLA的高效分布式训练框架
基于PyTorch/XLA的高效分布式训练框架
505 2
|
Java 数据库连接 Maven
Spring与Mybatis整合&&aop整合pageHelper分页插件1
Spring与Mybatis整合&&aop整合pageHelper分页插件1
271 0
|
SQL 机器学习/深度学习 分布式计算
Apache Spark 3.0.0重磅发布 —— 重要特性全面解析
开发了近两年(自2018年10月份至今)的Apache SparkTM 3.0.0正式发布! Apache SparkTM 3.0.0版本包含3400多个补丁,是开源社区做出巨大贡献的结晶,在Python和SQL功能方面带来了重大进展并且将重点聚焦在了开发和生产的易用性上。同时,今年也是Spark开源10周年,这些举措反映了Spark自开源以来,是如何不断的满足更广泛的受众需求以及更多的应用场景
Apache Spark 3.0.0重磅发布 —— 重要特性全面解析
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
772 0
|
消息中间件 SQL 大数据
Hologres 在大数据实时处理中的应用
【9月更文第1天】随着大数据技术的发展,实时数据处理成为企业获取竞争优势的关键。传统的批处理框架虽然在处理大量历史数据时表现出色,但在应对实时数据流时却显得力不从心。阿里云的 Hologres 是一款全托管、实时的交互式分析服务,它不仅支持 SQL 查询,还能够与 Kafka、MaxCompute 等多种数据源无缝对接,非常适合于实时数据处理和分析。
369 2
|
机器学习/深度学习 数据采集 监控
深度学习之在线学习与适应
基于深度学习的在线学习与适应,旨在开发能够在不断变化的环境中实时学习和调整的模型,使其在面对新数据或新任务时能够迅速适应并维持高性能。
269 0
|
缓存 算法
KV cache复用与投机采样问题之多轮对话复用KV cache对FTT变长问题如何解决
KV cache复用与投机采样问题之多轮对话复用KV cache对FTT变长问题如何解决
475 0
|
机器学习/深度学习
损失函数大全Cross Entropy Loss/Weighted Loss/Focal Loss/Dice Soft Loss/Soft IoU Loss
损失函数大全Cross Entropy Loss/Weighted Loss/Focal Loss/Dice Soft Loss/Soft IoU Loss
583 2
|
存储 并行计算 Java
一文读懂 PyTorch 显存管理机制
一文读懂 PyTorch 显存管理机制
928 1
|
Web App开发 编解码 API
WebRTC简介及使用
WebRTC简介及使用
756 0

热门文章

最新文章