57
美团点评GPU计算平台的演进实践 @数据平台 2018-11

美团点评GPU计算平台的演进实践 - NVIDIAon-demand.gputechconf.com/gtc-cn/2018/pdf/CH8104.pdf · • 14年 加入美团@数据平台 负责Hadoop YARN/MapReduce • 15年

  • Upload
    others

  • View
    54

  • Download
    0

Embed Size (px)

Citation preview

  • 美团点评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专家

    ⻓长期招聘:⼤大数据平台技术专家

    欢迎投递:[email protected]

    ⼯工作地点:北北京

    详细内容:https://zhaopin.meituan.com/job-detail?jobId=330585391712089560

    mailto:[email protected]://zhaopin.meituan.com/job-detail?jobId=330585391712089560