推荐系统架构
2022-02-19 本文已影响0人
Nefelibatas
今天带来的是推荐系统架构的总览,围绕AB测试、微服务与模型更新三大部分展开,后续会不断展开详细内容,欢迎关注!
image-20220219134305616.png
AB test
image-20220219134321865.png
AB分流
划分依据: uid,MAC,cookie,IMEI
划分方式: 基础组3%,试验组3%,对照组3%
划分标准
-
流量均等
-
分布一致
-
彼此正交
image-20220219134428414.png
结果对比
image-20220219134611647.png
| 模型 | 展现量n | 点击量 k | 点击率 | 方差S^2 |
|---|---|---|---|---|
| A | 99458 | 10045 | 0.101 | 0.091 |
| B | 100134 | 9282 | 0.093 | 0.084 |
| C | 99705 | 10268 | 0.103 | 0.092 |
微服务
image-20220219134724877.png
RPC请求过程
-
序列化协议:json, protobuf, thrift
-
服务注册:zookeeper, Consul, etcd
-
负载均衡:加权轮询法,最小并发度法
-
通信:TCP, epoll
同步调用
image-20220219134820809.png
模型更新
日志收集
image-20220219134938544.png
模型增量更新
模型增量更新的好处:样本量可以一直累加,享受样本量增加带来的持续收益
保存老模型,等新样本到来后再加载老模型,继续训练。模型文件里一定要保存优化器的中间状态
pytorch在保存模型时需要指定'optimizer': optimizer.state_dict();
tensorflow默认生成的checkpoint文件就可以满足增量更新的需求
分布式训练
image-20220219135102526.png
image-20220219135117086.png
参数服务器
参数的分布存储
image-20220219135139903.png
读取参数
image-20220219135210310.png
更新参数
image-20220219135239148.png
监控系统
基础组件
-
实时监控。influxDB、Prometheus等时序数据库(TSDB)
-
小时级监控。hive、clickhouse等sql数据库