群雁计划 · 解读第3期:滴滴简枢机器学习平台

桔妹导读:滴滴智能出行开放平台是滴滴在“群雁计划”中打造的,面向智能出行领域的人工智能开放平台。在该平台上,滴滴将积累的AI 技术、服务、算力以及多元化的解决方案进行全方位的开放。本文将详细解读滴滴智能出行开放平台的整体架构及未来规划。


1.
滴滴简枢机器学习平台简介

滴滴简枢机器学习平台隶属于滴滴群雁计划的AI基础平台部分,为深度学习任务提供加速研发、训练、生产的能力。

机器学习服务的生产过程通常包括问题定义与分解、数据制备、算法开发、离线训练迭代、在线服务部署等阶段。滴滴简枢机器学习平台支持机器学习业务从模型研究、批量训练到在线预测的全流程,提供实验环境、离线任务和在线服务三大功能。其中实验环境用于模型研究、开发调试;离线任务用于高效批量训练;在线服务用于高可用的在线预测。三大功能底层有自带的网络文件存储、镜像存储以及负载均衡。网络文件存储用于打通环境和存储热数据;镜像存储用于环境快照和分享;负载均衡用于保障在线预测高可用。同时平台具有良好的互操作性,可以与现有hdfs冷存储,spark等大数据平台打通。以上一站式的管理功能让业务能更好的利用平台核心的GPU计算力。

2.
滴滴简枢机器学习平台的能力

滴滴简枢机器学习平台在滴滴内部支撑了人脸识别、语音识别、目标检测、自然语言处理(NLP)、到达时间预估(ETA)等业务的开发实验、离线训练、在线服务等场景,累计拥有3000+注册用户,其中月活跃用户超过600个;运行实验环境1000余个;支持离线训练任务20万+;支撑在线服务300+。滴滴简枢机器学习平台在滴滴内部已经成长为AI研究与生产的高频操作平台。

滴滴简枢机器学习平台之所以能有如此广泛的应用,与其自身的服务能力密不可分:

▌提升资源使用效能

深度学习算法大都属计算密集型应用,一般都会使用单价较昂贵的GPU服务器,若资源缺乏统筹调度,无法形成规模化效应,资源的使用效率会大打折扣。滴滴简枢机器学习平台借助开源工具Kubernetes实现资源管理和任务调度,使资源使用方能够用即申请,完即释放,从而盘活整个资源大池。

提升开发效率

算法开发最核心的工作是算法的开发和调试,但是开发环境却是一个绕不开的话题:算法开发工程师把大量的时间花在了环境的部署、配置与维护上了,通常构建一套完整的环境是以天为单位的。但是机器学习的开发环境是有共性的,比如一般会集成操作系统、CUDA、Python、TensorFlow、Pytorch、Caffe、Jupyter等。

滴滴简枢机器学习平台使用当下盛行的Docker技术,通过将算法环境封装成Docker镜像的方式,结合Kubernetes实现了1次构建、重复使用的效果。对于一些个性化的环境,用户可以自定义镜像,也可把镜像共享给其他用户,在标准化的同时兼顾了灵活性。同时滴滴简枢机器学习平台提供ssh、vnc、jupyter的交互接口,用户可以方便地访问和操作实验环境。借助滴滴简枢机器学习平台,用户从开始申请实验环境到环境交付,基本都是在1分钟的时间内完成的,相较于传统的构建方式提升了百倍以上的效率。

加速离线训练

影响离线训练有2个重要的因素,一个是调超参的效率,一个是训练任务的执行效率。

用户训练时往往需要调超参,而这些超参都是同形的,只是数值上的变化,这种值上的变化后就是一个个独立的任务,需要用户提交任务的流程,而提交流程是重复性的工作;用户在运行多机多卡时需要参数服务器,低效的参数服务器把大量的时间浪费在通信上,这种浪费会加重用户资源使用上的重复。

对于调超参,滴滴简枢机器学习平台对用户的Python代码做语义分析能够自动识别出那些Python变量可能会是需要调整的超参,用户只需要设置变量取值集合就可以自动获取整套参数的模型训练任务以及最终的结果。

对于训练任务的执行效率,滴滴简枢机器学习平台结合自己的硬件特点和通信模式特点,开发了滴滴参数服务器。滴滴参数服务器采取环状结构,实现了高效的RDMA通信的Allreduce算法。环状结构而非中心集中的server-client模式,消除了网络传输可能的带宽竞争和网络拥塞。底层自研的高效RDMA通信库,尽量规避RDMA固有的通信开销,充分挖掘了硬件的属性来提高性能。另外,自研的allreduce算法巧妙重叠了计算和传输,尽量减少了不必要的内存拷贝来减少额外代价,并充分考虑了gpu拓扑、cpu亲和性等硬件属性来提高性能。

