现在人工智能这么火,k8s的gpu支持不知道现在有哪些方案?

Kubernetes 在版本 1.6 后正式加入了 Nvidia GPU 的调度功能,支持在 Kubernetes 上运行和管理基于 GPU 的应用。现在人工智能这么火,k8s的gpu支持不知道您能提供一些方案吗?

1回答

GaryyGaryy  系统工程师 , 大地保险
aixchina赞同了此回答
Docker 是具有把 device 通过 cgroup 里面的 deivce 来 mapping 到 container 上的能力的,我们可以通过“--device”来达到这个目的。然后我们可以通过 “docker inspect:” 来检查 container 所指定的设备。然后我们在 container 的内部就可以看到相应的设备并且可以使用...显示全部

Docker 是具有把 device 通过 cgroup 里面的 deivce 来 mapping 到 container 上的能力的,我们可以通过“--device”来达到这个目的。
然后我们可以通过 “docker inspect:” 来检查 container 所指定的设备。
然后我们在 container 的内部就可以看到相应的设备并且可以使用了。
在设备已经可以绑定了之后,我们就可以提供 driver 和 CUDA 的支持了,而 Nvidia 给了一个关于如何在 container 层面支持 GPU 的原型,是基于 Docker 的,叫做 Nvidia Docker。
Nvidia Docker 所提供的功能:
支持 GPU 的 container 在 Nvidia Docker 里面的层级关系。
目前我们已经支持了如何在 container 的层面支持 GPU,但是这还远远不够在 container 编排环境里面支持 GPU,譬如我们在 Kubernetes 里面支持 GPU。

GPU in K8S:
在 Kubernetes 里面我们做一些关于 GPU 的工作才能让 GPU 能够被调度起来,功能如下:
GPU discovery.(kubelet):加入这个功能是为了能够让 Kubelet 在启动的同时就可以查找本机上的 GPU,而这个 GPU 消息可以发送给 apiserver,但 apiserver 里面有 GPU 的信息后,就可以通过 kube-scheduler 进行调度了。
GPUassignment/release. (kubelet):当一个 container 存在 GPU 需求的时候,我们可以通过 docker 的 --device 层面来支持对于 GPU 的 assign 和 release Resource API.(kube-apiserver/kube-scheduler):在 kube-scheduler 和 kubelet 之间需要一个关于 GPU 资源的协议支持,譬如目前有 CPU,memory 等,为了让 GPU 能够被调度,我们需要引入 GPU 作为一个资源可以被调度。

GPU in TensorFlow:
在分布式 TensorFlow 环境里面,各个 worker 不互相通信,只会跟 parameter server 通信。所以即使将各个 worker 部署到不同的机器上也不会造成性能损耗。目前 TensorFlow 支持 GPU 进行 training 的运算,但需要进行编译时设置。

GPU in K8S + TensorFlow
由于在部署分布式 TensorFlow 时极其繁琐,并且在每次扩容都需要进行很多设置和操作。所以提供基于容器化的 TensorFlow 并运行在 Kubernetes 上就使其变得相当容易,而我们需要做的,就是在上面提到的如何让 Kubernetes 支持 GPU 的情况下,将 TensorFlow 容器化。

收起
 2018-07-13
浏览127

问题状态

  • 发布时间:2018-07-10
  • 关注会员:2 人
  • 问题浏览:673
  • 最近回答:2018-07-13
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2018  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30