每次重装系统都要重装一遍tensorflow的Gpu版本,里面有一些坑,每次都需要重新摸索一遍,特别浪费时间,这里把详细过程记录下来。
环境:ubuntu18.04LTS,python3.6.5
目标环境:cuda9.0 cuDNN7.0.5_for_cuda9.0 tensorflow
显卡:NVIDIA GeForce GTX 1070ti
流程:
- 安装NVIDIA显卡驱动
- 安装CUDA
- 降低gcc,g++版本
- 安装CUDNN
- 安装Anaconda
- 安装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检查发现驱动安装成功。
安装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))
在安装过程中,我碰到了一个有意思的问题,没办法在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*
发表回复