- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
2 爱奇艺视频推荐领域的 ANN 实践-张吉
议题简介:
在推荐算法领域,召回-粗排-精排是成熟稳定的系统方案。而传统过滤/模式匹配的召回算法在个性化、实时、智能推荐的需求上力不从心,对快速增加的各种非数值类特性和海量数据的处理无能为力,同时在线的推理过程对性能又提出了严苛的要求。我们结合 Youtube DNN 等多种向量召回模型与重排序的需求,探索了数种向量检索的服务的技术与产品,结合这些技术 和 Tensorflow Serving,完成广告、搜索、视频推荐等业务在爱奇艺的召回基础服务。
嘉宾简介:
张吉,爱奇艺深度学习云研发工程师。
展开查看详情
1 .爱奇艺视频推荐领域的 ANN 实践 爱奇艺 张吉
2 . 01 02 03 背景介绍 工程实践 问答
3 .推荐系统
4 .推荐系统框架 1. 速度快 2. 数据量大 召回阶段 排序阶段 百万 量级 千量级 十量级 生成 所有候选集 排序 候选集 基于规则 基于模型 用户观看历史 用户上下文 用户特征
5 .工程实践 • 算法选型 • 工程部署
6 .算法选型 • 模型召回 softmax • 速度快 ReLU 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.
7 .算法选型 • 模型召回 softmax • 速度快 ReLU 视频向量 用户向量 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 .算法选型 用户向量 视频向量 视频得分 视频 ID topk
9 .算法选型 用户向量 视频向量 ANN 内积
10 .Serving 结构 用户特征 用户向量 DNN ANN ID + score
11 .Serving 结构 • 整体模型如何更新 • Serving 效率 Version 1 C DNN Version 2 • 接口与 TF Serving 一致 L I E N Version 1 T ANN Version 2
12 .方案一 用户特征 用户向量 gRPC TF Serving ANN 任意接口 DNN model Service ID+score ID+score
13 .方案一技术选型 • Tensorflow • Milvus • 文档丰富 • 封装完善 • 开箱即用
14 .方案一结构 docker TF Serving 用户侧 实时行为特征 Milvus SDK PB RPC 视频列表 Milvus (打分) Index
15 .Tensorflow Serving 改造 • 检查签名 TF Serving • 解析 proto Serving Model request management • TF runtime 计算 Tensorflow • 封装 proto Runtime Return proto RunPredict https://github.com/tensorflow/serving/blob/r1.14/tensorflow_serving/servables/tensorflow/predict_util.cc#L167
16 .Tensorflow Serving 改造 • 检查签名 TF Serving • 解析 proto Serving Model 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
17 .模型升级 Version 1 TF Serving PB RPC Version 2 C Milvus L Index TF Serving I PB RPC CONSUL E N Version 1 Milvus T Index TF Serving PB RPC Milvus Index
18 .优缺点 • 开发速度快 • 不够灵活 • 模型版本难以管理
19 .Milvus 场景&配置 • 只读场景 创建 • 数据量在百万级别 Milvus A meta.sqlite meta.sqlite-shm • 索引文件可共享 加载 Milvus B meta.sqlite-wal tables 加载 Milvus C DB
20 .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
21 .业务需求 • 召回后重排序 • 召回模型带版本 • 前置过滤
22 .方案二 TF Serving 用户特征 DNN gRPC ANN ID+score 其他逻辑 TF Runtime
23 .方案二技术选型 • Tensorflow serving • Hnswlib • 性能好 • 线程模型简单 • Head only
24 .方案二 • 使用 HNSW OP 创建计算图 TF Serving • 升级部署与纯 TF Serving 一致 Serving Model request management DNN ANN 其他逻辑 Tensorflow Runtime Return proto RunPredict
25 .优缺点 • 可支持更灵活的逻辑 • 模型版本易于管理 • ANN OP 需要开发
26 .模型升级 Tensorflow serving Version 2 Version 3 C L Tensorflow serving I CONSUL Version 2 E N Version 3 T Tensorflow serving Version 1 Version 2
27 .整体 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 Version X 3. 上传 用户侧 2. 创建 模型 实时行为特征 服务实例 索引 Milvus 索引 方案1/方案2 HNSW 视频列表 在线任务 (打分) Index 离线任务
28 .HNSW OP 性能测试 操作系统 centos7 python 版本 3.6.10 cpu intel 6248(tf-intra=8) tensorflow 版本 1.14(build with avx512) hnsw 版本 0.4.0(build with avx2) 网络延迟(10 次) rtt min/avg/max/mdev = 0.165/0.201/0.260/0.029 ms 压测工具 Locust 0.14.5
29 .HNSW OP 性能测试(纯 ANN) 数据集 索引参数 请求参数 准确率 ef=128 M=64 sift-128-euclidean Top=100 95.35% ef=128 batch=1000 concurrency wait_time qps avg min max 50% 90% 99% 99.9% 99.99% cpu% 20 (3,5) 3229 1 1 19 1 2 2 3 11 333% 40 (3,5) 6525 3 1 27 1 2 2 4 12 620%