桌面版ubuntu 16.04从零开始配置tensorflow
ubuntu下安装tensorflow gpu版本可视为3步。
1 安装cuda
目前最新版本为cuda 9.1,tensorflow推荐版本为cuda9.0,故我们选择安装9.0版本,cuda 9.0下载
选择合适的安装方式,这里个人选用了runfile安装。
1.1 环境检查
确认有支持cuda的设备
lspci | grep -i nvidia
确认gcc已安装
gcc --version
确认内核头文件和包已安装
uname -r
如未安装可以通过如下命令安装
sudo apt-get install linux-headers-$(uname -r)
1.2 桌面、驱动等关闭
按下ctrl+alt+f1进入命令行模式,关闭桌面
sudo service lightdm stop
sudo init 3
关闭自带驱动重新安装显卡驱动
sudo /etc/modprobe.d/blacklist-nouveau.conf
在上述配置文件中写入
blacklist nouveau
options nouveau modeset=0
保存完后输入
sudo update-initramfs -u
这里有一个大坑,预警
在完成关闭nouveau后,输入
$ lsmod | grep nouveau
如果没有输出,恭喜你禁用成功,万一有输出,重启,不要使用图形界面,在登录的时候切换到命令行的状态(ctrl + alt + f1)。重复上述操作,没有输出后即为禁用成功,才可进行后续操作,不然可能会造成无限卡登录的情况。
至此,前序准备工作完成。运行以下命令安装cuda,由于网络下载的runfile权限问题,可能不能自动补全,需要手输一下,用户协议一路接受即可,cuda sample可以不装,节约空间。
sudo sh cuda_<version>_linux.run
1.3 环境检查与配置
执行
ls /dev/nvidia*
输出如果包含/dev/nvidia-uvm,则前序步骤完全完成,如果不包含,只有
/dev/nvidia0 /dev/nvidia-modeset /dev/nvidiactl
三个文件中的部分或所有文件,则需添加一个启动脚本
sudo vim /etc/rc.local
如果你是第一次打开这个文件,它应该是空的(除了一行又一行的#注释项外)。这文件的第一行是
#!/bin/sh -e
把-e去掉(这步很重要,否则它不会加载这文本的内容)
然后把下列内容除了#!/bin/bash外复制到其中,在最后的exit 0之前,保存退出。
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
将cuda加入环境
sudo vim /etc/profile
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
安装完后输入以下命令重启桌面,然后重启电脑。
sudo service lightdm start
reboot
验证驱动版本
cat /proc/driver/nvidia/version
验证CUDA Toolkit
nvcc -V
2 安装cuDNN
下载对应cuda版本的cuDNN即可,只需下载runtime library。
cuDNN runtime library在实际使用中报了奇怪的错,改为使用tar安装,更为灵活。
cuDNN下载
2.1 检查环境
如果是连续操作应该不会有任何问题,可以跳过这一小节,如果和cuda配置时间相差较多,可能会存在显卡驱动版本过老的问题,需要更新,具体版本要求等参考[cuDNN安装说明](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)
2.2 cuDNN安装
进入cuDNN tar的下载文件夹,输入
tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
3 tensorflow gpu安装
tensoflow官网的安装中写了cuda_command_tools的安装,但是在安装cuda的时候,这个应该是已经被一起安装进来了,所以并不需要按照他给定的方法进行安装,直接将环境写入路径即可,
sudo vim /etc/profile
在最后写入
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda/extras/CUPTI/lib64
为了方便,这里个人使用了anaconda代替了系统自带的python版本,并且由于tensorflow是常用工具,并不准备按照官网的教程将其安装入虚环境,首先检查pip
pip -V
确认pip是anaconda的pip后
pip install tensorflow-gpu
由于之前配置完cuDNN之后,我们直接安装的tensorflow,cuDNN的环境还没生效,我们需要重启电脑,重启后即可验证tensorflow是否成功安装。
在检测时候会有warning,无视就好了,能输出结果就行了,等numpy更新看能否解决。