美团点评gpu计算平台的演进实践 -...
Post on 23-Jul-2020
55 Views
Preview:
TRANSCRIPT
-
美团点评GPU计算平台的演进实践
⻩黄军@数据平台 2018-11
-
关于我• 14年 加入美团@数据平台 负责Hadoop YARN/MapReduce
• 15年 Hadoop 多机房架构改造
• 16年 YARN 支撑上万节点改造
• 17年 开拓深度学习的基础设施平台-GPU计算平台
-
美团点评数据平台介绍
⼤大数据+AI基础设施平台
-
美团点评GPU计算平台现状
集群规模万级别
GPU卡数千级别
训练任务500+/天
全业务流程覆盖
-
美团点评GPU计算平台架构
-
深度学习业务“需求层次”
最佳业务实践
借鉴需求
完整流程支持需求
深度学习框架维护需求
基础设施的需求
高级
低级
如何做平台?产品化
-
GPU计算平台演进“三部曲”
大数据+AI的统一资源基础设施
深度学习训练平台
01
02
深度学习预测平台03
-
基础设施在深度学习场景的新挑战
1.GPU资源管理理
2.调度策略略
3.环境部署
4.统⼀一调度视图
-
GPU的资源管理理与隔离
Hadoop 3.x
• GPU资源维度扩展
• GPU资源隔离 • CUDA_VISIBLE_DEVICES • CGroup Devices Controller
• GPU资源自动发现
Hadoop2.x: https://issues.apache.org/jira/browse/YARN-5517
Hadoop3.x: http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/UsingGpus.html
两个配置开启GPU集群之旅
https://issues.apache.org/jira/browse/YARN-5517http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/UsingGpus.html
-
⽀支持多级标签
队列列级标签
标签调度:解决GPU卡异构调度
Container级标签
基于深度学习场景的调度策略略(⼀一)
-
基于深度学习场景的调度策略略(⼆二)• GPU亲缘性
• 考虑通讯架构 • GPU通信延迟降低60%
• 任务编排 • PS架构编排 • 合理利用资源 • 分散计算和通讯压力
-
Docker部署⽀支持
Hadoop 3.x
• 动态切换用户
•训练中动态安装常用库
• GPU虚拟机实验环境 • 提供sshd • 挂载ceph • 自动配置HDFS权限
https://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/DockerContainers.html
-
统⼀一调度视图(⼀一)
-
统⼀一调度视图(⼆二)⽤用户透明
稳定
易易运维
队列的路由策略 兼容原客户端API
分布式Router架构 弱依赖中心化存储
集中式策略更新
YARN Federation架构
-
GPU计算平台演进“三部曲”
大数据+AI的统一资源基础设施
深度学习训练平台
01
02
深度学习预测平台03
-
深度学习训练平台• 统一的深度学习调度框架
• TensorFlow模型训练优化
-
深度学习框架现状
TensorFlow VS Caffe VS xx
⾏行行业在⾼高速发展
主流框架各有特点
-
如何让众多深度学习框架 on YARN
Hadoop YARN
MapReduce? Spark? New Framework?
深度耦合,计算模型不不⼀一样!
-
统⼀一的深度学习调度框架-AFO
Hadoop YARN
AI Framework on YARN(AFO)
-
AFO设计⽬目标• 可扩展
• 能快速支持各种框架接入
• 支持容错 • 从调度层面支持分布式训练容错
• 高可用 • 支持预测服务
• 易用性 • 不要修改原始代码 • 集成任务监控,任务调试,调优功能
-
如何在YARN上实现⼀一个调度框架
-
AFO整体架构
配置计算模型
全局⼦子任务协调接⼝口
-
TensorFlow on AFO(⼀一)
TensorFlow运⾏行行分布式任务流程
-
TensorFlow on AFO(⼆二)
⽣生成TensorFlow ClusterSpec
-
AFO框架的特点—⽀支持容错
1.基于状态机的容错 2.⽀支持Task/Role/App级别容错
-
AFO框架的特点—⾼高可⽤用
AppMaster Failover
-
AFO框架的特点—易易⽤用性(⼀一)• 部署环境
• 支持virtualenv和docker的环境打包
• 支持多版本
• 数据加载
• 支持数据分片
• 数据预拉取
-
AFO框架的特点—易易⽤用性(⼆二)• 任务监控
• 任务调试
• 任务调优
⽀支持任务结束后查看 ⽀支持多租户的TensorBoard Service
-
统⼀一的深度学习调度框架—AFO接⼊入引擎现状
Hadoop YARN
AI Framework on YARN(AFO)
TensorFlow MXNet Caffe XGBoost LightGBM Serving
⼀一周之内接⼊入新引擎
-
深度学习训练平台• 统一的深度学习调度框架
• TensorFlow模型训练优化 • 大规模点击率预估训练优化 • WDL模型训练性能优化
-
⼤大规模点击率预估训练优化• Wide and Deep / DeepFM模型
• 上亿+ ID特征,上百个交叉特征,上百个Embedding特征
• 使用tf.embedding_look_up,内存爆掉
Embedding不不⽀支持稀疏的Variable社区讨论:https://github.com/tensorflow/tensorflow/issues/19324
https://github.com/tensorflow/tensorflow/issues/19324
-
⼤大规模点击率预估训练优化• 首先通过改造社区的MutableHashTable,来满足Variable的功能
• 包括支持lookup_or_insert语义
• 支持初始化器,支持partitioner
• Embedding支持HashTable
• dense接口,sparse接口,以及safe_embedding接口
• 在训练全流程上支持HashTable
• 梯度计算的支持HashTable
• 常用优化器支持HashTable(包括:Adam,FTRL,AdaGrad)
• Feature Column接口的支持
Embedding⽀支持HashTable⽅方案
-
⼤大规模点击率预估训练优化• 先单机,在分布式
• 先小数据,在大数据量
• 先固定初始化值,在放开随机值
• 非随机通过比对:每个batch的loss,grad,weight比对,保证逻辑的一致性
• 算法效果,是最终的衡量指标!
如何保障改造的正确性?
-
深度学习训练平台• 统一的深度学习调度框架
• TensorFlow模型训练优化 • 大规模点击率预估训练优化 • WDL模型训练性能优化
-
WDL模型训练性能优化• 问题描述
• 搜索广告场景,DNN模型,半个月的数据,大概需要训练55个小时
• 希望将训练控制在3-4个小时内
TensorFlow训练性能问题诊断
cProfile tf.profiler nvprof
-
WDL模型训练性能优化• 核心问题
• 复杂的预处理代码,与模型训练耦合
• 通过Feed接口去读取数据
• 大量的shuffle读分布式数据
使⽤用Spark做预处理理
DataSet接⼝口读数据
预拉取数据到本地
整体性能提升22X
整个Pipeline两⼩小时完成
-
GPU计算平台演进“三部曲”
大数据+AI的统一资源基础设施
深度学习预测平台
01
03
深度学习训练平台02
-
深度学习预测平台• 图像离线批量预测
• 基于TensorFlow Serving的在线预测架构
• TensorFlow Serving 支持多模型融合
• TensorFlow Serving 业务性能优化
-
图像离线批量量预测
Pipeline⻓长、效率低
维护成本⾼高
浪费资源
业务⽅方旧流程的问题
在线服务并发低
-
图像离线预测流程⽬目标• 一个作业完成整个Pipeline
• 兼容各种主流深度学习框架的模型
• 加速图像的下载
-
图像离线预测架构(⼀一)
整体架构
-
图像离线预测架构(⼆二)
Spark内部实现
代码示例例
在Spark程序中引⽤用TensorFlow
调⽤用TensorFlow API执⾏行行预测
PySpark + VirtualEnv打包 架起TF之间的桥梁梁Spark⽀支持GPU申请/使⽤用
-
深度学习预测平台• 图像离线批量预测
• 基于TensorFlow Serving的在线预测架构
• TensorFlow Serving 支持多模型融合
• TensorFlow Serving 业务性能优化
-
基于TensorFlow Serving的在线预测架构
TensorFlow Serving架构
⽀支持模型热更更新
⽀支持模型版本管理理
稳定性、性能较好
扩展性较好
-
基于TensorFlow Serving的在线预测架构
• 服务治理(兼容thrift) • 全链路监控 • 多环境支持 • 统一资源调度 • 与训练无缝集成 • 产品化支持
TensorFlow Serving在实际⽣生产中的应⽤用
-
深度学习预测平台• 图像离线批量预测
• 基于TensorFlow Serving的在线预测架构
• TensorFlow Serving 支持多模型融合
• TensorFlow Serving 业务性能优化
-
TensorFlow Serving⽀支持多模型融合
OCR业务场景
姓名
出⽣生⽇日期
身份证号码
……….
-
TensorFlow Serving⽀支持多模型融合算法训练
训练监测模型
图⽚片下载
训练识别模型
监测模型预处理理
监测模型预测
区域A识别模型预测
区域B识别模型预测
合并预测结果
在线预测服务
TensorFlow Serving⽆无法直接⽀支持
⾃自⼰己实现⼀一个预测服务,⼤大量量的重复⼯工作,维护成本⾼高!
-
TensorFlow Serving⽀支持多模型融合
只需提供模型⽂文件,就可以提供在线预测服务!
抽象业务Op
图⽚片下载
XX预处理理
XX结果处理理
监测模型
识别模型
多模型融合⼯工具
-
深度学习预测平台• 图像离线批量预测
• 基于TensorFlow Serving的在线预测架构
• TensorFlow Serving 支持多模型融合
• TensorFlow Serving 业务性能优化
-
TensorFlow Serving 业务性能优化• 业务问题
• 在线数字营销业务场景,Wide and Deep模型
• 第一版性能:QPS大约200时,整体TP50 18ms(打包请求端:5ms,网络开
销:3ms,模型预估:10ms)
• 而且模型在热更新的时候,会出现阻塞,会有大量的请求超时
• 目标
• 性能要求在10ms以下
• 并解决毛刺问题
美团DSP团队联合优化项⽬目
-
TensorFlow Serving 业务性能优化
OpenMP多线程批量量打包请求
5ms 2ms
-
TensorFlow Serving 业务性能优化
模型性能优化
tf.profiler分析
⼤大量量的feature_column API耗费了了很⻓长时间
迁移到预处理理阶段
10 ms 1.1 ms
-
TensorFlow Serving 业务性能优化
模型切换⽑毛刺刺问题
问题⼀一:加载模型、执⾏行行推理理是⼀一个线程池
问题⼆二:模型⾸首次运⾏行行耗时较⻓长的问题
优化后
84 ms 4 ms
多个线程池
加载模型后Warm Up
-
TensorFlow Serving 业务性能优化
整体优化效果
6 ms
技术细节:基于TensorFlow Serving的深度学习在线预估(美团技术博客)
https://tech.meituan.com/tfserving_improve.html
-
未来规划
-
美团点评@数据平台⻓长期招聘:深度学习⼯工程架构专家
⻓长期招聘:机器器学习平台Java专家
⻓长期招聘:⼤大数据平台技术专家
欢迎投递:huangjun03@meituan.com
⼯工作地点:北北京
详细内容:https://zhaopin.meituan.com/job-detail?jobId=330585391712089560
mailto:huangjun03@meituan.comhttps://zhaopin.meituan.com/job-detail?jobId=330585391712089560
top related