小打卡:基于MaxCompute+PAI的推荐算法实践

简介: 小打卡是国内最大的兴趣社群平台,每天能够产生上百万条新的内容。依托于阿里云MaxCompute,小打卡已经完成了TB级数据仓库方案。在此基础之上,结合机器学习PAI,实现了千人千面的推荐算法。

前言:

小打卡是国内最大的兴趣社群平台,每天能够产生上百万条新的内容。在这样超大的内容生产背景下,平台也面临着千人千面、内容分发上的巨大挑战。依托于阿里云MaxCompute,小打卡已经完成了TB级数据仓库方案。在此基础之上,结合机器学习PAI,实现了千人千面的推荐算法。本文将从技术选型、推荐架构、开源算法结合三个方面,讲述小打卡在MaxCompute上的一些实战经验。


一、为什么选择MaxCompute

MaxCompute是阿里云完全自研的一种快速、完全托管的TB/PB级的数据仓库解决方案,并且上层提供了DataWorks以实现工作流可视化开发、调度运维托管的一站式海量数据离线加工分析平台。除此之外,MaxCompute还与阿里云服务的多个产品集成,比如:
• 数据集成
完成MaxCompute与各种数据源的相互同步
• 机器学习PAI
实现直接基于MaxCompute完成数据处理、模型训练、服务部署的一站式机器学习
• QuickBI
对MaxCompute表数据进行报表制作,实现数据可视化分析
• 表格存储
阿里云自研的分布式NoSQL数据存储服务,MaxCompute离线计算的机器学习特征可以很方便的写入,以供在线模型使用
相反,如果完全基于开源的Hadoop框架,从服务部署、可视化开发、代码管理、任务调度、集群运维等多方面,均需要大量的人力来开发与维护。基于MaxCompute,不论是人力成本,还是计算成本,还是运维成本,都已经降到了最低。

二、小打卡推荐系统架构

小打卡的整个技术架构完全基于阿里云实现。埋点日志、业务数据分别由日志服务、RDS/DRDS承担收集和存储任务,通过数据集成同步到MaxCompute,之后便可基于PAI实现机器学习任务。其物理结构如下图所示。

image.png

机器学习PAI-Studio提供了数据预处理、特征工程、机器学习、深度学习、文本分析等丰富的机器学习组件,并且计算结果直接以宽表的形式存储于MaxCompute,极大的减轻了算法开发的工作量。

我们基于PAI,实现了GBDT+LR算法,任务流如下图所示:

image.png

图中采用了丰富的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 结构如下:

image.png

四、总结

除了排序算法之外,我们还使用PAI和SQL,分别实现了item_cf和user_cf的召回算法,整个推荐系统完全打通。基于MaxCompute利用DataWorks调度系统,我们实现了推荐算法模型的每日自动更新。相比于模型不更新,我们对比了60天前的模型,新的模型效果提升10%左右。
期待阿里云提供越来越丰富的功能,例如基于MaxCompute的Spark机器学习,

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
12月前
|
算法 搜索推荐 大数据
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
1298 8
|
12月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
机器学习/深度学习 自然语言处理 算法
大数据选举预测:算票的不只是选票,还有算法
大数据选举预测:算票的不只是选票,还有算法
504 0
机器学习/深度学习 算法 自动驾驶
1667 0
|
算法 API 数据安全/隐私保护
深度解析京东图片搜索API:从图像识别到商品匹配的算法实践
京东图片搜索API基于图像识别技术,支持通过上传图片或图片URL搜索相似商品,提供智能匹配、结果筛选、分页查询等功能。适用于比价、竞品分析、推荐系统等场景。支持Python等开发语言,提供详细请求示例与文档。
1000 5
|
算法 搜索推荐 大数据
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
505 5
|
监控 算法 安全
公司电脑监控软件关键技术探析:C# 环形缓冲区算法的理论与实践
环形缓冲区(Ring Buffer)是企业信息安全管理中电脑监控系统设计的核心数据结构,适用于高并发、高速率与短时有效的多源异构数据处理场景。其通过固定大小的连续内存空间实现闭环存储,具备内存优化、操作高效、数据时效管理和并发支持等优势。文章以C#语言为例,展示了线程安全的环形缓冲区实现,并结合URL访问记录监控应用场景,分析了其在流量削峰、关键数据保护和高性能处理中的适配性。该结构在日志捕获和事件缓冲中表现出色,对提升监控系统效能具有重要价值。
424 1
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
376 17
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
1095 8
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
400 8