ubuntu16.04-LTS+cuda-9.1+docker+tensorflow-gpu

  • Post author:
  • Post category:其他


简单快捷搭建深度学习平台

1、纯手动搭建环境,自己安装tensorflow。网上有很多现有教程,本人按照这些教程安装结果遇到各种各样的问题,在重装了数次系统后果断放弃。如果你喜欢自己动手,并且熟练的使用百度解决问题,可以忽略以下内容。

2、简单说一下手工安装方式:

第一步:安装nvidia显卡(这一步不是必须的,而且容易出问题,不建议)这里有两种安装方式。但是之前,


切记!切记!切记!


重要的事情说三遍,一定要关闭Ubuntu 16.04系统自带的开源第三方驱动管理:

nouveau

,这个东西和nvidia驱动不能共存,不禁掉是装不上nvidia 最新驱动的。

$sudo gedit  /etc/modprobe.d/blacklist.conf

然后在这个文件的最后面加上下面两行:

blacklist   nouveau

options    nouveau      modeset=0

然后在terminal里敲入下面的命令更新启动项

$ sudo   update-initramfs   -u

完成之后

:reboot



如果你的平台是笔记本,并且是Intel的CPU和NVIDIA的GPU,那reboot之后是可以进入图形界面的,点击右上角的电源选项,找到“关于这台计算机”,可以看到你的CPU和当前使用的GPU的型号。







可以看到我的图形处理器是Intel的集显,接下来是安装NVIDIA的驱动。但是在此之前要确认一下nouveau是否真的被屏蔽。



$ lsmod | grep nouveau







如果没有输出则是已经成功了,如果列出了含有nouveau字样的东西,则表示失败。此时,检查自己之前的输入是否有错误,重新按之前的步骤再来一次。



百度登录NVIDIA官网,查询自己显卡对应的最新驱动,我的是Geforce- – -GTX850M,对应NVIDIA-384,命令行安装:



$ sudo apt-get install nvidia-384 nvidia-settings



安装成功后可以通过nvidia-smi命令查看当前的显卡驱动







Quadra M2000是我的显卡型号,Processes显示正在使用GPU的进程,如果Processes下没有进程也不用担心,只是表明没有使用独显,一样是安装成功了的,重启之后一般会使用独显,当然也有可能不会,但是只要有NVIDIA-SMI的内容就可以,不影响后续使用。



第二步:安装CUDA。官网下载cuda.run文件,.deb文件使用dpkg安装时会默认安装CUDA集成的NVIDIA驱动,这会覆盖你之前装好的驱动,引发一系列的问题。



$ sudo sh   ——.run     –override,—–代表你下载的CUDA后面那一串的东西,在是否安装NVIDIA驱动那一项选N,其他都是Y,安装完成后,可以到 /usr/local下查看,有cuda-9.1这个文件存在。或者在命令行里输入:nvcc,系统会提示你该命令是否存在。



第三步:安装cuDnn+tensorflow+配置环境。网上有很多教程,可以自己百度。




根据笔者的经验,显卡驱动和cuda的安装是最麻烦的,有一点要注意: 必须留有足够的空间,/tmp 、/、等,否则也会提示空间不足,无法安装cuda。




NVIDIA-Docker 安装Tensorflow


第一步:安装cuda。在此之前不用安装NVIDIA的驱动,如果已经安装了NVIDA的驱动,在安装cuda时,在是否安装NVIDIA驱动那一项选n即可。安装过程同上,安装成功后验证一下即可。

第二步:安装docker

如果之前安装过docker,则要先移除。

$ sudo apt-get remove docker docker-engine docker.io

然后把docker仓库加到源里。

$ sudo apt-get update

$ sudo apt-get install\

apt-transport-https\

ca-certificates\

curl \

software-properties-common

$   curl-fsSL     https://download.docker.com/linux/ubuntu/gpg   |  sudo   apt-key   add –

$    sudo apt-key fingerprint 0EBFCD88

$   sudo add-apt-repository\

$  “deb [arch=amd64]https://download.docker.com/linux/ubuntu\

$(lsb_release-cs)\

stable”

如果中间过程有报错,可以先不理,接着执行下面的命令:

$ sudo apt-get update

$ sudo apt-get install  docker-ce

$ apt-cache madison  docker-ce

跳过一大段的安装过程,输入下面的命令跑一个例子



如果报错无法安装docker-ce,则可以尝试下面的方法:


