EasyRec是一个配置化的企业级推荐算法框架(https://github.com/alibaba/EasyRec),是阿里云PAI平台自研的适用于推荐广告、搜索场景的深度学习算法库,它实现了多种业界常用的模型,包括DSSM、MIND召回模型,DeepFM、多塔、DIN排序模型,还有ESMM、DBMTL、MMoE等多目标排序模型。用户也可以基于EasyRec进行自定义算法的开发。另外,EasyRec 兼容MaxCompute、OSS、HDFS 等多种输入,支持多种类型的特征,损失函数、优化器以及评估指标,支持大规模的并行训练。使用EasyRec只需要简单的配置config文件,就可以通过命令行调用的方式,实现训练、评估、导出、推理等功能,不需要进行代码的开发,就可以帮助用户搭建推推荐/广告/搜索算法。配置文件还可以描述输入的数据字段、特征工程、embedding过程、以及模型类型和模型网络结构,可以帮助您在 PAI 平台上快速训练推荐算法模型、验证模型效果及部署。
推荐算法的流程比较复杂,而使用EasyRec又需要了解各种概念、配置文件的含义。为了降低EasyRec的使用门槛,让依赖的参数更加直观,我们在PAI-Designer中提供了一系列组件,让您能够更加容易的完成特征工程、召回和排序模型的训练评估任务。具体的组件如下:
EasyRec模型训练:该组件实现的EasyRec模型训练的功能,包含召回、单目标和多目标排序模型。文档
EasyRec模型预测:该组件实现EasyRec离线预测(predict)功能,包括排序模型推荐打分、召回模型推理user或item侧的向量。文档
向量模型拆分:该组件使用split_model_pai.py脚本,实现向量召回模型拆分的功能。文档
时间窗口MR脚本:在普通的MaxCompute MR(MapReduce)组件上增加了多日期循环执行功能,用于并行执行某段时间内天级别MR任务。例如在推荐算法定制场景中,并行执行过去30天的EasyRecFGMapper任务。文档
时间窗口SQL脚本:在普通的SQL组件基础上增加了多日期循环执行功能,用于并行执行某段时间内天级别SQL任务。例如在推荐场景中,并行执行过去7天的行为数据特征提取SQL补数据任务。文档
了解EasyRec组件的单个功能可能还不够,因为推荐任务都会比较复杂,特征工程、训练召回或排序模型通常包括多个子任务,如多天补数、训练、评估、导出模型等。为了让大家更容易理解这些任务之间的依赖关系,我们整理了典型的推荐算法任务,如特征工程、(etrec召回)协同过滤召回、排序、向量召回,提供完整可运行的预制模板,可以方便大家参考使用。每个模板都是可以运行的,还可以参考其中的配置参数,如运行天数、ps和cluster中cpu和内存的参数设置、排序模型中特征的feature_type、dimension、hash_bucket_size、learning_rate等。
注意:特征工程用到的数据集是脚本生成的,并非是真实数据集。数据只为演示整个流程,因此不必关注最终的模型评估数值。
我们新加的预制模板在PAI-Designer的“预制模板->推荐”模板中。
以下四个预制模板的具体说明文档:
- 特征工程:https://help.aliyun.com/document_detail/2330725.htm
- DSSM向量召回:https://help.aliyun.com/document_detail/2330726.htm
- 基于etrec的U2I2I召回:https://help.aliyun.com/document_detail/2330727.htm
- 排序:https://help.aliyun.com/document_detail/2330728.htm
在向量召回的模板中,包括了模型训练、模型拆分为user和item侧的模型、模型的评估、向量预测输出等。
在排序模型的模板中,我们演示了IdFeature、TagFeature的使用,以及deepfm模型和参数的配置。其中“更新EasyRec配置文件”是在前面已经统计特征的取值个数、连续值分箱的基础上,自动更新EasyRec的config文件;而模型训练是以DeepFM作为案例,可根据需要替换成业务需要的排序模型。更多的排序模型见:https://easyrec.readthedocs.io/en/latest/models/rank.html
参考文献:
1、EasyRec技术文档:https://easyrec.readthedocs.io/en/latest/intro.html