「2020年云原生与AI的结合 | 掘金年度征文 」

749 阅读5分钟

前言

AI技术目前正是如日中天,有人对他充满期望,有人对他嗤之以鼻,我不是专业的AI算法工程师,也不会对AI技术做出评判,作为一名系统工程师,或者一名码农,2020年我的任务就是如何结合云原生中动态调度,实时扩展,资源集中等优势与AI技术相互结合,解决目前AI训练,推理过程中遇到的环境配备,自动化运行差等问题。

本文属于杂谈,不会透露产品的相关信息

现状

现状一

目前,AI除了在各个大厂落地使用之外,大部分都集中在高校或者研究机构,一大批的硕士和博士正在涌入AI市场。但是,没有一套完整的运行规范,大家盲目地使用集群资源,导致运维困难,资源互相争抢,最为致命的一点就是大部分都停留在研究阶段,成果很难落地,一批批的学生毕业,又一批批的学生重复着相同的工作,每一届做的东西都差不多,成果也保留不了,导致资源的白白浪费。

我接触的学生中,大部分的运行方式是这样的,不知道能否代表广大AI学子:

# docker run -itd -p 2222:22 AIImage bash 
# 通过ssh软件连接到容器中,在容器中运行调试

这种方式,弊端很多,我简单列举几个:

  • 资源无限制,随便使用,但是CPU,内存,GPU卡的资源是有限的,经常会发生某一个学生资源占用过多导致其他学生的训练容器被kill掉,甚至影响宿主机的正常使用。
  • 学生能够登陆后台集群,获取比较高的权限,容易发生奇奇怪怪的问题(不是每个学生都有Linux使用能力)。
  • 不安全,无法保证自己数据和训练模型的安全性。
  • 只停留在训练阶段,没有将训练好的模型+推理代码打包发布成服务,让模型不断地学习,不断地循环,从而将服务落地。

现状二

目前,市面上有较多的产品能够满足AI从训练到发布的基本需求,比如: 华为的ModelArts,阿里的PAI,百度的AIStudio等。这些产品都面临着同一个问题,就是在云上。数据,代码,模型需要放在云服务器上,针对一些比较敏感的数据是无法放在远端的服务器上,是不允许也是不安全的。因此,需要一个运行在私有集群中的产品来满足AI各种各样的需求。

现状三

这是针对我们团队的实际情况而言的,没有大厂雄厚的技术积累和实现,没有自研的底层框架(阿里有平头哥,百度有PaddlePaddle,华为有MindSpore),没有足够的时间周期和金钱去重新积累。因此,我们主要针对目前市场上开源的平台和软件进行调研和前期试用。

AI框架也比较多,有Tensorflow,Pytorch,Caffe,MXNet等。基于实际情况考虑,我们是无法支撑所有的AI框架的,像AWS的HyperDL号称能够支撑起目前绝大多数的AI框架(虽然没用过,但是我信,人家毕竟是大佬)。我们只针对研究机构用的较多的两个框架:TF和Pytorch(学生上手比较快)。

并且,我们也看中了TF和Pytorch可以分布式训练,能够发挥多台GPU卡的性能,提高训练速度,也能作为我们平台的亮点吧。

实现

实现部分不能详细介绍了,我只简单说一下用到的技术栈和技术组件。

  • Kubernetes: 底层容器调度平台。
  • Ceph: 存储,能够同时满足文件存储,对象存储(存放小文件数据,大部分为图像数据),块存储(满足k8s的PVC)。
  • Kubeflow: AI训练平台,支持notebook,TF,pytorch,spark等。
  • Ambassador: 服务网关。
  • Keycloak: 单点登陆,用户认证和授权。

K8S作为底层调度平台,也是打交道最多的。使用K8S的RBAC做权限授权管理,ResourceQuota做训练资源限制,HPA做推理服务的Auto Scaling,还有定制化的CRD等。同时,对Shm,HugePage在K8S中的应用也有了新的认识。

总结

再瞎叨叨两句

2020接近尾声,这是不平凡的一年,确是我又一个平凡奋斗的一年。

从第一次接触编程到现在,正好十年整。

还有6年,我也要面临35岁的坎(其实,我个人并不认同35岁对程序员是个坎的论调)。

我对编程,计算机一直是非常地热爱。

 可以为了解决一个问题不吃不喝整整一天,
 
 可以为了验证一个问题,在地铁上打开电脑(别人可能认为这是装x),
 
 入睡前轻易不敢思考编程问题,因为很容易越想越精神,不得不亲身打开电脑。
 ...

不奢望编程能让我大富大贵,走上人生巅峰,只希望自己能够一直这样热爱下去,只享受解决问题之后的成就感就足够了。

最后,希望有更多AI产品能够落地,我们的生活能够更加便捷。

掘金年度征文 | 2020 与我的技术之路 征文活动正在进行中......