Milvus Community Conf 2020_爱奇艺:Milvus在爱奇艺视频推荐领域的应用

在推荐算法领域,召回-粗排-精排是成熟稳定的系统方案。而传统过滤/模式匹配的召回算法无法处理现代互联网中海量数据。我们参考 Youtube Dnn 召回模型,结合 Milvus 和 Tensorflow Serving,完成视频在爱奇艺的召回处理。
其中包含:

  1. 整体系统的组织架构,包括模型训练,建立向量索引,部署模型,更新模型
  2. Milvus 与 Tensorflow Serving 结合的改造方法
展开查看详情

1.Milvus 在爱奇艺视频推荐领 域的应用 张吉

2.背景 工程实践 相关业务拓展 问答

3.推荐系统框架 1. 速度快 2. 数据量大 召回阶段 排序阶段 百万 量级 千量级 十量级 生成 排序 所有候选集 候选集 基于规则 基于模型 用户观看历史 用户上下文 用户特征

4.工程实践 • 算法选型 • 工程部署

5.算法选型 • 输入 • 稠密特征 • 稀疏特征 • 输出物品的概率&ID p https://developers.google.com/machine-learning/recommendation/overview/candidate-generation

6.算法选型 • 特征丰富 • 模型效果好 • 速度慢 p https://developers.google.com/machine-learning/recommendation/overview/candidate-generation

7.算法选型 • 模型召回 • 速度快 Youtube Net Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Proceedings of the 10th ACM conference on recommender systems. 2016.

8.工程部署选型 • Tensorflow serving • Milvus • 文档丰富 • 封装完善 • RPC

9.典型的 TF serving 部署 CONSUL https://medium.com/zendesk-engineering/how-zendesk-serves-tensorflow-models-in-production-751ee22f0f4b

10.Youtube Net Serving • 整体模型如何更新 • Serving 效率 Version 1 C TF Serving L Version 2 I E N Version 1 T Milvus Version 2

11.Youtube Net Serving docker TF Serving 用户侧 Milvus SDK 实时行为特征 PB RPC 视频列表 Milvus (打分) Index

12.TF Serving 改造 • 检查签名 TF Serving Serving Model • 解析 proto request management • TF runtime 计算 Tensorflow Runtime • 封装 proto Return proto RunPredict https://github.com/tensorflow/serving/blob/r1.14/tensorflow_serving/servables/tensorflow/predict_util.cc#L167

13.TF Serving 改造 • 检查签名 TF Serving Serving Model • 解析 proto request management • TF runtime 计算 Tensorflow Runtime • 封装 proto Milvus SDK RPC Return proto RunPredict https://github.com/tensorflow/serving/blob/r1.14/tensorflow_serving/servables/tensorflow/predict_util.cc#L167

14.Milvus 场景&配置 • 只读场景 • 数据量在百万级别 创建 • 索引文件可共享 Milvus A meta.sqlite meta.sqlite-shm 加载 Milvus B meta.sqlite-wal tables 加载 Milvus C DB https://github.com/milvus-io/milvus/blob/v0.10.1/core/conf/server_config.template#L71

15.Youtube Net Serving PB emb PB Index 1. 上传 Version 1 Version 1 S3/NFS S3/NFS PB emb PB Index Version 2 Version 2 4. 下载模型/索引 PB emb docker Version X 3. 上传 用户侧 2. 创建 模型 TF Serving 实时行为特征 PB RPC 索引 Milvus 索引 Milvus 视频列表 Index Index (打分) 离线任务 在线任务

16.模型更新 Version 1 TF Serving PB RPC C Milvus L Index I CONSUL E N Version 1 T TF Serving PB RPC Milvus Index

17.模型更新 Version 1 TF Serving PB RPC C Version 2 Milvus L Index TF Serving I PB CONSUL RPC E N Version 1 Milvus T TF Serving Index PB RPC Milvus Index

18.模型更新 Version 1 TF Serving PB RPC C Version 2 Milvus L Index TF Serving I PB CONSUL RPC E N Version 1 Milvus T TF Serving Index PB RPC Milvus Index

19.模型更新 Version 1 TF Serving PB RPC C Milvus L Index I CONSUL E N Version 2 T TF Serving PB RPC Milvus Index

20.工程上遇到的问题 • Milvus 性能特性&测试 • TF serving 与 Milvus 结合

21.Milvus 性能特性&测试 操作系统 centos7 内核 3.10.0-693.21.1 机房延迟 RTT 0.8ms python 版本 3.6.8 cpu intel 6248(1-16 core) 关闭超线程,内存 220-220 内存 4GiB tuned throughput-performance milvus 版本 v0.10.0 (build with axv512) pymilvus v0.2.13 数据库 sqlite 压测工具 Locust 0.14.5 索引类型 IVFFLAT, nlist 16384 距离类型 L2 nprob 128 batch size 10 topk 100 locust wait time 10~11ms

22.Milvus 性能特性&测试 Average Min Max QPS CPU name Client/core response response response p50(ms) p90(ms) p99(ms) p999(ms) (Total) Utility(%) time(ms) time(ms) time(ms) 32_users_1_cores 2 1574.8 8 6 413 8 10 14 21 75 16_users_2_cores 1 899.2 6 4 255 6 7 9 15 60 20_users_2_cores 1.25 1133.4 5 4 251 6 7 9 15 63-87 8_users_4_cores 0.5 480.4 5 4 212 5 6 7 10 57 12_users_4_cores 0.75 722.5 4 4 252 5 6 7 11 75 16_users_4_cores 1 957.7 5 4 251 5 6 7 13 93 8_users_8_cores 0.5 491.2 4 3 250 5 5 7 14 87 12_users_8_cores 0.75 732.3 4 3 254 4 6 9 12 100 16_users_8_cores 1 875.4 6 3 414 6 9 12 17 100 8_users_16_cores 0.5 414.1 7 4 416 7 10 13 18 100

23.Milvus 性能特性&测试 • Milvus 查询线程少性能好 • 极限情况下平均延迟有所增加 • 平均一个核处理 1.25-1.5 个效果最好

24.TF serving 与 Milvus 结合 • TF serving 静态编译 GRPC,Protobuf • Milvus 静态编译 GRPC,Protobuf Tensorflow serving 1.14 GRPC(TF) 1.19.1 Protobuf(TF) 3.7.1 Milvus 0.10.1 GRPC(milvus) 1.24.1

25.相关业务扩展 • DNN 编码 + ANN 召回 • 以图搜图 • 语义搜索 • ANN 数据大时需要分片

26.问答

27.