超大规模深度学习在美团的应用 余建平

QCon大会

2019/05/14 发布于 技术 分类

QCon  QCon2019 

文字内容
1. 超大规模深度学习在美团的应用 余建平 美团点评用户平台研究员
2. 自我介绍
3. 自我介绍 2011年硕士毕业于南京大学计算机科学与技术系。毕业后曾在百度凤巢从事机器学习 工程相关的工作,加入美团后,负责超大规模机器学习系统,从无到有搭建起支持千亿 级别规模的深度学习系统,与推荐、搜索、广告业务深度合作,在算法上提供从召回到 排序的全系统优化方案,在工程上提供离线、近线、在线的全流程解决方案。
4. 目录 • 美团超大规模模型场景简介 • 超大规模机器学习MLX  MLX平台目标  MLX平台架构 • 模型场景应用  召回模型  排序模型
5. 目录 • 美团超大规模模型场景简介 • 超大规模机器学习MLX  MLX平台目标  MLX平台架构 • 模型场景应用  召回模型  排序模型
6. 美团超大规模模型应用场景 美团推荐 美团搜索 美团广告
7. 美团应用场景简介 • 场景特点 • 模型特点 亿级的用户,千万级的O2O商品 百亿级别的训练数据 海量的用户行为,完整的交易闭环 千亿级别的模型特征 LBS相关的推荐 秒级实时的模型反馈
8. 目录 • 美团超大规模模型场景简介 • 超大规模机器学习MLX  MLX平台目标  MLX平台架构 • 模型场景应用  召回模型  排序模型
9. 超大规模模型的有效性 • VC维理论  描述模型的学习能力:VC维越大模型越复杂,学习能力越强  机器学习能力 = 数据 + 特征 + 模型 • 数据  海量数据: 美团的亿级用户、千万级POI • 特征  大规模离散特征 > 小规模泛化特征 • 模型  DNN > 树模型 > LR
10. 美团超大规模模型应用场景 • 可扩展的机器学习架构  基于Parameter Server架构  数据并行 —— 支持超大规模训练集  模型并行 —— 支持超大规模模型 • 业界千亿级以上的机器学习平台  开源: PaddlePaddle、XDL,etc.  内部: Abacus、XPS, etc.
11. 关于Online Learning • Online Learning的价值  用户的近期行为,更能表现意图和偏好  增强新item的模型感知能力 • 更快数据反馈、更少资源消耗  分钟级的数据反馈  增量训练、避免batch重训带来的资源消耗
12. MLX的模型能力 • 支持千亿级特征、千亿级样本 • 支持计算图模式,模型结构灵活多样  支持推荐、搜索、广告场景常用的深度学习模型  FTRL、FM、FFM、WDL、DCN、DeepFM、MTL等
13. MLX的模型能力 • Optimizer  FTRL、AdaGrad、AdaDelta、ADAM、AmsGrad、etc • Loss Function  LogLoss、SquareLoss、Cross Entropy、etc • 评估指标  AUC、Loss、MAE、RMSE  支持外部eval工具,计算MAP、NDCG
14. MLX模型能力 • 提供离线、近线、在线全流程解决方案,各阶段提供扩展方案,降低算法迭代成本; • 支持Online Learning,提供从近线到在线的模型数据通路; • 提供从召回到排序全流程的模型解决方案,为业务提供最佳实践; • 提供系统的平台化工具,为用户提供易用的界面操作;
15. MLX平台架构
16. MLX平台架构
17. 模型训练框架 • 基于Worker + PS架构搭建 • Worker  模型计算引擎(Engine)  计算图框架(Graph) • 模型计算引擎Engine  模型结构处理  与PS通信交换模型参数  计算图的计算 • 计算图框架Graph  计算逻辑抽象op,通过op组合形成模型结构  提供正向(forward)、反向(backward)、Loss的操作扩展
18. 模型训练框架 • 模型可变计算路径 • 应用场景——离线预计算  运行阶段  模型召回,ANN检索  计算图裁剪  粗排模型,降低线上计算量
19. Parameter Server • 分布式Sharding  模型分片存储,支持超大规模模型  数据并行计算,加速Optimizer计算 • 低频特征过滤  Counting Bloom Filter  概率方式 • 模型数据通路  Base + Delta方式  增量提供ACK机制,确保模型正确性
20. PS的参数放置策略 • 模型数据的统一管理 • Ps分布式分片的均衡,避免分片大小不一致  模型结构  NN网络矩阵按行切分,解决请求包不均衡问题  模型参数  特征按照Hash方式分布式存储
21. PS的多模型训练 • 模型并行调超参  grid search  random search • 提高内存使用效率  model group内共享特征key的存储
22. PS的长尾效应 • 超大规模模型 -> 高扇出的分布式PS • 长尾效应:单个分片的抖动(网络、CPU)对请求影响变大  单分片4个9的可用性  16分片整体可用性:99.99% ^ 16 = 99.84%  64分片整体可用性:99.99% ^ 64 = 99.36%  128分片整体可用性:99.99% ^ 128 = 98.72% • Backup Request  Jeff Dean在解决BigTable高扇出时提出的方案
23. Backup Request Predictor PS Req reply 1 reply 2 … reply N req 1 req 2 … req N Backup Request 副本1 副本2 PS Shard 1 副本1 超过t Request Cancel 副本2 PS Shard 2 … 副本1 副本2 PS Shard N
24. 流式模型的通路 • 持久化存储  本地disk存储,持久化对齐kafka的数据 • PS快速failover  Compaction机制,降低load数据量
25. 流式拼接框架 • Online Learning对数据流的要求  不重不丢:重复的数据会使模型有偏,数据的缺失 会使模型丢失重要信息  数据有序性:数据乱序会导致样本穿越的现象 • Log Join框架  双流拼接框架,通过组合方式支持多流拼接  基于Event Time的Window机制拼接方式  基于Low Watermark解决流乱序、流延迟等流式常 见问题
26. 流式拼接 • Low Watermark机制  定义了流式数据的时钟,不可逆性  Smooth low watermark:异常数据时间跳变 • Checkpoint解决不重不丢问题  外存解决大数据量性能问题  在引擎中流转log key,特征数据在外存
27. 在线预估服务 • 分业务场景支持  轻量级predictor:仅支持模型的计算,特征由业务传入,无状态设计  自定义predictor: 提供业务抽象,支持业务自定义逻辑,插件化实现 • 逻辑阶段抽象,业务根据自身需求选择性实现  数据获取: 根据业务的自身逻辑获取特征原始数据  特征抽取: 将特征数据进行转换,转换成模型所需的格式,比如离散化  模型计算: 传入转换后的特征数据,调用模型计算引擎
28. 特征抽取框架 • 特征编码方式  通过明文hash的方式编码  适用于特征的动态增长  不需要预分配,提高处理效率 • 框架与实现分离  提供op形式的特征抽取类  逻辑一致性:在线、近线、离线
29. 目录 • 美团超大规模模型场景简介 • 超大规模机器学习MLX  MLX平台目标  MLX平台架构 • 模型场景应用  召回模型  排序模型
30. 美团推荐场景的应用 • 漏斗模型 • 召回模型 • 排序模型
31. 推荐的漏斗模型 漏斗模型 策略漏斗模型 千万 候选集 召回 数千 粗排 数百 精排 数十 展位
32. 模型召回解决方案 • 模型的设计 • 样本&特征的设计 • 模型的通路
33. 召回模型设计 • 基于双塔的模型召回架构  基于用户和item的DNN结构  产出用户和item两侧向量 • 基于ANN的向量相似度检索  Item侧离线计算,形成ANN词表  用户侧向量实时计算,通过ANN找出相 似item向量
34. 样本 & 特征设计 • 特征设计 • LBS的负例采样  用户侧:能设计完整的特征,个性化,实时特征  与位置相关的negative sampling 无效信息多  Item侧:预计算带来的副作用,不能使用实时特征 全体集合 同地域 仅曝光 点击(+) 样本分布 分布偏差大
35. 召回模型通路 • 在线、近线、离线全流程解决方案
36. 排序模型解决方案 • 粗排模型 • 精排模型
37. 粗排模型 • 粗排阶段的特点  候选集大,通常在千到万级别  线上的响应时间要求高,通常在几到十几ms • 简单模型  计算耗时短:线性模型LR、树模型  模型表达能力不足,效果一般 • 复杂模型  DNN模型解决耗时是关键,利用预计算解决耗时问题  效果保障:保证用户的个性化信息,降低候选集计算复杂度
38. 精排模型 • 精排阶段的特点  候选集较少,通常在百级别 大规模离散DNN  线上耗时相对宽松,几十毫秒(视效果而定) 小规模DNN • 精排模型的特点  结构复杂,怎么有效果怎么来  特征多样:历史行为、统计值、id类特征、高维交叉, etc. • 模型发展历程  树模型:Random Forest、XGBoost  小规模DNN:MLP、小规模的Wide & Deep  大规模离散DNN:大规模的Wide & Deep、DeepFM、DCN 树模型 1. Random Forest 2. XGBoost 1. MLP 2. 少量特征空间 的Wide & Deep 1. 大规模离散特征 的Wide & Deep 2. DeepFM 3. Deep Cross
39. 总结 • 超大规模深度学习  工程实现  数据并行、模型并行  在线、近线、离线逻辑一致性  实时模型  业务应用  召回模型,ANN搜索  粗排模型,模型预计算  精排模型,大规模离散DNN