EasyRec 使用介绍|学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 EasyRec 使用介绍。

开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:EasyRec 使用介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/855/detail/14100


EasyRec 使用介绍

 

内容介绍:

一、EasyRec 简介

二、DataWorks 上EasyRec 训练评估导出的流程

三、EasyRec config 文件的配置工作

 

一、EasyRec 简介

EasyRec 是阿里云easy 学习平台自研的适用于推荐广告、搜索场景的深度学习算法库,它实现了多种业界常用的推广搜模型,包括DSM、mand 召回模型、deptfm、多塔、din等排序模型,还有ESMM、DBSTL 等多目标模型,用户也可以基于EasyRec 进行自定义算法的开发。另外,EasyRec 兼容ODPS、OSS、HDFS 等多种输入,支持多种类型的特征,损失函数、优化器以及评估指标,支持大规模的并行训练。使用EasyRec,只需要简单的配置config 文件,就可以通过命令行调用的方式,实现训练、评估、导出、推理等功能,不需要进行代码的开发,就可以帮助用户快速的搭建推广搜算法。

 

二、DataWorks 上EasyRec 训练评估导出的流程

(1)训练任务

输入-name easy_rec_ext 对PAI下面的EasyRec ext 算法进行调用,设置dcmd=train,并且输入dtrain_tables 配置一张训练表,输入deral_tables 配置一张评估表。然后,输入dcluster 申请训练任务所需要的集群资源信息。

此处申请了两个ps 节点,八个worker 节点,并为每个节点申请了十个cpu 以及40G 的内存。deval_method=separate 表示八个节点中有一个节点用来做训练,一个节点用来做评估,其他七个节点用来做训练。

如果想八个节点都用来做训练,那可以设置deval-method=arn,并且提供一个config 文件以及模型路径。darn=act:ram:xxx:role/aliyunodpspaidefaultrole’,dbuckets=’oss://xiaoyue-bj.oss-cn-beijing-internal.aliyuncs.aliyuncs.com/,dosshost=oss-cn-beijing-internal.aliyuncs.com/ 表示配置PAI 访问oss 所需要的权限信息。

(2)评估任务

Dconfig=oss://xiaoyue-bi/video_demo/multitowei.config 与dcluster表示评估任务与导出任务同样需要一个config 文件以及 cluster 信息,注意此处 cluster 评估任务与导出任务都只需要配置一个worker 节点,并不需要配置ps 节点。Tables 表示待评估的表以及模型路径和 checkpoint 路径。如果 checkpoint 路径不提供,则默认为模型路径下最新的checkpoint 文件。模型评估的结果会打印在模型下面的 eval result 中。在 eval result 中,1200度对应的aoc 为0.612。

(3)导出任务

Dcluster={worker:{count=1,”“cpu:1000,memory:40000}}表示导出命令只需要配置一个worker 节点,并且提供模型路径和checkpoint 路径,额外还需要提供一个 exportdir,dexport_dir=oss://xiaoyue-bj/video_demo/checkpoint/easyrec_tb_multitower_demo/export/best 表示模型 fiwmodel 的输出路径。

(4)离线推理

此处用户需要输入 pai_online_project/tables/easyrec_demo_taobao_test_data 来提供一张带推理的表,以及输入tables/easyrec_demo_taobao_test_data_pred_res 推理结果表和模型上面导出的 fiwModel 路径,dexcluded_cols=label,dreserved_cols=all_columns 指定一下模型打印所需要的结果列。dcluster='{worker:{“count”:,“cpu”:1000表示用户可以用五个节点同时做离线推理。最后,推理结果打印在 dateworks里,props 列即为模型的输出值。


三、EasyRec config 文件的配置工作

(1)train_config

