TensorFlow与Kubernetes/Docker结合使用实践(3)

docker可以通过提供gpu设备到容器中。nvidia官方提供了nvidia-docker的一种方式,其用nvidia-docker的命令行代替了docker的命令行来使用GPU。

nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu

这种方式对于docker侵入较多,因此nvidia还提供了一种nvidia-docker-plugin的方式。其使用流程如下:

首先在宿主机启动nvidia-docker-plugin:

[root@A01-R06-I184-22 nvidia-docker]# ./nvidia-docker-plugin ./nvidia-docker-plugin | 2016/10/10 00:01:12 Loading NVIDIA unified memory ./nvidia-docker-plugin | 2016/10/10 00:01:12 Loading NVIDIA management library ./nvidia-docker-plugin | 2016/10/10 00:01:17 Discovering GPU devices ./nvidia-docker-plugin | 2016/10/10 00:01:18 Provisioning volumes at /var/lib/nvidia-docker/volumes ./nvidia-docker-plugin | 2016/10/10 00:01:18 Serving plugin API at /run/docker/plugins ./nvidia-docker-plugin | 2016/10/10 00:01:18 Serving remote API at localhost:3476

可以看到nvidia-docker-plugin监听了3486端口。然后在宿主机上运行docker run -ti curl -s :3476/v1.0/docker/cli -p 8890:8888 gcr.io/tensorflow/tensorflow:latest-gpu /bin/bash命令以创建tensorflow的GPU容器。并可以在容器中验证是否能正常import tensorflow。

[root@A01-R06-I184-22 ~]# docker run -ti `curl -s :3476/v1.0/docker/cli` -p 8890:8888 gcr.io/tensorflow/tensorflow:latest-gpu /bin/bash root@7087e1f99062:/notebooks# python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally >>>

可以看到tensorflow已经能够正确加载了。

这里同样使用deep_recommend_system进行测试。在pod中先下载对应的deep_recommend_system的代码。

curl https://codeload.github.com/tobegit3hub/deep_recommend_system/zip/master -o drs.zip unzip drs.zip cd deep_recommend_system-master/

然后使用GPU0和1进行计算。

root@087e1f99062:/notebooks/deep_recommend_system-master# export CUDA_VISIBLE_DEVICES='0,1' //用以指定使用的GPU的编号 root@087e1f99062:/notebooks/deep_recommend_system-master# python cancer_classifier.py I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally Use the model: wide_and_deep Use the optimizer: adagrad Use the model: wide_and_deep Use the model: wide_and_deep I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 0 with properties: name: Tesla K20c major: 3 minor: 5 memoryClockRate (GHz) 0.7055 pciBusID 0000:02:00.0 Total memory: 4.9GiB Free memory: 4.1GiB W tensorflow/stream_executor/cuda/cuda_driver.cc:572] creating context when one is currently active; existing: x24402e0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 1 with properties: name: Tesla K20c major: 3 minor: 5 memoryClockRate (GHz) 0.7055 pciBusID 0000:04:00.0 Total memory: 4.9GiB Free memory: 4.1GiB I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] DMA: 0 1 I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 0: Y Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 1: Y Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K20c, pci bus id: 0000:02:00.0) I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K20c, pci bus id: 0000:04:00.0) [0:00:34.437041] Step: 100, loss: 2.97578692436, accuracy: 0.77734375, auc: 0.763736724854 [0:00:32.162310] Step: 200, loss: 1.81753754616, accuracy: 0.7890625, auc: 0.788772583008 [0:00:37.559177] Step: 300, loss: 1.26066374779, accuracy: 0.865234375, auc: 0.811861813068 [0:00:36.082163] Step: 400, loss: 0.920016527176, accuracy: 0.8359375, auc: 0.820605039597

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/18dee5ff819725032a80428cb8783486.html