推荐模型上线部署
1. 预存推荐结果&Embedding结果
预先在离线环境下生成每个用户的推荐结果,然后将结果预存到Redis等线上数据库中。
进行线上服务时,直接从Redis中取推荐结果。
image-20220106113226312.png
改进:存储用户和物品的Embedding
2.自研模型线上服务平台
c++/ java/go等服务器作为线上服务器,上线dnn模型过程就是从参数服务器或内存数据库
中得到模型参数,然后用c++/ java/go在服务器中实现模型推断逻辑。
面对复杂的与业务紧密联系的特殊模型或算法,深度学习框架无法支持时通常需要线上单独开发
优点:定制需求
缺点:时间成本高
3.预训练Embedding&轻量级线上模型
通过离线训练复杂模型,生成Embedding存入内存数据库,线上使用LR等简单模型就行推断
例如:双塔模型
优点:借用TensorFlow等框架的灵活性和功能多样性,线上推断延时小
缺点:无法实现端到端,线上线下不一致
4.利用PMML转换并部署模型
PMML:预测模型标记语言,一种通用的XML表示的不同模型结构参数的标记语言
作为中间媒介连接离线训练平台和线上预测平台
![image-20220106113226312.png](https://upload-images.jianshu.io/upload_images/27579716-9e76c952b86aced9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
JPMML序列化和解析PMML模型文件
5.TensorFlow Serving
同PMML,TensorFlow定义了自己的序列化格式(protobuf)
1、模型训练
2、模型导出
3、模型部署提供接口
4、客户端使用grpc调用接口
Saved_model模块
pb或pbtxt格式的模型结构文件
variables文件夹保存模型参数
image-20220106120051863.png
Tensorflow_model_server部署模型
编译tensorflow_model_server
对指定路径下的Saved_model模型部署到指定端口
image-20220106120203517.png
客户端程序使用grpc调用接口
image-20220106120234247.png
自研线上服务平台与TensorFlow serving结合
模型训练后导出saved_model
线上服务平台(C++)调用TensorFlow的C++库完成saved_model载入过程,作为一个排序模块
与其他模型或策略组合后进行部署供线上服务
image-20220106121709949.png
image-20220106121805822.png
推荐评估指标计算
一个好的推荐系统应同时考虑三方利益,三方共赢
推荐系统参与者
推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣却不那么容易发现的物品
推荐系统还要帮助商家将那些埋没的长尾的好商品推荐给可能会对它们感兴趣的用户
推荐系统还要尽可能追求平台的商业价值最大
image-20220106122048045.png
推荐效果评测
用户调查
离线实验指标和实际商业指标存在差距,比如:预估准确率和用户满意度
最佳办法是直接将算法上线,使用真实用户看商业指标,但是上线测试具有较高风险。所以上线之前一般需要做一次用户调查的测试(真实用户内测)
很多离线无法评测的与用户主观感受有关的指标都可以通过用户调查获得,比如推荐结果是否令用户惊喜,那我们最好直接询问用户。
缺点:
调查成本高,合适的测试用户难找
优点:
用户主观感受的指标
常用评估指标
用户满意度: 最重要指标,问卷涉及不同方面的用户感受。
常见统计指标:反馈按钮、点击率、停留时长、转化率。
image-20220106122636898.png
加大了预测不准的用户物品评分的惩罚
image-20220106124247421.png
image-20220106124317049.png
AUC越接近1,排序越稳定,高相关性的物品排序越前列
GAUC:DIN网络中的指标,相比AUC更接近线上
PCOC:预估的准确性,预估点击率 / 真实点击率
覆盖率:描述推荐系统对长尾物品的发掘能力,推荐热门的覆盖率很低,能够推荐出来的物品占总物品集合的比例
内容提供商比较关心的指标:
覆盖率:
熵:
基尼指数:
多样性:为了满足用户广泛兴趣,推荐列表需要能够覆盖用户不同的兴趣领域。
多样性描述了推荐列表中物品两两之间的不相似性,两个物品相似性s(i,j)度量函数有多种(多样性和相似性是对应的)
整体多样性:所有用户推荐列表多样性的平均值
多样性程度怎么确认呢?
新颖性:给用户推荐他们之前没听说的物品
最简单办法,过滤之前看过的电影,购买的商品
度量:平均流行度(较粗略)
惊喜度:推荐结果和用户历史兴趣不相似,但却让用户觉得满意
探索与利用的矛盾,可以尝试推新广告
同时兼顾满意度和新颖度
信任度:用户对推荐结果的认可程度,只能问卷调查方式
提高信任度:培训用户,让用户了解推荐机制(推荐解释)
好友推荐并进行推荐解释(口口相传)
image-20220106124807494.png
离线评估方法
离线与在线评估方法主要指标为模型预估准确性
模型预估准确性常用方法
image-20220106125133027.png
在线评估方法
A/B实验框架
image-20220106125842678.png
原则:正交(域与域)和互斥(层与层)
优点:公平获得不同算法实际在线时的性能指标
缺点:周期长,必须长期实验才能得到可靠结果
launch layer:所有流量,可多个发布层,每一层都要经过,独立参数,初始化
Domain: 流量的划分(互斥),包括多个layer
layer:包括多个实验,实验参数的划分;还可以包括domain( type=“domain”)
experiment: 实验
实验的随机性策略:
uid + lay_name + hash_seed: 保证每个用户实验路径一致性
随机进入一个分桶
命中Domain通过condition来匹配
通过每一层layer,通过bucket_flow 和 condition来命中实验
不是每一层layer的实验都会被命中
一文搞懂AB Testing的分层分流 | 人人都是产品经理 (woshipm.com)
总结与回顾
image-20220106130346498.png
|