curl -sSL https://get.docker.com/ | sh
#    更换了docker-ce的软件源,没有成功的话来多几次,这个也是博主亲测有效的。
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
#    下载nvidia-docker,为安装tensorflow做准备。
sudo dpkg -i /tmp/nvidia-docker*.deb
nvidia-docker安装成功后,运行tensorflow的操作下同,这一步主要解决 docker-ce 和nvidia-docker     无法安装的问题。

$ sudo docker run hello-word

输出 Hello from Docker!

或者直接输入 :   docker

会出现docker的一些信息和命令选项。

第三步:安装NVIDIA-Docker

# Install nvidia-docker and nvidia-docker-plugin

wget-P  /tmp    https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb

sudo dpkg-i  /tmp/nvidia-docker*.deb&&rm  /tmp/nvidia-docker*.deb

# Test nvidia-smi 验证是否安装成功

nvidia-docker  run –rm nvidia/cuda      nvidia-smi

#表示要在root下面执行:sudo   -s

nvidia-docker 已经集成了我们所需要的一些依赖项,并且可以自己搭建环境,不需要再手动的设置路径和下载安装cuDnn。可以直接用nvidia-docker直接安装最新版本的tensorflow-gpu。

$  sudo   nvidia-docker   run -it  -p  8888:8888  tensorflow/tensorflow:latest-gpu

然后是自动安装tensorflow-gpu。

注释:把宿主机的文件映射到容器中文件,你在容器中这个文件下的file可以实时的保存到宿主机上。

sudo nvidia-docker run --name zsh-tensorflow -it -p 8888:8888 -v /home/mysj/tensorflow:/notebooks/data  tensorflow/tensorflow:latest-gpu

解释:
--name用于重命名你的docker 容器,可有可无,在这里给我的docker容器命名为zsh-tensorflow,-v后面是你希望在容器中的文件保存到宿主机上的位置,我这里是/home/mysj/tensorflow, 这个根据你的真实情况确定,:后面是容器中文件所在的位置,我这里是/notebooks/data,注意前面的/notebooks不能变,后面的/data根据你的意愿可以随意命名。

之后,你的所有容器中/data下的文件都会在你的主机上的/home/mysj/tensorflow下,如果你也是这样命名的话。

完成后会出现一个htttp://—–开头的网址,在终端输入 ifconfig 查看本机ip,然后在浏览器中输入本机ip地址,在后面加上:8888登入,出现一个jupyter 的登录界面,在 login所在的地方的方框里,输入安装完成后http://后面token那一大串的值,然后login就会出现下面的图(或者直接在浏览器中输入localhost:8888,然后输入terminal中token后的那一长串,就可以了):

更新:

通过上述过程搭建的tensorflow容器可以在notebook中通过下面的命令安装如sklearn、skimage都库。

!pip install libname
libname 是你要安装的软件包的名字。

但是,考虑到OPENCV库需要单独编译安装,在notebook中不易实现(我是不知道怎么弄),鉴于CV中优秀的图像处理算法,介绍如何在已经安装tensorflow镜像基础上安装带有CV支持的tensorflow。

git clone https://github.com/lexfridman/deepcars.git

下载镜像文件

cd tensorflow/

切换到你的notebook文件在本机的存储位置,也就是在创建docker 镜像时-v 后面的路径。

创建一个docker 镜像文件。 vim Dockerfile

FROM tensorflow/tensorflow

WORKDIR /notebooks

RUN apt-get update && apt-get install -y \ 
    pkg-config \
    python-dev \ 
    python-opencv \ 
    libopencv-dev \ 
    libav-tools  \ 
    libjpeg-dev \ 
    libpng-dev \ 
    libtiff-dev \ 
    libjasper-dev \ 
    python-numpy \ 
    python-pycurl \ 
    python-opencv

保存以上代码。

docker build -t deepcars  .
这一步生成了一个deepcars镜像,如果权限不够,前面加 sudo,一定要注意后面有一个'.'。

docker run -it -p 8888:8888 -p 6006:6006 -v /home/mysj/tensorflow:/notebooks deepcars
然后启动这个镜像。

可以在此镜像中使用opencv。

总结:

使用现有的集成工具,docke等远比自己纯手动安装来的快并且问题也要更少,而且不用费力的去设置路径和和安装一些底层依赖项,可以更好的把时间用在研究上,而不是用上一到两周的时间去解决安装过程中的问题。



版权声明:本文为zshluckydogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。