(亲测可用)Ubuntu 18.04+ NVIDIA显卡GeForce GTX 1070ti+CUDA9.0搭建tensorflow-gpu深度学习环境

 每次重装系统都要重装一遍tensorflow的Gpu版本,里面有一些坑,每次都需要重新摸索一遍,特别浪费时间,这里把详细过程记录下来。

环境:ubuntu18.04LTS,python3.6.5

目标环境:cuda9.0 cuDNN7.0.5_for_cuda9.0 tensorflow

显卡:NVIDIA GeForce GTX 1070ti

流程:

  1. 安装NVIDIA显卡驱动
  2. 安装CUDA
  3. 降低gcc,g++版本
  4. 安装CUDNN
  5. 安装Anaconda
  6. 安装Tensorflow-gpu

安装NVIDIA显卡驱动

方法1:直接安装

一条命令就可以完成安装

sudo ubuntu-drivers autoinstall

安装完成后,使用命令nvidia-smi就可以查看到显卡的信息了。我这边看到的是这个。

方法2:将驱动下载下来进行安装

如果方法1不成功,手动去NVIDIA官网下载驱动文件进行安装。https://www.nvidia.com/Download/index.aspx?lang=en-us

根据自己的显卡型号在页面上搜索匹配的驱动

我的显卡是GeForce GTX1070Ti,搜索的结果告诉我,应该安装410.78驱动

我查出来的显卡驱动型号

下载完成后,卸载之前安装的NVIDIA驱动:

sudo apt-get remove --purge nvidia*

接着为下载的NVIDIA驱动赋权,并使用驱动文件执行unistall操作:

sudo chmod +x *.run
sudo ./NVIDIA-Linux-x86_64-410.78.run --uninstall

接下来需要禁用nouveau,打开/etc/modprobe.d/blacklist.conf在文本最后一行添加blacklist nouveau

sudo vim /etc/modprobe.d/blacklist.conf

最后执行

sudo update-initramfs -u
sudo reboot

电脑重启之后执行下面的代码,没有输出,即说明安装成功

lsmod | grep nouveau

接下来终于可以安装下载的驱动文件啦,重启开机后,按Ctrl-Alt+F1,输入用户名和密码登录,进入驱动文件目录,为文件赋权。

sudo chmod a+x NVIDIA-Linux-x86_64-410.78.run

接下来进行安装:

sudo ./NVIDIA-Linux-x86_64-410.78.run -no-opengl-files -no-x-check -no-nouveau-check

上面三个参数的说明:

  • -no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
  • -no-x-check 安装驱动时不检查X服务
  • -no-nouveau-check 安装驱动时不检查nouveau 

这三个参数最好都加上,我一开始漏了后面两个参数,导致重启开机后屏幕分辨率异常,重启后,输入nvidia-smi检查发现驱动安装成功。

显示这个界面表示NVIDIA驱动安装成功

安装CUDA

NVIDIA网站下载文件cuda_9.0.176_384.81_linux.run

# 直接下载
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
sudo chmod 777 cuda_9.0.176_384.81_linux.run
sudo sh ./cuda_9.0.176_384.81_linux.run -toolkit -samples -override --no-opengl-libs -silent

这种方式有个好处,不需要在安装的过程中再干预,只需要等待安装完成就可以了。

降低gcc,g++版本

为了适应系统,需要讲gcc与g++降低版本

sudo apt install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50  

接着我们设置cuda环境变量

sudo gedit ~/.bashrc

在文本末添加以下内容

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda/extras/CPUTI/lib64
export CUDA_HOME=/usr/local/cuda-9.0/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME

保存文本后,更新系统环境变量

source ~/.bashrc

我们测试以下CUDA是否安装正常

cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

cd ../bandwidthTest
sudo make
./bandwidthTest

如果看到Result = PASS,则说明CUDA安装正常

安装CUDNN

注册NVIDIA账号并在NVIDIA网站上下载cuDNN包,注意,注册NVIDIA账号可能需要翻墙

红色框里的三个文件都要下载

注意,由于网站上面没有专门为Ubuntu18准备的包,这里我们下载为Ubuntu16准备的,经过测试,这三个文件在Ubuntu18系统下是可以正常使用的。

下载这三个文件,你会得到下面三个文件

下载的包使用下面的命令进行安装:

sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda9.0_amd64.deb

同样的,我们测试cudnn是否安装正常。

cd /usr/src/cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make
./mnistCUDNN

看到Test passed表示cudnn安装正常

到此为止,我们已经安装完了基本的配置,接下来可以安装tensorflow-gpu与Ananconda了

安装Anaconda

Anaconda网站上下载安装文件,我下载的是Anaconda3-5.0.1-Linux-x86_64.sh

bash Anaconda3-5.0.1-Linux-x86_64.sh

按照提示一路往下安装,注意最后讲Anaconda添加到环境变量中

安装Tensorflow-gpu

安装tensorflow-gpu非常简单

pip3 install --upgrade tensorflow-gpu

测试以下是否安装成功

import tensorflow as tf
hello = tf.constant('hello, Tensorflow!')
sess = tf.Session()
print(sess.run(hello))

这里可以看到显卡信息,表示tensorflow-gpu安装成功

在安装过程中,我碰到了一个有意思的问题,没办法在anaconda环境下使用tensorflow-gpu。这是怎么回事?我明明使用pip成功安装了tensorflow-gpu,我通过查conda list,发现tensorflow-gpu并没有成功安装在anaconda包的目录中。上网百度,发现了一个非常暴力直接的办法。

将安装在原生python3中的tensorflow-gpu包复制到Anaconda中来。

原生python3中的包安装在/usr/local/lib/python3.6/dist-packages/中,此处的文件大都是用pip安装的,也就是刚刚安装的tensorflow-gpu也位于此处,我将这个文件夹下的所有文件复制到~/anaconda3/lib/python3.6/site-packages/目录下,有重复的选择替换.

再回到python环境进行测试,发现成功导入了tensorflow-gpu。


卸载 Cuda和Cudnn

如果安装错误,可以考虑卸载重装Cuda和Cudnn

卸载cuda

sudo /usr/local/cuda-8.0/bin/uninstall_cuda*
sudo rm -rf /usr/local/cuda*

卸载cudnn

sudo apt remove cudnn*

The End


已发布

分类

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注