Ubuntu16.04安装配置GPU版TensorFlow

基本工作

  1. 更新系统(不更新好像也行)
1
2
3
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
  1. 安装依赖
1
2
# 先执行uname -r,查看结果,比如4.4.0-45-generic,然后再执行
sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-4.4.0-45-generic(此处记得替换)
  1. 禁用nouveau内核
1
2
3
4
5
6
7
8
9
10
11
12
sudo vim /etc/modprobe.d/blacklist.conf 

# 添加如下内容:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

# 然后运行以下命令即可:
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u

重启之后即可禁用nouveau,可以运行$ lsmod | grep nouveau检查是否禁用成功,如果运行后没有任何输出,则代表禁用成功。

安装显卡驱动

首先lspci查看自己的GPU显卡版本,然后到Nvidia官方网站下载对应版本的显卡驱动,之后执行命令sudo service lightdm stop,通过Ctrl+Alt+F1进入init3(文本模式),输入账号密码进行安装,执行以下命令:

1
2
sudo chmod +x NVIDIA-Linux-x86_64-375.51.run
sudo ./NVIDIA-Linux-x86_64-375.51.run -no-x-check -no-nouveau-check -no-opengl-files

除了dkms和open-gl选no,其他一路yes和回车就搞定了。

然后sudo service lightdm start,可以通过sudo nvidia-xconfig -query-gpu-infonvidia-smi查看GPU信息。

安装CUDA

CUDA官网下载,这里下载的是8.0版本CUDA,然后执行命令安装:

1
2
sudo chmod +x cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run

除了OpenGL选no,还有Nvidia选no(因为已经装过了,不然会冲突),其他一路yes和回车就搞定了。如果报错比如X server is running或者unable to locate the kernel的问题,确保之前提到的准备工作全部做好,绝对不会有问题。

安装好CUDA之后,添加环境变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo vim /etc/profile 

# 添加内容如下:
PATH=/usr/local/cuda-8.0/bin:$PATH
export PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/lib

# 保存退出,使之立即生效
source /etc/profile

# 添加lib库路径
sudo vim /etc/ld.so.conf.d/cuda.conf

# 添加内容如下:
/usr/local/cuda-8.0/lib64

# 保存退出,使之立即生效
sudo ldconfig

# 验证安装结果,有服务器信息和cuda版本号即可
nvcc -V

安装cuDNN

cuDNN官网上下载,需要注册,必须下载cuDNN v5.1 Library for Linux版本,执行以下命令:

1
2
3
4
5
6
7
8
sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

然后可以测试CUDA等是否成功配置,编译运行某个sample:

1
2
3
4
5
6
cd /usr/local/cuda/samples
sudo make all -j4

# 全部编译完成之后
cd /usr/local/cuda/samples/bin/x86_64/linux/release
./deviceQuery # 如果显示有可用的GPU即为成功

安装anaconda

下载anaconda,执行命令bash Anaconda3-4.3.1-Linux-x86_64.sh ,然后一路yes即可。

安装TensorFlow**

打开一个新的terminal,选择用conda创建独立环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
conda create -n tensor_test python==3.5
source activate tensor_test

# 直接用pip安装
pip install tensorflow-gpu==1.2

# 进入python环境测试
import tensorflow as tf

# 如下可以查看tensorflow的版本号和安装路径
tf.__version__
tf.__path__

# 如果报ImportError:libcudnn.so.5 cannot open shared object file: No such file or directory, 直接暴力解决
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so /usr/local/lib/libcudnn.so && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5.1.5 /usr/local/lib/libcudnn.so.5.1.5 && sudo ldconfig

一定注意版本,tensorflow-gpu最新版本为1.4,但是会报libcudnn.so.6:cannot open sharedobject file: No such file or directory错误,说明1.4已经开始去找cudnn6了,但我们这是5.1,理论上可以换用cudnn6,算了,还是做一个没有梦想的咸鱼吧,能用就行,换用tensorflow-gpu 1.2版本完美解决。

重重困难,还得靠自己解决。(Fuck the Christmas!!!)

🐶 ~怕是要给老板下跪了哦~ 🐶