作者:李继武
文档编写目的介绍如何在CDSW中安装集成CUDA9.2版本的tensorflow模块,以及在GPU环境下运行tensorflow案例。代码参考上一篇文章《0690-TensorFlow之车牌识别案例》,CDSW的GPU的支持与CUDA编译参考之前的文章《如何在CDSW中使用GPU运行深度学习》和《0490-如何为GPU环境编译CUDA9.2的TensorFlow1.8与1.12》。
CDSW配置要在cdsw中运用GPU,首先需要将GPU资源交给CDSW管理
1. 打开Cloudera Manager中CDSW的配置
搜索gpu,设置以下属性:
NVIDIA_GPU_ENABLE:设为TRUE,开启CDSW对GPU的支持。
NVIDIA_LIBRARY_PATH:NVIDIA驱动程序库的完整路径。
2. 重启CDSW
3. 查看CDSW的UI界面
可以看到CDSW已经可以使用GPU资源
(上图中使用0GPU2G内存2GPU开启了一个SESSION)
定制镜像创建一个工程之后,在容器内安装自编译的tensorflow模块时,会遇到无法安装一些依赖的问题:
因此,需要定制镜像。
1. 登录CDSW平台查看使用的基础镜像名称
点击“Admin”
点击“engine”,查看基础镜像名称
上图标注部分即为CDSW的基础镜像(docker.repository.cloudera/cdsw/engine:5)由Docker的Repository和Tag组成。
2. 命令行查看CDSW基础镜像:
sudo docker images
3. 使用下面命令启动容器
sudo docker run -it --network=
4. 安装模块
将tensorflow安装包及相关依赖包从宿主机中拉取到容器内:
:/root/tensorflow-
查看tensorflow-1.8.0中的内容如下,包含tensorflow模块安装包及相关依赖包,以及案例中需要用到的image模块。
各依赖包的安装顺序,已经整理在了两个脚本之中,如上图中的install_tensorflow_1_8.sh以及install_image.sh中,直接运行这两个脚本即可。
sh
脚本如下:
install_tensorflow_1.8.sh:
#!/bin/bash
install_image.sh
#!/bin/bash
5. 导入驱动依赖库
GPU版的tensorflow在使用时需要导入驱动相关的依赖包,比如libcuda.so.1,libcusovel.so.9.2等,因此,需要将宿主机中相关的库拉取到容器当中,拉取的依赖有两个,一是/usr/local/cuda9.2/lib64,二是/usr/lib64/nvidia
先拉取/usr/local/cuda9.2
:/usr/local/cuda9.
当CDSW启动容器时,容器中的LD_LIBRARY_PATH默认包含/usr/local/cuda/lib64,因此,此处做一个软连接:
local/cuda9.2 /usr/
再将/usr/lib64/nvidia下的文件全部拉取也放在/usr/local/cuda/lib64下
:/usr/lib64/nvidia/* /usr/local/cuda/lib64/
6. 保存镜像
此时不要退出上述打开的镜像,再开一个连接窗口,连接到宿主机,使用下面命令查看:
docker ps | more
记住这个container ID
再使用下面命令保存容器为新的镜像:
docker
至此,镜像已经定制完成,可在CDSW使用该镜像来启动容器了。
配置定制镜像1. 登录CDSW平台,点击“Admin”
点击“engine”,在下图中位置添加定制的镜像
1. 打开一个session
点击“configure”,选择自定制的镜像:
返回上一步,选择python2,以及资源中加选2GPU。
点击“launce Session”,启动session。
2. 上传案例代码及数据集。
3. 在交互窗口使用下面命令运行案例
python
可以看到,正常训练完成
使用下方的命令进行预测:
python
从上述结果可以看出,可以正常运行,并且已正常识别出GPU,从下面的GPU使用率中,可以看到tensorflow调用了GPU进行运算:
训练城市代号:
python
预测城市:
python
训练车牌编号:
python
预测车牌编号:
python
从上述预测结果来看,预测准确。