此处输入 adam_optimizer 使用的为adam 为优化器,innitial_learning_rate:1000表示它以0.001为初始学习率,然后 decay_factor:0.5表示程序每1000步会进行0.5倍的衰减。log_step_count_steps:100表示每100步会打印一下模型 的 log 信息,save_checkpoints_steps:100表示每100步会保存模型的checkpoint 文件。sync_replicas=true 表示这里是同步训练任务,如果想使用异步训练的方式,可以将此处置为false。num_steps=5000表示模型训练5000步就停止,此处推荐用 num_steps 来控制,而不是 applc 来控制。

(2)eval_config

Eval_config{表示此处使用 aoc 为评估指标,也可以使用 mse、required、top k 等其他指标。

(3)data_config

因为模型是在 ODPS 上读取 max compute 表来进行训练,所以 input_type 是 ODPS input_v2,如果用户想要在本地训练,那么 inputv2 应为 csfin-input。然后,用户需要对每一个需要用到的类型及需要用到的字段设置一个input fields,这里面需要指定每一个字段的名字以及字段的类型。如果不指定字段类型,默认为 string 类型。

(4)feature_config

EasyRec 主要支持了 IdFeature、RawFeature、TagFeature、SequenceFeature 以及 ComboFeature 五种特征类型,最常用的是 IdFeature、RawFeature、TagFeature,尤其是 IdFeature,IdFeature 适合于 item_id、category-id 以及一些星座、年龄段的离散值特征。此处用 hash_bucket_size、num_buckets 或者v ocab_list 来控制特征的映射。

第二种是 RawFeature,RawFeature 适用于连续值特征。例如,用户历史期间的点击次数、用户历史七天的购买次数等等这种连续值特征。但是并不建议将连续直接未尽模型,推荐的做法是先使用分箱组件得到分箱信息,然后将分箱信息导入到 config 中直接进行训练。这里面模型的输入是连续值,但是内部会进行离散化,这样处理方式就与ID特征是一致的。

接下来是 TagFeature,TagFeature 适用于像商品标签这类取值为多值的 ID 特征。因此,它的配置与 IdFeature 大同小异。这里支持对多个 lookup 的特征进行聚合,比如均值聚合、sum 聚合以及带权重的聚合。

(5)model_config

这里面指定了一个多塔模型,将特征分为 user 、item、combo 三个 feature_groups,并为每个 Feature_groups 配置一个 tower 网络,然后每个group 就会进入到各自的 tower 网络中,得到一个高维的 featureinbrandding,最后将三个 featureinbrandding 聚合起来拼接后,进入到 final_dnn 网络中,得到最后模型的输出。同时,为了缓解模型过拟合,我们也配置了L2正则、embedding 正则这些手段,EasyRec 同样也支持dropout 的手段。如果用户想更换模型,通常情况下只需要修 改 model config,此处替换为 deephidmodel,然后切换成 deephidmodel 的配置即可,通常不需要修改其他模块的配置。

(6)export_config

这里指定了 best 导出,设置 aoc 为衡量是否 best 标准,这里也可以使用 final 导出,这样就会在训练的最后给予最新的 checkpoint,导出一份 PB 文件。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
存储 缓存 算法
缓冲区管理器 | 学习笔记
快速学习缓冲区管理器
192 0
缓冲区管理器 | 学习笔记
|
NoSQL MongoDB 开发者
故障测试_1|学习笔记
快速学习故障测试_1
97 0
故障测试_1|学习笔记
|
云安全 安全 网络安全
总结 | 学习笔记
快速学习总结
79 0
|
开发者 索引
Aggregations|学习笔记
快速学习 Aggregations。
249 0
Aggregations|学习笔记
|
开发者 Python
练习|学习笔记
快速学习练习
76 0
|
C++ 开发者 Python
练习2|学习笔记
快速学习练习2
66 0
练习2|学习笔记
|
架构师 开发者
高压线|学习笔记
快速学习高压线。
66 0
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
BinaryTree|学习笔记
|
XML 缓存 安全
回顾| 学习笔记
简介: 快速学习回顾
101 0
|
前端开发 数据可视化 开发者
总结| 学习笔记
快速学习总结