分享人: 敬海 解决方案架构师
傲海 阿里云机器学习PAI产品经理
视频地址:https://yqh.aliyun.com/live/detail/21784
正文:
最佳实践目前已覆盖23种常用场景,目前有170余篇最佳实践,这其中涉及100款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。本篇实践将从3个部分为大家详细介绍PAI平台搭建企业级个性化推荐系统最佳实践,希望可以让大家对其有更深入的了解,并可以将其应用到项目中,达到降本提效的目的。
本文主要内容分为以下三个方面:
l 最佳实践原理讲解
l PAI平台核心产品讲解
l 最佳实践系统搭建
一、 最佳实践原理讲解
1)Demo讲解
下面通过一个Demo来展示本最佳实践搭建完成后的效果。通过图中链接可以打开Demo展示页面,打开页面后可以会如图所示。这个推荐系统本质上是一个信息流推荐系统。这里要解决的问题是给不同的用户推荐不同的文章,实现千人千面的效果,类似于我们经常用到的今日头条、一点资讯等APP。它的工作原理大致是这样的:在推荐系统里面有很多用户和很多文章,每个用户有一个User ID,比如这个Demo系统里有两个用户,用户A和用户B。每篇文章都有一个Item ID,比如这里有几万篇的文章。推荐系统要解决的问题是根据用户的浏览记录等特征数据,给用户推荐当前可能感兴趣的文章。首先,用户登录APP之后会浏览文章,产生的浏览记录会被系统收集到后台,通过召回和排序两个步骤的计算,给用户生成推荐列表。当用户再访问这个APP的时候,就从推荐列表中拉取对应的文章推荐给用户,用户浏览后又会产生新的浏览记录,从而不断重复这个过程。通常这个周期是以天为单位,比如我们这个Demo就是在每天0点开拾,根据用户昨天的浏览记录作为输入,经过模型训练和模型推理的计算,生成当天的推荐列表,这实际是个离线的训练过程。具体演示如下:
步骤 1 打开浏览器,通过上图链接访问 Demo 系统。
步骤 2 打开后,单击用户 A 下面的生成浏览记录,系统会随机生成用户 A 的浏览记录,并将数据写到 MaxCompute 中。
步骤 3 这时候,进入 Dataworks 的数据开发页面,单击运维中心。
步骤 4 这里再次以补数据方式运行,程序会把当前数据补充到昨天中,合并计算出新的召回列表。
步骤 5 运行后,等待运行完成,预计需要 30 分钟左右。
步骤 6 返回页面,单击生成智能推荐按钮,右侧会显示实际推荐的内容。
步骤 7 对用户 B 执行相同的操作,结果如下图所示。
这里可以看出,根据不同的用户的浏览记录,推荐的内容是不同的。说明:实际生产中,会周期执行训练任务,比如根据当天收集到的用户浏览记录,在凌晨开始训练,在早八点之前训练完成,用户再访问的时候,直接从生成的结果中读取。
2)场景描述
最佳实践的场景描述如下:
l 本最佳实践讲解了如何基于阿里云产品快速搭建一个企业级的个性化推荐系统这里以搭建一个文章推荐系统为例。
l 其中用到了核心产品是阿里云推出的人工智能平台PAI,其提供了一站式的机器学习解决方案。
l 本最佳实践利用PAI平台结合阿里云RDS for MySql版,对象存储OSS和云数据库Redis版等产品构建一个高效的离线训练+在线推理的推荐业务流程。
适用的用户包括以下几个:
l 互联网行业客户,MAU在80万到1500万。
l 业务为信息流、广告推荐等经典推荐场景
l 数据已经使用了阿里云MaxCompute或者准备使用。
l 具有1到5名算法背景的工程人员。
l 原有服务基于开源算法自建体系,但是受限现有人员和成本无法进一步提升。
3)系统架构图
接下来介绍系统架构图,其中包括几个产品:
l 机器学习PAI是阿里云机器学习PAI平台用于机器学习、开发和测试。
l MaxCompute是阿里云大数据计算平台。
l Dataworks是数据仓库管理工具,用于开发管理MaxCompute的数据。
l 云数据库RDS MySql版是阿里云云上关系型数据库用于存储业务系统数据。
l 对象存储OSS是阿里云对象存储系统用于存储排序模型文件。
l 云数据库Redis版是云上Redis数据库用于存储模型特征数据表格存储。
l 表格存储TableStore是云上nosql数据库用于存储召回列表。
架构及组件的作用大致是这样。
4)核心产品-PAI
这里用到的核心产品就是PAI平台,下面来看下PAI平台的构成(如下图)。这里我们主要用到了三个组件:PI-EAS模型在线服务,PAI-autolearning、PAI-studio。
最前面是客户的应用,比如浏览文章的APP,PI-EAS模型在线服务将召回和排序封装成两个restful的API,提供一键部署、版本控制、蓝绿部署、弹性伸缩等功能。
再往后用到了PAI-autolearning自动学习框架、零门槛使用、迁移学习框架,这里面可以通过简单的页面配置来实现这个学习框架。
PAI-studio用来做可视化建模,提供200多种算法模型、算法组件。通过web页面拖拽的方式构建实验,它支持百亿特征样本,这些算法是核心。
再往后就是用到了机器学习框架和计算引擎,这里用的是MaxCompute的计算引擎。
5)业务流程
下面介绍个性化推荐的业务流程。这个信息流推荐系统当中,每个用户有一个userID,每篇文章有一个itemID,通过召回和排序两个模块的计算给用户生成推荐文章列表。推荐系统要解决的问题就是从这10万篇文章当中,筛选用户A最喜欢的十篇文章。
召回可以看作是初步筛选,比如有10万篇文章,通过协同过滤算法的计算,筛选出500篇文章,这些是不分优先级的。召回可以设置多路,比如两路,每路召回500篇,总共1000篇。
然后再通过排序模块,排序相当于精排,对于这500篇文章进行优先级的计算。比如这里通过排序算法计算后,用户第一喜欢33这篇文章,第二喜欢22这篇文章。
在简单的推荐系统中,可以只有召回模块,比如直接召回10篇文章,然后推荐给用户,开文的Demo就是这样。
在实际的推荐系统中,可能有多重排序算法,然后将所有结果汇总后再设置一定的策略,然后再推给用户,这样效果会更好。
6)推荐业务架构图
下面详细看下推荐系统的方案架构。如果将推荐系统看成一个系统,它的输入是三张不断变化的表。
左侧的User、 Item、Behavior表。它的输出是每个用户的文章推荐列表。这个表可以通过两个API来实现,以上三张表分别存储了用户、文章表、浏览记录,存储在RDSMySQL版的数据库里。
在实际系统中,这些数据一般经过ETL的处理,然后导入Dateworks这里弹幕系统。在Dateworks主要进行数据的预处理、特征工程模块儿、周期性调动配置等。
后面进入到PAI的模块,主要有两个模块,排序和召回。首先PAI-studio提供了排序算法和召回算法。先看排序算法,这里会生成排序的模型,然后提交给PAI-EAS。通过PAI-EAS封装成Restful API供前端调用,以后应用再调用的时候直接调用这个Restful API更加方便。
回到召回算法,经过召回计算后生成两张表,一张是item表,一张是user表,存储在tablestore中,包含了召回向量和特征向量。下一步将tablestore中数据和PAI-autolearning打通,经过召回数据的顾虑和召回策略的设置,最终给到PAI-EAS服务,同样封装成restful ap,作为召回服务的API,这样即形成了整个业务流程。
7)方案优势
最后看下阿里云推荐方案的优势,主要包括三点:
l 阿里云原生产品组合丰富,生态完善
资源丰富,产品组合多样,云服务器+对象存储+数据库弹性易用
l 成熟的机器学习平台PAI
包括业内主流的推荐算法、推荐服务,采用多路召回,成熟易用。
一站式的机器学习体验,包含机器学习全流程支持。
支持主流的深度学习框架,支持Tensorflow、Caffe、Mxnet
l 大规模计算存储MaxCompute+Dateworks数据治理
MaxCompute支持多种计算类型,强数据安全低成本。
Dateworks提供一站式数据开发与治理平台,自带阿里数据治理最佳实践。
二、核心产品讲解
1)召回算法
召回是整个推荐流程中第一次筛选候选集的环节,需要通过召回算法锁定排序候选集。召回算法分为i2i和u2i两种。i2i指的是基于已经购买过的item,提供相似的item。u2i指的是基于用户基于与用户相似的用户的购买行为,为用户进行推荐。
首先我们看Etrec,这个算法是一个经典的协同过滤算法。
另外GraphSage算法,这个算法是基于PAI最新开源的企业级图神经网络框架GNN开发的。图神经网络算法也是目前科研领域比较前沿的算法。
另外我们还提供了ALS算法。这是一种矩阵分解算法,ALS会基于用户的行为数据产生user embedding和item embedding。利用这两个embedding向量就可以实现基本的向量召回。举个例子介绍PAI的召回算法的作用:某段视频客户基于PAI的照顾算法,提升了视频的CTR点击的3%,用户的整体的停留市场也提升了11%。另外,也挖掘更多的长尾视频,保证视频的多样性,从而也提升了升视频生产者的积极性。
2)排序算法
下面再给大家介绍一下PAI现在提供的排序算法。排序算法在PAI平台是一套名为EasyRec的排序算法库。其中包含业内比较流行的深度学习排序算法DeepFM以及DIN。
另外,也有基于Youtube论文,PAI团队自行实现的MultiTower算法。
除此之外,我们也提供了基于用户历史行为数据序列进行建模的BST算法。用户可以基于这个算法去用他的用户的历史行为序列,做一个排序模型的建模。
MMOE算法是个多目标算法,因为在推荐业务中通常存在多目标的场景,比如既需要停留时长提升,也需要CTR提升,MMOE算法能很好的满足多目标的需求。
基于以上的排序算法,PAI团队在诸多业务场景下进行了验证,比如说帮某大型APP推送场景的客户的AUC场景提升了1个点;另外也帮助某社交媒体提升了AUC6个点。第三个例子是我们帮助某直播APP提升了它整体的点击率的CTR2个点。
三、最佳实践系统搭建
下面简单演示如何搭建基础环境,包括创建 RDS,Redis,OSS 等基础组件。这里采用 CADT 来拉起整个基础环境,使用 CADT 模板创建基础环境。
步骤 1 登录 CADT 控制台。(https://bpstudio.console.aliyun.com)
步骤 2 依次打开新建->官方模板库新建,找到如下模板,点击基于模板新建。
步骤 3 创建后,进入如下页面
这里根据模板中的设置,依次修改各个产品的参数。
VPC 配置参考如下:
RDS 配置:
RDS 到 ECS 的连接线,需要重新设置密码。
Tablestore 配置:
OSS 配置:
Redis 实例配置:
ECS 实例配置:
另外注意:
OSS 的地址要是全局唯一的,ots 的实例名称不能以 ots 开头,并且实例名称要全局唯一。
步骤 4 设置好参数后,点击保存,填写应用名称。
步骤 5 打开应用,部署应用
步骤 6 资源验证
步骤 7 计算价格
步骤 8 部署资源,点击后,大概需要 20 分钟创建资源。
步骤 9 部署资源结束后,如下图。
关于完整的搭建演示过程,大家可以用过https://bp.aliyun.com/detail/140
这个链接来访问本篇最佳实践文档内容,里面包含最佳实践场景和完整的搭建过程。