美团搜索:推荐推理引擎实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团搜索/推荐推理引擎实践 美团平台技术部 钱玉磊
2. 个人简介 l 2020年加入美团,带领机器学习引擎组,负责大规模 机器学习引擎的技术指导工作,完成了首页推荐/搜索 模型的全面GPU化。 l 加入美团之前 ü 2018年-2020年,负责百度凤巢大规模机器学习引擎 GPU版本AIBOX的设计与开发以及相关算法工程工作。 ü 2017年-2018年,获百度最高奖。从事百度凤巢模型 训练引擎、分布式计算引擎、PaddlePaddle分布式参 Papers: Weijie Zhao, Deping Xie, Ronglai Jia, Yulei Qian, Ruiquan Ding, Mingming Sun, Ping Li: Distributed Hierarchical GPU Parameter Server for Massive Scale Deep Learning Ads Systems. MLSys 2020 Weijie Zhao, Jingyuan Zhang, Deping Xie, Yulei Qian, Ronglai Jia, Ping Li: AIBox: CTR Prediction Model Training on a Single Node. CIKM 2019: 319-328 Patents: 2021,一种Parameter Server分布式训练架构下PS资源配额的自动弹性扩缩容技术 2020,一种基于任务类型识别的智能化深度学习任务混布技术 2019,一种模型训练方法、装置、设备及存储介质 数服务器PSLIB的开发。 ü 2016年-2017年,从事流式计算部分的开发,开发百 度流式计算引擎Dstream3。 ü 2015年,加入百度凤巢模型工程组,从事大规模机器 学习推理引擎以及在线平台化的工作。
3. 目录 01 02 03 大规模机器学习的背景 实时学习介绍 推理架构介绍
4. 搜推模型特征规模可达千亿级 l VC维理论 ü 描述模型的学习能力:VC维越大模型越复杂,学 习能力越强 ü 机器学习能力 = 数据 + 特征 + 模型 l 数据 ü 海量数据:美团的亿级用户、千万级POI l 特征 ü 大规模离散特征 > 小规模泛化特征 上下文 Query Query片段 天气、地理位置等 l 模型 ü 复杂模型 > DNN > LR POIID ItemID DealID Session 历史统计 年龄,性别 用户 商品
5. 搜推模型复杂度越来越高 l ü ü ü 复杂模型结构引入搜广推领域 DNN:简单的MLP层,提高模型泛化能力 Attention:注意力机制,结合用户的浏览行为进行建模 MMoE:多业务、多目标优化,结合应用场景进行建模 l 模型复杂度衡量:5年30倍 ü 神经网络层参数规模:神经网络层的参数个数 ü 神经网络层的浮点数运算量:浮点数乘法运算量 模型 参数规模 单batch浮点 数运算量 (bs=200) 2019,DCN ~100W 7.72亿 2020,SCENE ~200W 18.02亿 2021,MTL ~300W 22.25亿 2022,Attention ~1500W 119.39亿 2023, Long Sequence ~3000W ~2000亿 LSTM Wide Wide S c Attention Deep LR模型:强调特征的记忆性 DNN模型:Wide and Deep结构,泛化性 领域定制模型:先验复杂结构
6. 搜推推理系统架构的设计 谷歌:生产ML系统的构成 [1] 搜推机器学习系统:远超机器学习本身 l ü ü ü 可用性原则 分布式 高并发 低延迟 l ü ü ü 易用性原则 组件化 平台化 智能化 [1] D. Sculley, Gary Holt, etc. Hidden Technical Debt in Machine Learning Systems l ü ü ü 容错性原则 面向异常 面向测试 面向监控
7. 目录 01 02 03 大规模机器学习的背景 实时学习介绍 推理架构介绍
8. 为什么需要流式 ü 图中横轴代表从推荐模型训练结束到 模型测试的时间间隔天数,纵轴是损 失函数Normalized Entropy的相对 值。 ü 从图中可以看出,无论是树模型还是 LR模型,模型延迟越久,loss越大, 对应的线上的预估准度就越差. Facebook, 2014, Practical Lessons from Predicting Clicks on Ads at Facebook
9. 美团场景下的流式训练回路 ü 数据实时性:实时用户行为,曝光、浏览、点击、支付、负反馈等。 ü 特征实时性:实时特征处理,拼接时间窗问题。 ü 模型实时性:用户行为的即时反馈,模型增量训练、增量更新。
10. 流式训练框架 l Online Learning对数据流的要求 ü 不重不丢:重复的数据会使模型有偏,丢失的 数据会使模型缺失重要信息 ü 数据有序性:数据乱序会导致样本穿越的现象 l LogJoin框架 ü 双流拼接框架:通过组合方式支持多流拼接 ü 基于Event Time的Window机制拼接方式 ü 基于Low Watermark解决流式常见的样本乱 序、延迟等问题
11. 流式训练的一些问题 l Low Watermark机制 ü 定义了流式数据的时钟,不可逆性 ü Smooth Low Watermark,异常数据时间跳变 l Checkpoint解决数据不重不丢的问题 ü 外存解决大数据量性能问题 ü 在引擎中流转logkey,特征数据外存 l 样本纠偏问题 ü 样本重要性采样 ü FN(False Negative)矫正:预测时 ü PU Loss(Positive-unlabeled loss):训练时
12. 时效性与一致性的权衡 l 一致性场景 ü 请求拆包导致的不一致 ü Dense模型和sparse模型拆分导致 的不一致 ü 多分库、多副本导致的不一致 l 一致性的衡量 l 时效性挑战 ü 一致程度 = 1 – 不一致时间 / (不一致时间 + 一致时间) ≈ ü Dense model vs Sparse model 1 – 更新耗时 / 更新周期 ü 更新周期 = 模型时效性 ü CAP理论:没有最好的架构,只有更适合的架构 ü 最终一致性 vs 强一致性 ü 极致时效性之后的回滚、灾备等容 错方案
13. 目录 01 02 03 大规模机器学习的背景 实时学习介绍 推理架构介绍
14. 分布式架构:模型和流量规模可伸缩 稀疏特征处理过程 ID 超高维稀疏特征:数十亿~数千亿,onehot编码 Hash(gender=female)=1049900758977499928 Hash(gender=male)=1089198815824712206 Embedding机制:需要高效的hash查找 Embedding Pooling MLP Embedding(1049900758977499928)=(-0.036, -0.018, 0.092, …) Embedding(1089198815824712206)=(-0.04, -0.099, -0.021, …) 降维:Pooling时体现特征域属性 Embedding(gender)=Pooling( Embedding(1049900758977499928), Embedding(1089198815824712206)) 神经网络层:大量矩阵乘法运算 MLP & Attention & LSTM &… l 分布式sharding ü 模型分片存储,支持超大规模模型,scale up能力 ü 数据并行计算,支持更多请求,scale out能力 l ü ü ü ü 模型压缩 Pre-Train的低频特征过滤:Counting Bloom Filter In-Train的低频特征过滤:特征统计量 Post-Train的低频特征过滤:L1正则、特征统计量 Inference:半精度计算,Embedding半精度完全无损 分布式参数服务器架构
15. 参数的放置策略 l 模型数据的统一管理 l PS分布式分片的均衡,避免数据倾斜 ü 模型结构 ü NN网络矩阵按行切分,解决请求包不均衡的问题 ü 模型参数 ü 特征按照Hash方式均衡存储
16. CPU推理架构 l CPU Predictor l 模型通路建设 ü 轻量级Predictor:支持特征变换、模型计算, ü 模型版本管理:快速回滚 无状态设计 ü 多种场景的模型支持: ü 远端模型:RPC访问PS获取模型参数,适用于大 于1GB的模型场景 ü 本地模型:本地直接加载模型,省去RPC开销, 适用于小于1GB的模型场景 ü 模型持久化:服务迁移、回滚、扩缩 容 ü 增量模型合并:提高追模型的效率
17. GPU的必要性:算力需求随着数据和算法的发展而增强 CPU摩尔定律降速 l AI = 数据 + 算法 + 算力 ü 数据:规模膨胀,且不可逆 ü 算法:算法发展精细化,趋于复杂 ü 算力:阿姆达尔定律(Amdahl’s Law),分布式带来的边际效应降低 GPU对摩尔定律的延续 l 算力的基础是硬件的发展 ü CPU:摩尔定律放缓 ü GPU:延续摩尔定律 ü 网卡:12GB/s ü NVLink:150GB/s
18. GPU推理架构 l 设计思路 ü 从硬件到软件:硬件配置决定了软件架构 ü 从CPU到GPU:数据流程以GPU为主,CPU为辅 l 关键因素 ü Device Embedding Table作为Cache:Cache命中率AVG 94.3%,TP9999 83.7% ü 冷热数据具有时域性:Cache换血率约20% ü 流水线框架:多阶段流水线,提高服务吞吐 ü TensorFlow计算图优化:切割特征子图和模型子图,分别优化
19. GPU推理架构 l 基于GPU体系的推理架构 ü 流水线架构:充分利用不同硬件,CPU、GPU,让不同阶段的耗时overlapping起来 ü 动态batching:基于队列情况,聚合相邻请求,充分利用GPU的并发效果,提高吞吐 ü 多级存储:平衡存储容量和访问延迟 ü 多计算引擎:易用性、性能之间的权衡
20. cuFea:典型的稀疏处理过程 l 稀疏特征处理的特点 l 优化的思路 ü 字符串处理多,非数值计算场景 ü 阶段一,特征计算:构建基于GPU架构的抽取框架,提供<样本,特征>粒度的并发能力 ü 访存密集操作 ü 阶段二,特征查找:基于GPU的K-V查找,提高访存效率 ü 阶段三,特征拼接:三大类算子融合拼接,提高计算效率
21. cuFea:以GPU为主体的特征计算框架 l 设计思路 l 关键因素 ü 图化特征抽取框架:基于图化做算子编排 ü 样本 * 特征维度:样本 200 ~ 600条,特征 150 ~ 200个,并发 ü 必要性:batchsize=200时,CPU特征耗时11.76ms, 而允许的耗时不超过5ms 度足够 ü 签名过程GPU化:2W次签名操作,CPU 2.28ms vs GPU ü 可行性:从算子的类型进行分析 0.03ms 算子分类 占比 平均输出特征个数 特点 数值、字符串转 换、签名 70% 0~1个特征 可归约为纯计 算 Session类特征 21% 平均输出几十个特 征 较复杂,单 kernel内要完 成字典、排序 等操作 字符串切割以及 其他 9% 输出特征长度未定 可归约为纯计 算
22. cuFea:特征查找优化 l 子图融合:识别子图结构,减少算子数40%,高QPS时2-3ms收益 l 多表融合:融合不同EmbeddingTable,减少查询算子数
23. cuFea:特征拼接优化 l 算子融合:通过人工融合算子,提高算子并发,耗时收益5ms+ l 结构转换 ü 改写用户代码 ü 改写执行层代码 用户喜欢写的代码 机器喜欢的代码 l Sum Pooling ü 常见的特征降维操作, 算子数可达数千个 l Mask Pooling ü 序列特征使用的操作, 算子数可达数百个 l User Feature Broadcast ü 搜广推场景很常见 ü Item类特征共享User 特征,一次预估候选 item几百上千
24. 编译优化:性能和灵活性的折衷 l ü ü ü TVM 开源,算子丰富度高 二次开发容易 多硬件支持 l TensorRT ü 性能更高,特定硬件优化 l 动态shape ü 静态IR转动态IR:便于内存聚合操作 ü 搜广推场景:Tensor[query, item, feature, embedding],item维度的 动态shape 静态IR 动态IR
25. Q&A
26. 欢迎加入我们 一起探索更多有意思的技术 邮箱:qianyulei02@meituan.com 更多技术干货 欢迎关注“美团技术团队”

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 18:55
浙ICP备14020137号-1 $Map of visitor$