【云栖号案例 | 互联网】小打卡:基于 MaxCompute+PAI 的推荐算法实践
云栖号案例库:【点击查看更多上云案例】
不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策!
案例背景
小打卡是国内最大的兴趣社群平台,每天能够产生上百万条新的内容。在这样超大的内容生产背景下,平台也面临着千人千面、内容分发上的巨大挑战。依托于阿里云MaxCompute,小打卡已经完成了TB级数据仓库方案。在此基础之上,结合机器学习PAI,实现了千人千面的推荐算法。本文将从技术选型、推荐架构、开源算法结合三个方面,讲述小打卡在MaxCompute上的一些实战经验。
为什么选择MaxCompute
MaxCompute是阿里云完全自研的一种快速、完全托管的TB/PB级的数据仓库解决方案,并且上层提供了DataWorks以实现工作流可视化开发、调度运维托管的一站式海量数据离线加工分析平台。除此之外,MaxCompute还与阿里云服务的多个产品集成,比如:
- 数据集成
完成MaxCompute与各种数据源的相互同步 - 机器学习PAI
实现直接基于MaxCompute完成数据处理、模型训练、服务部署的一站式机器学习 - QuickBI
对MaxCompute表数据进行报表制作,实现数据可视化分析 - 表格存储
阿里云自研的分布式NoSQL数据存储服务,MaxCompute离线计算的机器学习特征可以很方便的写入,以供在线模型使用。
相反,如果完全基于开源的Hadoop框架,从服务部署、可视化开发、代码管理、任务调度、集群运维等多方面,均需要大量的人力来开发与维护。基于MaxCompute,不论是人力成本,还是计算成本,还是运维成本,都已经降到了最低。
小打卡推荐系统架构
小打卡的整个技术架构完全基于阿里云实现。埋点日志、业务数据分别由日志服务、RDS/DRDS承担收集和存储任务,通过数据集成同步到MaxCompute,之后便可基于PAI实现机器学习任务。其物理结构如下图所示。
机器学习PAI-Studio提供了数据预处理、特征工程、机器学习、深度学习、文本分析等丰富的机器学习组件,并且计算结果直接以宽表的形式存储于MaxCompute,极大的减轻了算法开发的工作量。
我们基于PAI,实现了GBDT+LR算法,任务流如下图所示:
图中采用了丰富的PAI机器学习组件,主要包括6个部分:1-特征加工,2-训练模型,3-验证模型,4-测试模型,5-特征映射关系,6-特征重要性。开发完成后,可以加载到DataWorks中进行调度,运行完成会生成GBDT模型文件(pmml格式)、LR模型文件(pmml格式)、特征映射表,以便线上使用。由于我们后端主服务均在华北1,而PAI的模型在线部署在华东2,存在着公网访问问题,因此我们暂时无法使用PAI的模型在线部署功能,建议大家将两部分放在同一地域。鉴于此问题,幸好PAI的同学提供了将pmml模型文件写入oss的脚本,相关代码如下:
- pmml模型写入oss
pai -name modeltransfer2oss
-DmodelName=xlab_m_GBDT_LR_1_1806763_v0 -DossPath="oss://test.oss-cn-shanghai-internal.aliyuncs.com/model/" -Darn="acs:ram::123456789:role/aliyunodpspaidefaultrole" -Doverwrite=true -Dformat=pmml;
因此我们可以将pmml文件写入oss,然后后端服务读取pmml模型文件,自行创建模型在线预测。对于解析pmml模型文件,虽然有开源项目支持pmml模型加载,但是由于pmml过于通用,导致性能存在问题,因此我们定制化自解析模型。
如何结合开源算法
遗憾的是,PAI提供的机器学习算法仍然有限,如果想要使用开源项目来实现算法部分怎么办呢?我们对此也做了尝试,我们则结合MaxCompute+PAI+xLearn实现了基于FM算法的CTR预估模型。
由于xLearn需要在单独的一台ECS上执行,那么问题就来了:
1.如何从MaxCompute拉取数据,又如何上传结果?
MaxCompute提供了pyodps,可以很方便的使用python读写MaxCompute的离线表。因此,我们在python循环检测PAI任务的特征工程结果表是否生成完成。生成完成,则启动下载数据和算法训练任务。算法执行结束后,则将模型文件通过pyodps写入MaxCompute,当然也可以使用tunnel工具来完成。
2.如何周期性调度?DataWorks上的任务与ECS上的任务,如何形成依赖关系?
对于拉取,我们通过循环实现了python与MaxCompute表的依赖关系,那么算法训练完成了,DataWorks的下游怎么知道呢?幸好,DataWorks提供了do-while控制流组件,我们可以在while条件中检测模型表相应分区的数据是否存在了,在 do 组件中,则采用shell执行sleep。跳出while后,则下游也开始正常执行了。之后便可以将模型和映射文件同步写入到oss,以供后端使用了。其中 do-while 结构如下:
总结
除了排序算法之外,我们还使用PAI和SQL,分别实现了item_cf和user_cf的召回算法,整个推荐系统完全打通。基于MaxCompute利用DataWorks调度系统,我们实现了推荐算法模型的每日自动更新。相比于模型不更新,我们对比了60天前的模型,新的模型效果提升10%左右。
云栖号案例库:【点击查看更多上云案例】
不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【云栖号案例 | 游戏&娱乐】混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践
云栖号案例库:【点击查看更多上云案例】不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 案例背景 2019杭州云栖大会大数据企业级服务专场,由斗鱼大数据高级专家张龙带来以 “混合云模式下 MaxCompute+Hadoop 混搭大数据架构实践” 为题的演讲。本文讲述了从 Apache Hadoop 阶段到 Cloudera CDH 阶段斗鱼大数据架构的发展历程。提出了上云过程中斗鱼遇到的问题和跳战,包括数据安全、数据同步以及迁移任务。概括了混合云模式给斗鱼带来资源效率更高和资源成本更低的变化。 斗鱼大数据架构发展历程 在2014年中期,斗鱼就开始使用大数据,最开始使用的是简单的HBase和Hadoop。在2015年,开始使用CDH运维大数据集群,主要针对可视化运维。在2017年的下半年,斗鱼开始接触阿里云大数据的一些产品,并且与其他产品做了对比。最终选择了阿里云的MaxCompute。 Apache Hadoop阶段 由于业务场景比较简单,组件较少,并且使用的人也少,但可以灵活的操作,同时集群规模较小,运维要求低,可以自由的利用开源,培养了许多人才。...
- 下一篇
【云栖号案例 | 互联网】小打卡:快速部署大数据计算平台实践
云栖号案例库:【点击查看更多上云案例】不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 案例背景 小打卡致力于帮助用户成为更好的自己。目前,已为3000万用户提供体验服务3.4亿人次,内容消费7.4亿人次。在小打卡上线初期,业务分析所需的数据主要是通过查询mysql库表。现在,小打卡的主要业务分析需求,包括业务报表,用户行为分析,A/B/n实验评估,个性化推荐,数据服务等全部是借助于阿里云的大数据平台来满足。 选择阿里云大数据产品的原因: 1.成本低享用阿里云超大规模的云计算资源,按照实际需要采购存储和计算资源。企业无需组建专门的大数据平台部署和运维团队,在业务发展初期,极大的降低了拥有大数据平台的各项成本。2.效率高企业通过阿里云官网了解并采购所需的大数据产品,快速搭建适合业务的平台架构阿里云大数据提供开发生产环境隔离的集成开发环境,以及完善的调度/监控/数据管理等工具能力,提高数据仓库的开发效率企业可以快速构建大数据平台的功能模块,快速相应业务需求3.性能按需采购阿里云大数据的I/O及计算能力弹性伸缩,可以支持TB/PB/EB级数据规模,千万级别...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程