简单快捷搭建深度学习平台
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等远比自己纯手动安装来的快并且问题也要更少,而且不用费力的去设置路径和和安装一些底层依赖项,可以更好的把时间用在研究上,而不是用上一到两周的时间去解决安装过程中的问题。