为方便您快捷体验PAI-Rec产品,本文提供了一份公开数据集,您可以按照文档说明,按步骤体验PAI-Rec推荐算法定制的特征工程、召回、精排等关键功能的配置,生成代码并部署到DataWorks相应的业务流程中。
前提条件
在开始执行操作前,请确认您已完成以下准备工作:
已开通PAI,详情请参见开通PAI并创建默认工作空间。
已创建专有网络VPC和交换机,详情请参见搭建IPv4专有网络。
已创建Hologres实例,并创建自定义用户和数据库,详情请参见购买Hologres、用户管理和创建数据库。
已开通MaxCompute服务,并创建MaxCompute项目project_mc,详情请参见开通MaxCompute和创建MaxCompute项目。
创建OSS存储空间(Bucket),详情请参见创建存储空间。
开通DataWorks服务,并完成以下操作:
已创建DataWorks工作空间,操作详情请参见创建工作空间。
已购买独享资源组,并绑定已创建的DataWorks工作空间,详情请参见新增和使用独享调度资源组。
配置DataWorks数据源:
创建并绑定OSS数据源,详情请参见创建并管理数据源。
创建并绑定MaxCompute数据源,详情请参见创建MaxCompute数据源。
创建并绑定Hologres数据源,详情请参见创建Hologres数据源。
创建FeatureStore项目和特征实体,并使用DataWorks独享资源组安装FeatureStore Python SDK。详情请参见二、创建并注册FeatureStore和安装FeatureStore Python SDK。
1.创建PAI-Rec实例并初始化服务
登录全链路推荐系统开发平台首页,单击立即购买。
在PAI-Rec实例购买页面,配置以下关键参数,然后单击立即购买。
参数
说明
地域和可用区
您的云服务部署的地域。
服务类型
本方案选择高级版。
说明相较于标准版,高级版增加了数据诊断和推荐方案定制功能。
登录PAI-Rec管理控制台,在顶部菜单栏左上角处,选择地域。
在左侧导航栏选择实例列表,单击实例名称,进入实例详情页面。
单击操作指引区域的初始化,跳转至系统配置>全链路服务页面,单击编辑,按照如下资源配置完成相应参数配置,然后单击完成。
在左侧导航栏选择系统配置>权限管理,按照界面提示,在访问服务页签检查各项云产品授权情况,确保对应云产品访问状态正常。
2. 克隆公开数据集
1.同步数据表
本方案使用的数据为固定时间窗的数据,不支持任务例行调度执行。如果有执行需求,您需要部署特定的Python代码以生成所需数据,详情请参见通过代码产出数据页签。
同步固定时间窗的数据
PAI-Rec在公开访问的项目pai_online_project中提前准备了推荐算法中常用的三张表:
用户表:pai_online_project.rec_sln_demo_user_table
物品表:pai_online_project.rec_sln_demo_item_table
行为表:pai_online_project.rec_sln_demo_behavior_table
本方案后续的操作均基于上述三张表,其数据均是随机生成的模拟数据,没有真实业务含义,因此训练得到的AUC等指标较低。您需要在DataWorks中执行SQL命令,从pai_online_project项目中将上述表数据同步到您的DataWorks项目(例如DataWorks_a)中。具体操作步骤如下:
登录DataWorks控制台,在顶部菜单栏左上角处,选择地域。
在左侧导航栏单击数据建模与开发>数据开发。
选择已创建的DataWorks工作空间后,单击进入数据开发。
鼠标悬停至新建,选择新建节点>MaxCompute>ODPS SQL,按照如下资源配置完成相应参数配置,然后单击确认。
在新建节点区域运行如下代码,将用户表、物品表、行为表从pai_online_project项目同步到您已创建的MaxCompute项目(例如project_mc)中,并同步2023年1月1日到2023年2月16日之间的数据。
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1( user_id BIGINT COMMENT '用户唯一ID', gender STRING COMMENT '性别', age BIGINT COMMENT '年龄', city STRING COMMENT '城市', item_cnt BIGINT COMMENT '创作内容数', follow_cnt BIGINT COMMENT '关注数', follower_cnt BIGINT COMMENT '粉丝数', register_time BIGINT COMMENT '注册时间', tags STRING COMMENT '用户标签' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_user_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1( item_id BIGINT COMMENT '内容ID', duration DOUBLE COMMENT '视频时长', title STRING COMMENT '标题', category STRING COMMENT '一级标签', author BIGINT COMMENT '作者', click_count BIGINT COMMENT '累计点击数', praise_count BIGINT COMMENT '累计点赞数', pub_time BIGINT COMMENT '发布时间' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_item_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1( request_id STRING COMMENT '埋点ID/请求ID', user_id STRING COMMENT '用户唯一ID', exp_id STRING COMMENT '实验ID', page STRING COMMENT '页面', net_type STRING COMMENT '网络型号', event_time BIGINT COMMENT '行为时间', item_id STRING COMMENT '内容ID', event STRING COMMENT '行为类型', playtime DOUBLE COMMENT '播放时长/阅读时长' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_behavior_table WHERE ds > "20221231" and ds < "20230217";
通过代码产出数据
使用固定时间窗的数据,不支持任务例行调度执行。如果有执行需求,您需要部署特定的Python代码以生成所需数据。具体操作步骤如下:
在DataWorks控制台创建PyODPS 3节点,详情请参见创建并管理MaxCompute节点。
单击并下载create_data.py,将文件内容粘贴到PyODPS 3节点中。
单击右侧的调度配置,并配置以下参数,然后单击右上角的保存和提交。
配置调度参数:
配置调度依赖。
单击运维中心,并选择
。单击目标任务操作列下的
。在补数据配置面板中,设置业务日期,并单击提交并跳转。
较好的补数据时间范围为60天,建议您将业务日期设置为
任务定时调度日期-60
,以确保数据的完整性。
2.配置依赖节点
为了确保后续代码生成与部署的顺利进行,请预先在您的DataWorks项目中添加三个SQL代码节点。请将这些节点的调度依赖配置为工作空间的根节点,完成所有设置后再发布节点。具体操作步骤如下:
鼠标悬停至新建,选择新建节点>通用>虚拟节点,按照如下资源配置分别创建3个虚拟节点,然后单击确认。
选中节点,分别将代码节点内容设置为
select 1;
,然后单击右侧的调度配置,完成以下配置:在时间属性区域,设置重跑属性为运行成功或失败后节课重跑。
在调度依赖>依赖的上游节点区域,输入DataWorks工作空间名称,选择带有_root后缀的节点,单击添加。
3个虚拟节点均需配置。
单击虚拟节点前的,提交该节点。
3.注册数据
为了后续在推荐方案定制功能中配置特征工程、召回、排序算法,您需要先注册同步到DataWorks项目中的三张表,具体操作步骤如下:
登录PAI-Rec管理控制台,在顶部菜单栏左上角处选择地域。
在左侧导航栏选择实例列表,单击实例名称,进入实例详情页面。
在左侧导航栏选择推荐方案定制>数据注册,在MaxCompute表页签单击新增数据表,按照如下资源配置分别新增1个用户表、1个物品表和1个行为表,然后单击开始导入。
参数
说明
方案默认示例
MaxCompute项目
选择已创建的MaxCompute项目。
project_mc
MaxCompute表
选择已同步到DataWorks工作空间的数据表。
用户表:rec_sln_demo_user_table_v1
物品表:rec_sln_demo_item_table_v1
行为表:rec_sln_demo_behavior_table_v1
数据表名称
自定义填写。
用户表
物品表
行为表
4.创建推荐场景
在配置推荐任务之前需要先创建一个推荐场景。推荐场景的基本概念、流量编码含义参考基本概念。
在左侧导航栏选择推荐场景,单击创建场景,按照如下资源配置创建1个推荐场景,然后单击确定。
5.创建并配置算法方案
如果您需要完整配置一个真实场景,建议配置的召回和精排如下。
全局热门召回:日志数据中,全面热门数据的统计排名取Top k。
全局热门兜底召回:使用Redis作为兜底,防止推荐接口下发数据为空。
分组热门召回:按照城市、性别区间等指标来分类召回,这对提高热门物品的准确性有帮助。
etrec u2i召回:基于etrec协同过滤算法。
swing u2i召回:基于Swing算法。
冷启动召回:dropoutnet算法的冷启动召回。
精排:单目标可以选择MultiTower排序;多目标可选择DBMTL排序。
一般当召回比较全面之后再开启向量召回或者PDN召回等算法。向量召回需要配合向量召回引擎,其中Hologres支持向量召回。
本文旨在体验配置与部署流程,因此在召回配置环节只配置了全局热门召回及RECommender(eTREC)的u2i召回策略。在排序配置上,选择了精细化排名以优化体验。具体操作步骤如下:
在左侧导航栏选择推荐方案定制>方案配置,选择已创建的场景,并单击创建推荐方案,按照如下资源配置创建1个方案,然后单击保存并进入算法方案配置。
未说明的参数保持默认即可,详情请参见数据表配置。
在数据表配置节点,单击目标数据表右侧的添加,按照如下资源配置分别设置行为日志表、用户表和物品表,并设置相应的分区、事件、特征、时间戳等字段,然后单击下一步。
未说明的参数保持默认即可,详情请参见数据表配置。
在特征配置节点,按照如下资源配置完成相应参数配置,单击生成特征,设置特征版本,然后单击下一步。
单击生成特征后,会在用户和物品侧衍生出多种统计特征,本方案不对衍生特征进行二次编辑,保持默认即可。您可以根据自身业务需求,对衍生特征进行编辑,详情请参见特征配置。
在召回配置节点,单击目标分类右侧的添加,完成相应参数配置,单击确认,然后单击下一步。
以下内容包含了多种召回配置方法,为了带您快速体验部署流程,您可以只配置全局热门召回和etrec u2i召回。其他向量召回、协同度量召回等仅供参考。
在排序配置节点,单击精排右侧的添加,按照如下资源配置完成相应参数配置,单击确认,然后单击下一步。
在生成脚本节点,单击生成部署脚本。
重要脚本生成成功后,系统将生成一个如上图所示的OSS地址,该OSS路径存储了待部署的所有文件。您可以将该地址保存到本地,方便后续使用手动方式部署脚本。
脚本生成完成后,在弹窗中单击确定,跳转至推荐方案定制>部署记录页面。
如果生成失败,请查看运行日志,分析并解决具体报错问题,然后重新生成脚本。
6.部署推荐方案
脚本生成完成后,您可以通过以下两种方式,将该脚本部署至DataWorks。
方式一:通过推荐全链路深度定制开发平台部署
单击目标方案右侧的前往部署。
在部署预览页面的文件diff区域,选择要部署的文件。本方案为首次部署,单击全选,然后单击部署到DataWorks。
页面自动返回到部署记录页面,显示脚本部署运行中。
等待一段时间后,单击刷新列表,查看部署状态。
如果部署失败,请单击操作列下的查看日志,分析并解决具体报错问题,然后重新生成脚本并部署。
当部署状态变为成功,代表脚本已成功部署。您可以前往该方案配置的DataWorks工作空间下的数据开发页面,查看部署好的代码,详情请参见数据开发:开发者。
查看任务补数据流程。
在
页面,单击已部署成功的推荐方案操作列下的详情。在部署预览页面,单击查看任务补数据流程,了解补数据流程和相关说明,确保数据的完整性。
方式二:通过迁移助手部署
脚本生成成功后,您也可以前往DataWorks控制台,通过迁移助手功能手动部署脚本,其中关键参数说明如下,其他操作详情,请参见创建和查看DataWorks导入任务。