算法|深度解析开源推荐算法框架 EasyRec 的核心概念和优势( 三 )


在线特征工程对计算效率要求比较高 , 而计算量也比离线要大:离线计算的样本通常是1个user配对m个曝光的item(召回模型的话 , 会增加一些随机采样的负样本) 而线上计算的样本是1个user配对n个item(nm) 。 在线计算如果采用naive的计算方式 , 将一次请求展开成n个样本分别进行计算 , 效率通常是跟不上的 。 不难发现其中user feature的部分做了比较多的重复计算 , 对user feature做计算效率的优化 , 能够显著提升线上的qps 。我们结合淘系内部使用的Feature Generation模块做了深度优化 , 包括内存分配、字符串解析、重复计算消除、多线程并行计算等 , 在保证一致性的前提下 , 显著提高了计算的效率 。

增量训练和实时训练 增量训练通常能够带来效果的显著提升 , 原因在于增量训练见过了更多的样本 , 对embeding部分训练的更加充分 。 EasyRec支持从上一天的checkpoint restore , 然后在新的一天的数据上继续训练 。 为了快速适应新闻、节假日、大促等场景的样本分布发生快速变化的场景 , 我们提供了对实时训练的支持 。 EasyRec通过Blink来构造实时样本和特征 , 并调用Feature Generation对特征进行加工 , 然后通过Kafka、DataHub读取实时的样本流进行训练 。 实时训练的稳定性比较重要 , 我们在训练过程中对正负样本比、特征的分布、模型的auc等做实时的监控 , 当样本和特征的分布变化超过阈值时 , 报警并停止更新模型 。 保存checkpoint时 , EasyRec会同步记录当前训练的offsets(多个worker一起训练时 , 会有多个offset) , 当系统发生故障重启时 , 会从保存的offsets恢复训练 。

效果验证 EasyRec在多个用户场景(20+)中得到了验证 , 场景中包括商品推荐、信息流广告、社交媒体、直播、视频推荐等 。 以下是部分客户在他们场景中使用EasyRec取得的提升:
某APP广告推送: AUC提升1个点 , 线上ctr提升4% , 资源消耗降低一半; 某大型直播APP: 基于EasyRec MultiTower模型AUC提升2%; 某大型社交媒体: 基于EasyRec MultiTower模型AUC提升6% , 线上效果提升50%; 某大型电商平台:基于Easyrec DSSM模型 , 线上UV价值提升11% UVCTR提升4%; 某短视频APP:基于EasyRec DBMTL模型 , 线上时长提升30% , +多模态特征进一步提升10% 。最后 , EasyRec已经通过github开源(https://github.com/alibaba/EasyRec) , 在此欢迎各位同路人共建 , 包括:丰富各个场景的特征构造 , 引入更多在实际场景中验证过的模型 , 提升模型离线在线推理的性能 , 等等 。 在这个日益内卷的行业(可以想象tensorflow为什么越做越差 , 跟内卷应该关系非常大 , api的修改比较随意、存在过度设计扩展困难的问题、bug层出不穷 , 天下苦TF久矣) , 我们希望能够通过这样一个开源的工作 , 形成大家的合力 , 照亮我们共同的路 。 在这里 , 我们也像前辈xgboost致敬 , 希望这个工作能够像xgboost一样发扬光大 , 影响深远 。
作者:程孟力 - 机器学习PAI团队
【算法|深度解析开源推荐算法框架 EasyRec 的核心概念和优势】本文为阿里云原创内容 , 未经允许不得转载 。