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

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

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

收起
参与6

返回Garyy的回答

GaryyGaryy系统工程师某保险

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
浏览1966

回答者

Garyy
Garyy0410
系统工程师某保险
擅长领域: 云计算存储容器

Garyy 最近回答过的问题

回答状态

  • 发布时间:2018-07-13
  • 关注会员:2 人
  • 回答浏览:1966
  • X社区推广