首页 > 新闻中心 > 企业新闻

饿了么深度学习DockerK8S实践经历同享

作者:江南体育电子游戏 来源:江南体育app下载 时间:2023-08-09 11:51:42

  从TensorFlow这样一个深度学习结构开端,到把它在实践项目中完好运作起来,这中心需求一套懂深度学习的云渠道。 此次讲演将与咱们同享团队结合Kubernetes与TensorFlow建立深度学习渠道elearn的经历与心路历程,以及在深度学习如此炽热的今日,工程师应该怎样凭借Cloud(Kubernetes)来将深度学习结壮落地。

  许多人都有这样的疑问——深度学习渠道是否便是一个跑使命的渠道。其实比照曾经经过虚拟机跑一个进程,现在经过K8S等技能来完成本钱要低许多,所以现在来说启进程现已不是深度学习重视的悉数了。

  从整体来看深度学习和机器学习分为两大类,一类是根据Apache系列,经过原有的Apache生态去做机器学习。另一类的深度学习,是根据TensorFlow、PyTorch、MXNet等的深度学习结构, 它跟Apache其实没有怎样大的联系,许多功用也是Apache无法完成的。

  深度学习渠道和大数据渠道其实是不抵触的,耦合联系也并不是很强。它需求的是机器学习对数据的预处理部分,然后将处理好的数据经过Cloud的分布式存储作为中心的前言,接着供给给TensorFlow进行分布式的Tranining,最终渠道进行模型的办理和上线的serving。从这张图中咱们就能够看到elearn的方位,以及它与大数据渠道是怎样共处的。

  先来看开发环境,一般的代码开发既能够在虚拟机上进行也能在自己的机器上开发,而关于深度学习来说则需求一个即能看到实在的数据又能够做代码开发,绝地具有强壮运算才能的环境。

  现在不管是开发什么样的代码,都需求经过版别办理工具进行办理,而现在深度学习范畴在Model版别办理仍是一片空白。

  一般的代码有着各种的灰度发布的战略,深度学习的Model版别发布在这方面相同也是空白。

  深度学习的使命和一般的事务开发一个很大的不同就在于对分布式存储有很强的依靠。深度学习有十分多的图画、音频的数据,这些数据是不可能向MySQL等数据库中存储的,绝地这么很多的数据也不方便去复制给每一个算法工程师的。所以需求用到分布式存储系统办理。

  饿了么在这块跟内部的大数据渠道的海量存储系统进行了打通,这个存储系统便是Titan。Titan在sync好数据后,会自意向elearn注册Datastore,数据最终仍以表名在elearn展现,用户无需运用特定sdk。

  在K8S中能做到对GPU资源的阻隔,每一个GPU关于特定container是独享的,不存在相似CPU的分时同享的情况,可是现在在对GPU运用资源的上报仍是不行优异。

  Deep Learning和Kubernetes结合后首要面对的一点便是前面讲到的愈加需求分布式存储。别的你会发现Reatart Policy和Kubernetes Quota机制往往无法直接满意需求。比方,Gang Scheduling 就需求自己去完成。最终便是使命自身的资源需求偏大。

  用户能够经过不断的提交使命来练习很多的模型,可是只要在挑选保存某一个Model版别之后,elearn才会确保该Model不会丢掉。当存储了多个版别后能够挑选两种方法将Model放到线上进行服务。

  一种便是经过TensorFlow或许elearn供给的服务将Model文件转换成GRPC服务。这样的话线上的事务就相当于有算法工程师开发的微服务,且不需求去关怀服务底层的信息,做到一个解耦,后续的Model版别晋级就不用去再次发布事务代码。

  第二种便是传统的将Model文件从分布式存储系统Download下来,然后打进架包放到事务代码中运用。不过这样的缺点在于每更新一次Moel都要从头发布事务。

  假如是独自登录到机器上操作GPU,那么便是一人占用一台机器,GPU型使命变成了串行,需求排队等资源,导致GPU卡的运用功率下降。而且使命缺少办理,工程师的开发环境建立也是十分的费事。

  根据以上原因咱们供给了Cloud Jupyter Notebook,它和分布式存储以及GPU办理进行了整合。这样就能够直接阅读到分布式存储内的数据,开发的时分也能用到GPU的资源,包含环境的建立相同能够在这儿进行。

  在elearn拿到整合的数据之后会同享给多个练习的使命去用,而Hypertuning使命会经过多种算法、结合之前练习的成果,挑选下一批参数,发动很多的使命,最终会挑取其间作用最好的进行线上的Serving。

  elearn尽量发挥了Kubernetes的特征功用和编列才能,到现在为止让elearn支撑其他Cloud太简单了,只要写interface够通用,然后写drive就能够了。Interface 的规划方面,假如只以容器维度,就会失掉Kubrenetes自身的含义,所以elearn cloud interface的规划是面向功用的,面向一个个深度学习功用。这样的定位,充分体现深度学习渠道在 Kubernetes 之上的附加价值。

  今日的同享就到这儿,完事本次同享请给我点赞~谢谢咱们!有什么问题能够在谈论区评论。

  内容来历:2017年11月19日,饿了么资深后端工程师江骏在“11.19上海 K8S Sail!系列技能沙龙”进行《饿了么Docker&K8S实践经历同享》讲演同享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审理授权发布。