简单实现在Kubernetes平台上运行GPU版本TensorFlow

世上本无路 只是走的人多了 也就成了路

简单实现在Kubernetes平台上运行GPU版本TensorFlow

一、目标

在Kubernetes平台上,运行GPU版本TensorFlow,实现MNIST训练识别。

二、假设前提

你会通过源代码编译TensorFlow,且编译了GPU版本TensorFlow

你会看懂Python版本的TensorFlow程序,且编写了MNIST训练识别程序

你会构建Docker镜像,且有一套Docker环境

你会操作Kubernetes,且有一套Kubernetes环境

注:Kubernetes-Docker集群搭建、GPU版本TensorFlow编译、MNIST测试程序样例等可以参考我之前写的系列文章

三、实现环境

CentOS 7

简单实现在Kubernetes平台上运行GPU版本TensorFlow

Python 2.7.5

简单实现在Kubernetes平台上运行GPU版本TensorFlow

Docker 1.12.6

简单实现在Kubernetes平台上运行GPU版本TensorFlow

Kubernetes v1.5.2

简单实现在Kubernetes平台上运行GPU版本TensorFlow

cuda_9.1.85_387.26_linux

cudnn-9.1-linux-x64-v7

NVIDIA GeForce GTX 750

简单实现在Kubernetes平台上运行GPU版本TensorFlow

Dockerfile(详见后面)

MNIST测试程序

简单实现在Kubernetes平台上运行GPU版本TensorFlow

POD文件(详见后面)

tensorflow-1.5.0-cp27-cp27mu-linux_x86_64.whl

简单实现在Kubernetes平台上运行GPU版本TensorFlow

四、构建Docker镜像

4.1 下载CentOS镜像:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

简单实现在Kubernetes平台上运行GPU版本TensorFlow

简单实现在Kubernetes平台上运行GPU版本TensorFlow

4.2 编写Dockerfile

简单实现在Kubernetes平台上运行GPU版本TensorFlow

Line 1-3: 基础镜像centos、作者信息、容器当前工作目录

Line 4-6:在镜像中安装wget和pip工具

Line 7-9:在镜像中安装GPU版本TensorFlow和依赖库libgomp

Line 10-11:在镜像中安装mnist测试程序

Line 12-13:设置镜像中环境变量

4.3 构建GPU版本TensorFlow镜像

简单实现在Kubernetes平台上运行GPU版本TensorFlow

4.4 查看GPU版本TensorFlow镜像

简单实现在Kubernetes平台上运行GPU版本TensorFlow

五、配置Kubernetes

5.1 node节点配置开启GPU支持:

/etc/kubernetes/kubelet中添加:

KUBELET_ARGS="--experimental-nvidia-gpus 1"

简单实现在Kubernetes平台上运行GPU版本TensorFlow

重启kubelet服务:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

简单实现在Kubernetes平台上运行GPU版本TensorFlow

六、通过POD运行TensorFlow

6.1 查看host上GPU情况:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

简单实现在Kubernetes平台上运行GPU版本TensorFlow

6.2 查看host上cuda toolkit和driver情况:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

简单实现在Kubernetes平台上运行GPU版本TensorFlow

6.3 编写pod.yaml:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

6.4 运行pod:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

6.5 运行nvidia-smi查看GPU使用情况:

简单实现在Kubernetes平台上运行GPU版本TensorFlow

6.6 查看MNIST结果:

kubectl logs tf-gpu-pod -f

简单实现在Kubernetes平台上运行GPU版本TensorFlow

七、说明:

7.1 GPU映射

Kubernetes 1.5.2版本GPU参数为experimental-nvidia-gpu 1

Kubernetes 1.6.0版本GPU参数为--feature-gates="Accelerators=true"

开启alpha.kubernetes.io/nvidia-gpu: 1

7.2 驱动映射

宿主机的/usr/local/cuda/和/usr/lib64/包含CUDA驱动,需要手工在POD中映射到容器里,目标目录添加到环境变量LD_LIBRARY_PATH中。

当然,你可以借助nvidia-docker-plugin(nvidia-docker)自动帮你归纳CUDA驱动,放到宿主机/var/lib/nvidia-docker/volumes/nvidia_driver/387.26/目录。

未经允许不得转载:技术 » 简单实现在Kubernetes平台上运行GPU版本TensorFlow

相关推荐