专栏首页Hadoop实操0691-1.4.0-GPU环境下CDSW运行TensorFlow案例

0691-1.4.0-GPU环境下CDSW运行TensorFlow案例

作者:李继武

文档编写目的

介绍如何在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='host' docker.repository.cloudera.com/cdsw/engine:5 /bin/bash

4. 安装模块

将tensorflow安装包及相关依赖包从宿主机中拉取到容器内:

scp -r root@ip:/root/tensorflow-1.8.0 .

查看tensorflow-1.8.0中的内容如下,包含tensorflow模块安装包及相关依赖包,以及案例中需要用到的image模块。

各依赖包的安装顺序,已经整理在了两个脚本之中,如上图中的install_tensorflow_1_8.sh以及install_image.sh中,直接运行这两个脚本即可。

sh install_tensorflow_1_8.sh
sh install_image.sh

脚本如下:

install_tensorflow_1.8.sh:

#!/bin/bash
yum -y install python-pip
rpm -ivh ./python-wheel-0.24.0-2.el7.noarch.rpm
cd html5lib-0.9999999
python setup.py install
cd ../termcolor-1.1.0
python setup.py install
cd ../gast-0.2.0
python setup.py install
cd ../
pip install pbr-5.1.1-py2.py3-none-any.whl
pip install Werkzeug-0.14.1-py2.py3-none-any.whl
pip install astor-0.7.1-py2.py3-none-any.whl
pip install enum34-1.1.6-py2-none-any.whl
cd absl-py-0.6.1
python setup.py install
cd ../
pip install backports.weakref-1.0.post1-py2.py3-none-any.whl
pip install bleach-1.5.0-py2.py3-none-any.whl
pip install funcsigs-1.0.2-py2.py3-none-any.whl
pip install futures-3.2.0-py2-none-any.whl
pip install grpcio-1.17.1-cp27-cp27mu-manylinux1_x86_64.whl
pip install Markdown-3.0.1-py2.py3-none-any.whl
pip install mock-2.0.0-py2.py3-none-any.whl
pip install numpy-1.15.4-cp27-cp27mu-manylinux1_x86_64.whl
pip install protobuf-3.6.1-cp27-cp27mu-manylinux1_x86_64.whl
pip install six-1.12.0-py2.py3-none-any.whl
pip install tensorboard-1.8.0-py2-none-any.whl
pip install tensorflow-1.8.0-cp27-none-linux_x86_64.whl

install_image.sh

#!/bin/bash
pip install Pillow-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl
pip install pytz-2018.9-py2.py3-none-any.whl
pip install Django-1.11.18-py2.py3-none-any.whl
pip install image-1.5.27-py2.py3-none-any.whl

5. 导入驱动依赖库

GPU版的tensorflow在使用时需要导入驱动相关的依赖包,比如libcuda.so.1,libcusovel.so.9.2等,因此,需要将宿主机中相关的库拉取到容器当中,拉取的依赖有两个,一是/usr/local/cuda9.2/lib64,二是/usr/lib64/nvidia

先拉取/usr/local/cuda9.2

scp -r root@ip:/usr/local/cuda9.2  /usr/local

当CDSW启动容器时,容器中的LD_LIBRARY_PATH默认包含/usr/local/cuda/lib64,因此,此处做一个软连接:

ln -s /usr/local/cuda9.2  /usr/local/cuda

再将/usr/lib64/nvidia下的文件全部拉取也放在/usr/local/cuda/lib64下

scp -r root@ip:/usr/lib64/nvidia/*  /usr/local/cuda/lib64/

6. 保存镜像

此时不要退出上述打开的镜像,再开一个连接窗口,连接到宿主机,使用下面命令查看:

docker ps | more

记住这个container ID

再使用下面命令保存容器为新的镜像:

docker commit containerId repository:tag

至此,镜像已经定制完成,可在CDSW使用该镜像来启动容器了。

配置定制镜像

1. 登录CDSW平台,点击“Admin”

点击“engine”,在下图中位置添加定制的镜像

验证镜像

1. 打开一个session

点击“configure”,选择自定制的镜像:

返回上一步,选择python2,以及资源中加选2GPU。

点击“launce Session”,启动session。

2. 上传案例代码及数据集。

3. 在交互窗口使用下面命令运行案例

!python train-license-province.py train

可以看到,正常训练完成

使用下方的命令进行预测:

!python train-license-province.py predict

从上述结果可以看出,可以正常运行,并且已正常识别出GPU,从下面的GPU使用率中,可以看到tensorflow调用了GPU进行运算:

训练城市代号:

!python train-license-letters.py train

预测城市:

!python train-license-letters.py predict

训练车牌编号:

!python train-license-digits.py train

预测车牌编号:

!python train-license-digits.py predict

从上述预测结果来看,预测准确。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3通过JDBC访问非Kerberos环境的Impala

    在前面Fayson介绍了在Python2的环境下《如何使用Python Impyla客户端连接Hive和Impala》及《Python3环境通过JDBC访问非K...

    Fayson
  • Python3环境通过JDBC访问非Kerberos环境的Hive

    在前面Fayson介绍了在Python2的环境下《如何使用Python Impyla客户端连接Hive和Impala》,本篇文章Fayson主要介绍在Pytho...

    Fayson
  • 如何为服务器硬盘配置RAID或JBOD模式

    在部署Hadoop平台的过程中,一般会要求数据盘配置RAID 0或者JBOD模式(直通模式),本文将详细讲解如何在HP dl380 Gen9服务器上配置RAID...

    Fayson
  • 详解Mac配置虚拟环境Virtualenv,安装Python科学计算包

    最近正在自学Python做科学计算,当然在很多书籍和公开课里最先做的就是安装Numpy, Scipy, Matplotlib等包,不过每次安装单独的包时,...

    杨熹
  • 最便宜的云服务器多少钱一年

    腾讯云最便宜的服务器是学生服务器套餐包含特价云服务器、域名(可选)、50免费对象存储空间(6个月);每日限量100个,每个用户限购1个,并赠送2次体验价续费机会...

  • php创建数据库和数据表

    注意:在php5.5以上取消了mysql_query请使用mysqli_query(mysql $link,string $query[,int $resul...

    十月梦想
  • 《流浪地球》的背后:早已流浪的中国互联网

    电影《流浪地球》讲述的是太阳不断膨胀,即将吞没地球,地球不得不寻找新的太阳以筹建新家园的故事。在遍布全球的数以万计的推进器的联合推动下,地球开始了长达2500年...

    孟永辉
  • 数字图像处理:

    冈萨里斯数字图像处理的那本书的一小点点东西,数字图像处理其实是学过了的,这里我只是把这本书完整看一遍,也是略略的看,查漏补缺,前两张略过了,从第三章开始。

    和蔼的zhxing
  • CentOS 7上安装Python 3.

    CentOS 7默认安装了Python 2.7,系统本身也使用它来启用系统命令例如‘yum’

    py3study
  • java中 i = i++和 j = i++ 的区别

    Mister24

扫码关注云+社区

领取腾讯云代金券