写点什么

使用 EasyRec 快速构建推荐模型

作者:阿里云天池
  • 2024-04-02
    浙江
  • 本文字数:2015 字

    阅读完需:约 7 分钟

随着移动 app 的普及,个性化推荐和广告成为很多 app 不可或缺的一部分。他们在改善用户体验和提升 app 的收益方面带来了巨大的提升。深度学习在搜广推领域的应用也已经非常深入,并且给各种场景的效果带来了巨大的提升。针对推荐流程的各个阶段,业界已经有很多的模型,这些模型大部分也有开源的实现,但是这些实现通常散落在 github 的各个角落,其数据处理和特征构造的方式各有差异。如果我们想要在一个新的场景里面应用这些模型,通常需要做比较多的改动:

  • 输入的改造,开源的实现的输入格式和特征构造通常和线上不一致,适配一个算法通常需要 1-2 周左右的时间,还难免因为对代码的不熟悉引入 bug,如果要尝试 5 个算法的话,就需要 5 倍的改造时间。如果算法资源有限,这时候是不是就要忍痛割爱,放弃一些可能有效果的尝试了?

  • 开源的实现很多只是在公开数据集上取得了比较好的效果,在公开数据集上的最优参数也不一定适合实际的场景,因此参数调优也需要较大的工作量;有时候效果不好,并不是因为方法不行,而是选的参数不太好。如果没有系统化的调参方法,很多算法也就是简单试一下,没有 deep explore,哪来对算法的深入理解呢? 为什么看似简单的改进,你没有能够发现呢? 为什么你也尝试了类似的方向,但是没有搞出来效果呢? 效果通常都是用算力和数不尽的尝试堆出来的;

  • 开源的实现用的是 tensorflow 1.4,而线上用的 tensorflow 2.3,好多函数的参数都变掉了(此处心里是不是想骂 google 一百遍,当初信誓旦旦说好的 api 不再变呢); 很多开源的实现由于没有在实际场景中验证过,所以其可靠性也是存疑的,可能就会少了个 dropout,少了一个 bn,效果相差甚远;

  • 费了九牛二虎之力把模型效果调好了,发现上线也会有很多问题,比如训练速度太慢、内存占用太大、推理 qps 跟不上、离线效果好在线效果跪等等。遇到这么多问题,你还有精力去做你的下一个 idea 吗?你还能斗志昂扬,坚持不懈的去探索新方向吗?

这些问题搞得我们心有余而力不足、天天加班到深夜、不知何时是个头:想要验证一个简单的 idea 都要使出九牛二虎之力。所谓天下武功,唯快不破,对于搜广推领域的算法同学来说,尤其如此:通过快速迭代才能验证更多的想法,发现更多的问题,找出最优的特征和模型结构。速度慢了的话,可能你的模型还没调好,业务目标就变了,前端的布局也改了,你的业务方可能都不相信你了,你也就没机会上线了。

说到这里,我们的诉求就比较明确了,我们就是想少写代码,甚至不写代码就能验证我们的想法。针对这些问题和诉求,我们推出一个全新的、一步到位的推荐建模框架,致力于帮助大家解决在推荐建模、特征构造、参数调优、部署等方面的问题,让大家少写代码,少干重复的没有意义的脏活累活(这些 EasyRec 都承包了),少趟一些坑少踩一些雷(这些 EasyRec 都替你趟了),让大家能够快速上线验证新的 idea,提升推荐模型的迭代效率。

优势



和其他建模框架相比,EasyRec 在以下几个方面具备显著的优势:

  • 支持多平台和多数据源训练

  • 支持的平台包括: MaxCompute(原 ODPS), DataScience(基于 Kubernete), DLC(deep learning container), Alink, 本地;

  • 支持的数据源包括: OSS, HDFS, HIVE, MaxCompute Table, Kafka, Datahub;

  • 用户通常只需要定义自己的模型,在本地测试通过后,就可以在多种分布式平台上进行训练;

  • 支持多种 Tensorflow 版本(>=1.12, <=2.4, PAI-TF),能够无缝的对接用户的环境,不需要对代码做迁移和改动;

  • 支持主流的特征工程的实现,特别是显示交叉特征,能够显著得提升效果;

  • 支持 HPO 自动调参,显著降低了用户的调参工作量,并在多个场景中提升了模型效果;

  • 实现了主流的深度模型,覆盖召回、排序、粗排、重排、多目标、多兴趣等;

  • 支持 EarlyStop, BestExport, 特征重要性,特征选择、模型蒸馏等高级功能。

架构



EasyRec 建模框架整体上是基于 Estimator 的数据并行训练方式,通过 Parameter Server 的结构支持多机多卡的训练。EasyRec 的主要模块包括输入、特征构造、深度模型、Loss 和 Metric,每个模块都可以自定义。针对用户在用 TF 进行训练可能遇到的多种问题,如 worker 退出失败、使用 num_epoch evaluator 无法退出、auc 计算不准确等,EasyRec 做了深度优化。针对 AdamOptimizer 训练速度慢,异步训练慢机,hash 冲突,大样本空间负采样等问题,EasyRec 结合 PAI TF(PAI 优化过的 tensorflow)和 AliGraph 也做了深度优化。

模型

EasyRec 内置了业界领先的深度学习模型, 覆盖了推荐全链路的需求,包括召回、粗排、排序、重排、多目标、冷启动等。



同时 EasyRec 也支持用户自定义模型。如下所示,在 EasyRec 里面实现自定义模型,只需要定义模型结构、Loss、Metric 三个部分,数据处理和特征工程是可以直接复用框架提供的能力的,因此能够显著节省用户的建模时间和成本,能够将精力 focus 在模型结构的探索上。针对常见的模型类型如 RankModel、MultiTaskModel 等,Loss 和 Metric 部分也可以直接复用父类的定义。


查看本文全部内容,欢迎访问天池技术圈官方地址:使用EasyRec快速构建推荐模型_天池技术圈-阿里云天池

用户头像

还未添加个人签名 2024-03-12 加入

还未添加个人简介

评论

发布
暂无评论
使用EasyRec快速构建推荐模型_阿里云_阿里云天池_InfoQ写作社区