相比于市面上的任何一款参数服务器而言,滴滴参数服务器都有着比较明显的优势,在机房40G带宽的RoCE v2 RDMA网络实际测试中,对比业界的openMPI和Nvidia的NCCL2方案,滴滴参数服务器的表现遥遥领先。

此外机器学习的任务计算特点依赖于GPU的高速计算,它们对数据访问延迟有一定要求,这要求必须有足够高的IO带宽做支持;用户数量增加,对存储带宽的需求会变的非常大;对存储系统来讲,支持Posix接口的要求使得现有技术方案大大减小,另外也需在高可靠性、高性能以及成本之间做折中。滴滴机器学习平台在存储系统上的尝试还是借用传统超算使用的pfs作为整个数据存储的一级,底层网络基础设施使用高带宽的以太网络,使用RoCE协议做RDMA的支持,并往这个方向演进。

赋能在线服务

用户在模型生产后要部署模型服务,就需要解决服务的 HA、负载均衡等生产服务问题,每一个在线模型都要解决这类问题。另外,模型服务要上线,为了满足服务的延迟、QPS、资源的约束,需要做从服务、到深度学习框架、到计算库的全栈优化,基本上,大部分模型上线也需要经历这个优化过程。

针对模型服务部署和优化,平台结合自己的场景特点开发了 EIS(Elastic Inference Service)serving 服务框架、AI 智能加速引擎 IFX 和 Autotuning 优化库,极大的加速了模型上线部署和优化过程。EIS Serving 独创自适应的 batch 机制,优化 RPC 协议,解决 tensorflow serving 的缺陷。以 MNIST 模型举例,使用相同的硬件资源,EIS Serving 相较于 TensorFlow Serving QPS 提升 2.5 倍,延时只有其 1/3。

EIS serving 框架服务本身不再成为整个服务链路中的瓶颈点,对于一些轻量模型可以有3倍的性能,包括 rt 和 qps 的提升, 而对于一般模型,性能热点落在深度学习框架层。因此,针对框架层,自主研发的深度学习框架 IFX,并同时适配于 GPU 服务器和移动端平台。在 GPU 服务器上,由于 CUDA 存在 context 管理的问题,设计实现了一种 GPU 上的并发机制,有效地绕开了这些问题所带来的额外开销,另外对大量的op做了优化,使得IFX的性能远高于 tensoflow 乃至 tensorRT ;IFX 针对移动端的不同硬件配置,比如:流水线长度、顺序乱序、超标量等特点进行指令重排、访存优化,结合业务的计算特点,使得 IFX 的性能取得不俗的表现.

在 IFX 的加持下,在线推理在滴滴简枢机器学习平台上的性能表现如下:

在 IFX 的优化过程中,大量的重复工作基本是在 tuning Blas 计算,由于硬件架构不同,不同模型的计算量、计算访存比、计算访存模式都不同,在极高性能要求下都需要综合这些具体的情况做针对性的优化。这些优化都是很底层,并且调优都相对繁琐,对于上层服务用户来讲,不必关心这些底层细节,为解决这类问题,平台开发了 autotuning 工具链,对于用户来讲,只需要把 GPU 上的二进制代码发给平台,平台就可产生在该 GPU 平台上几乎是最优,也就是当前最高性能的优化后的二进制代码。

3.
未来展望

当前,滴滴简枢机器学习平台解决了资源统一管理和调度的问题;抽象出了机器学习的开发测试、离线训练、在线服务的场景,提高了机器学习各个环节的工作效率;通过自动调参、参数服务器、高性能网络存储以及SDN等解决方案加速了训练;通过EIS Serving、IFX、Autotuning等产品和解决方案提升了推理性能。

未来,滴滴简枢机器学习平台仍然会从AI解决问题的效率和规模两方面着手,在平台上提供更丰富的功能,比如开发数据市场、算法市场,进一步提升AI开发和训练的效率;开发模型市场,打通AI模型生产者和消费者之间的障碍,进一步解放AI的生产力。同时,借助滴滴人工智能服务的能力,滴滴简枢机器学习平台上也会继续沉淀并推出更多的具体服务,比如:人脸比对、语音识别、翻译等等。

了解更多

本文首发自「滴滴科技合作」

群雁计划解读」系列文章,欢迎阅读

推荐阅读



更多推荐

滴滴开源 / Open Source

Mpx | Booster | Chameleon | DDMQ | DroidAssist | Rdebug | Doraemonkit | Kemon | Mand Moblie | virtualApk | 获取更多项目

技术干货 / Recommended article

深度解密 Go 语言:关于 interface 的 10 个问题 | 滴滴宋世君:DS(数据分析师),究竟是做什么的? | 一个 Golang 项目的测试实践全记录 | 阅读更多内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值