开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:阿里云机器学习平台 PAI -推荐解决方案】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/855/detail/14125
阿里云机器学习平台 PAI -推荐解决方案
内容介绍:
一、 PAI 灵活组合的 AI 产品体系介绍
二、 使用 NVDIV 多个系列加速训练
三、 PAI 集成的推荐算法介绍
四、 推荐解决方案架构
一、PAI 灵活组合的 AI 产品体系介绍
客户会基于 PAI 去构建自己相关的业务,同时在 PAI 推荐解决方案中也大量运用了英伟达 CPU 来作为训练的资源。
第一个部分会展示 PAI 整个的产品体系,构建一个 AI 平台从下到上需要哪一个模块。第二个部分重点是 PAI 团队在进行 NVDIA 的 GPU 的过程中心得和训练加速比。第三个部分是在推荐业务中常用的算法。第四个环节通过如何解决方案的方法把算法组合起来来构建推荐业务的流程。
PAI 是阿里云上的一个产品,既服务阿里巴巴内部客户,作为一个内部的 AI 终台去支持淘宝、天猫、优酷的 AI 相关的需求。对外也有客户比如微博、天荣基金,也会提供推荐一些解决方案。对于 PAI 整个的定位是一个 AI 的产品,起到了一个承上启下的作用。需要对接阿里系的计算引擎包括基础硬件,在上层也为客户提供一个建模服务包括模型 Inference 的服务。
此图是对于整个 PAI 的产品组合的介绍,在最下一层 Infrastructure 一层是基础的计算引擎层,其中有许多的硬件比如 CPU 、 GPU 、 FPGA 、NPU。 其中 GPU 是由 NVDIV 提供的M系列、P系列和V系列的卡行。比如有 M40、P版、V版。目前推荐也应用了大量的深度学习算法,在底层会用到 GPU 的资源。在上一层是计算引擎层,目前提供的是 MaxCompute 2.0的引擎,也有 EMR 引擎,同时也有实时计算引擎。另外的是得力于云原生的概念,对接阿里云的 ACK 服务。
在 ML Frameworks 一层,含有很多的机器学习框架比如 PAI-TensorFlow、 PAI-Pytorch、 Caffe 和 PAI 一边的Alink 自己琢磨一套算法的框架。
再往上是把下面的服务组成一个服务的算法,有一个 Deep Learning Container 的服务,很方便灵活的进行计算引擎,对 PAI 所有原子化的算法。
在上一层就与业务更相关了,从左到右的看这张图,整个 AI 的 service 大概分为数据准备、标注、训练,训练后成部署模型的大致的流程。数据的标注工具无论是视频、文本、图像的数据都可以从智能标注上进行标注,另外还可以进行数据上的管理,当有了训练数据之后,为用户提供了两种不同的建模方式,一种是可视化建模,可视化建模的目标用户是算法的应用者,自己不需要开发的一个模型或者算法,更多的是应用现成的算法。如此,可以在 Studio 中可以进行简单的拖拽构建这样的排序的模型。另一种对应客户不满足于现成的算法,自身有很高的技术能力,则可以使用 Data Science Workshop 交互式建模的工具去完成交互式建模,在里面可以进行写代码以及项目的开发。在模型构建方面提供了两种截然不同的工具,这两款工具生成的模型都可以部署到 EAS 上成为一个请求,去支持上层 Al SaaS 服务的业务。在目前生活中更多的支持是推荐的业务。另外在最右端提供了生态支持上的工具,比如 Open API 、算法市场,第一可以提供算法和模型到平台上,第二有许多的工具,可以和开源的信息进行对接比如 MNN 、 SQL Flow 。于此对 PAI 整个产品的大图进行介绍,在推荐的任务中更多的是运用在线预测服务、可视化建模和交互式建模部分, Studio 利用现成的推荐领域的算法去构建、训练、生成排序的模型,再通过 EAS 进行部署。
二、使用 NVDIV 多个系列加速训练
AI 平台实践—训练加速基于 NVDIV 去做的一些工作, PAI 团队有大量人员是在做一些模型优化、深度学习框架优化的工作。同时也深度定制了一款开源的、内核的不同学习框架。在 PAI-TF 和开源的参差结构框架和其他框架对比下的 GPU 的加速比。在 VGG16 、DIN 模型下随着卡数增加的线性加速比。推荐相关的 DIN 模型是一个非常出名的推荐排序模型,包括是基于文本的特征向量的时候,会用到 Bert Large 模型,也是一个比较大的模型,同时看到 PAI-TF 的线性加速比。基于 NVDIV 的 GPU 硬件上的工作。
三、PAI 集成的推荐算法介绍
推荐业务算法核心流程,假设有一个新闻推荐平台,有一个 ID 为 A 的用户,首先在平台上方有许多的内容比如 ItemID:1的文章,这些文章的数据量特别大,推荐的第一件事就是从海量的候选集中去召回 A 所感兴趣的新闻。此时进入到了召回模块,在召回模块中找到 A 可能喜欢的新闻候选集,例如从100000个候选集中缩小到500个。但完成召回之后不确切的说 A 第一喜欢和第二喜欢。进入排序模块去获取 A 最喜欢的是ItemID:33 ,第二喜欢的是 ItemID:22 的顺序。经过排序模块知道最先给 A 推荐文章和第二个推荐文章。推荐的核心流程是包括召回和排序的两个部分。重点的是通过算法,把排序和召回的两个模块的效率提升,也就是推荐方案要解决的工作。
1、推荐 Plus -召回算法
目前 PAI 的推荐算法召回模块推荐了三个算法,分别是 Etrec(i2i) 、 GeaphSage(u2i) 、 ALS(u2i) 。 i2i 和 u2i 的区别为 i2i 已经有了 Item 推荐相似的 Item 。 u2i 是基于两个客户的 user 的爱好相似,可以把推给 A 用户的商品推给 B 。目前 PAI 的解决方案提供三个算法各自有各自的特点。 Etrec 为经典的系统过滤算法,在任何推荐结成算法的系统中都会大量运用。 GraphSage 算法是一个比较新的算法,基于一个图关系的推荐。 PAI 团队开发了一款 GNN 框架,是图神经网。 GraphSage 算法基于 GNN 的框架进行构建。 GraphSage 目前在客户上得到了很好的效果。 ALS 算法基于矩阵分解领域的召回算法,把行为数据变成 user 向量和 item 向量。召回时只需要计算每个 user 所对应 item 向量的距离,找出距离最相似的向量,得到 user 所感兴趣的商品。通过以上三个算法给用户提供了不同的选择。召回与排序的最大区别是召回可以与多个方式召回,若每个召回算法返回有500个结果,则三个算法有1500个结果后进行去重,得到召回的结果。召回讲究的是丰富性,召回算法在客户上得到了验证,例如在某短视频客户,使用了召回算法之后在应用上得到了提升, CTR 在大部分在做推荐系统上所感兴趣的所提升3%,用户在平台的年限增加,因为推荐的内容有趣所导致用户在平台上更喜欢使用,停留时长增加11%。挖掘了长尾视频,好的推荐系统不能只召回热门的视频对于长尾的、小众的视频也找到适应的人群。随着长尾的视频的挖掘,会提升整个平台生产者积极性,视频的上传量也得到提升。整个召回算法带来了正向的业务效果。
2、推荐 Plus -排序算法
算法是决定最终给召回用户的顺序,排序算法在 PAI 的解决方案实际是为客户提供更多选择。推荐算法有 DeepFM 、MultiTower 、BST 、 MMoE 、DIN。每个算法有各自的特点。 DeepFM 是业内应用的十分广泛的深度学习算法。 MultiTower 来源于 Youtube 的论文, PAI 自行实现的版本。 BST 基于用户历史行为序列,先点击 A ,再点击 B,再点击 C 这种的序列进行建模。 MMoE 是多目标的学习方法也是谷歌提出来的,在推荐系统中既要…又要…中可以实现,比如既要实现多目标学习,又要停留时长的指标的这样的算法,实现多个目标的融合,达到所有目标的共同成长。 DIN 是阿里推出的一款算法,在排序领域也较为出名,集成到整个的推荐领域的方案里。针对于广告推送、社交媒体、直播 APP ,
应用了以上算法拿到了不同的效果。在算法算法集的总称为 EasyRec ,是整个模型的模型库的总称。使用不同种的算法模型在不同领域的业务都可以拿到收益。例如广告推送的 AUC 高原有的一个点,消耗也会减少。大型社交媒体上7天线上数据能达到5亿左右, AUC 也会有6个点的提升。大型直播 APP 上的用户目前日益增长,用排序算法 AUC 3天平均2个点的提升。
四、推荐解决方案架构
1、基于离线数据推荐解决方案
PAI 针对于排序、召回的领域的算法,算法完整的融合成推荐解决方案,算法在解决方案的作用不是最重要的,难点是整个的数据链,每个模块的算法串起是非常关键的。离线的解决方案从下到上看,用户最原始的数据也是平台最原始的数据,平台上有三份,一部分表示每个 user 的数据,用户的消费情况,年龄,地域等。物料数据是每个 item 数据,商品被推荐的对象的视频,视频的长度、内容、题材。新闻的题材、字数、插图都称为物料。行为数据是用户对物品的点击、收藏、关注、评论。行为与推荐的目标有关,推荐系统希望增加点击率,就需要多收集用户的行为,用户和新闻是相匹配的。往上分为召回和排序两个模块,召回模块用 ALS 、FM 、 Graph 、其它召回的算法,会生成 User Embedding 和 Item Embedding 两个向量,分别表示每个用户和每个商品的属性。每个人的属性可以用数学的向量表示。排序模块通过 TensorFlow 、 YoutubeNet 进入排序算法,再进入 AutoML-Tuning 进行模型优化,深度学习算法的参数多,让开发人员手动调节,是困难的,同时工作量很大。一般会用自动化调参的功能,生成一个排序模型。下面系统模型,上面是业务模型,业务层用户的推荐结果过程:一个 id 为 A 的人,第一件进入到 Redis 去查向量。查出 User Embedding ,并到 FaissServer 去完成相似度计算,找出距离最近的 TopN item 达到N个召回结果。Redis 和 FassServer 是一个开源的方案,再阿里云的平台上也可以使用 Or Hologres 解决问题。拿到召回之后就可以到 Model 部署到 PAI EAS 上得到 RestfulAPI 从而拿到排序的结果。最终投递给用户。
离线线路说明使用的 Model 是由离线去生成的,包括线上的 User item 的向量的计算都是由离线生成的,例如一天以前的数据去生成的。现在的推荐系统强调时效性,时效性也在推荐领域上关注的重点,增强数据的时效性要求数据实时的产生模型。与离线的方案不同的是排序模型,包括召回在数据上的更新。排序算法模块会实时的训练出排序模型,存到模型库中,同时有评估的模块,实时的检查与线上模型的比对效果,当实时的模型比线上的模型好,会做一个实时的替换。实时推荐和离线推荐最大的区别是实时推荐更好的利用数据的时效性例如一个大库的制作针对于20岁女性,平台会大量涌入女性的用户,整个平台行为包括用户特点会有变化,用离线方案没法满足大的跳动,但有十分钟更新属性的能力可以实时的对平台行为进行假定,就为实时推荐的好处之一。
2、实际操作演示
使用是可从阿里云官网的产品上找到人工智能,机器学习 PAI ,购买开通后进入到控制台,控制台里的可视化建模。在可视化建模构建项目就可以进入。其中有不同的推荐, FM 算法推荐、 ALS 实现音乐推荐等,进行不同特征的推荐。点击从模板创建,会自动生成画布。画布包含所有数据和拼接好的实验,此图是如何进行协同过滤去完成商品的召回。
原始数据提供四个字段, user id 每个 id 代表一个用户,item id 每个 id 代表一个物品, active_type 代表行为,0表示用户点击过商品,1表示购买过,2表示收藏过。Active_date 表示行为发生的时间。目标是做购买推荐,把所有购买的行为找出,表为 active_type 为1的找出,得到一个效果。使用协同过滤算法, PAI 中所有算法是通过组件形式提供,需要逻辑回归只需将其托到画布上,并把数据连接,并设置字段的参数。协同过滤的需要的用户 id 和 item id ,配置协同过滤算法的参数,直观的看是 TopN 。协同过滤的算法直接找出 item I 的算法,也就是用户购买 A 同时购买的商品B 或 C 的结果概率。 I2I 结果像购物行原则,例如购买手机同时会购买手机壳,手机卡。手机壳和手机卡和手机同时购买的概率高,计算结果中 item id 为目标商品,simllarity 的字段有 kb 对,并以 “,” 分隔,表示和目标商品的配对程度,例如24277:1,冒号前表示 item id ,冒号后是表示购买后同时购买的概率。结果是1000商品和24277商品同时购买的概率是1,1000商品和18812商品同时购买的概率是0.5。表明客户买1000商品则可以推荐24277、18353商品,因为两款商品同时购买的几率是接近于1。推荐完之后可以推荐概率小的商品,此时就完成了 I2I 的召回,用户购买了商品就可以把其余5个商品作为候选集,返回购买。
其他的召回方法也如同类似的做法,可以通过平台做排序算法,深度学习算法,在该平台中找到。排序算法之后可以部署成 API ,把生成的模型进行上传,每一条表示的是一个请求,通过请求去调用模型的结果。