啊哈,总是死在环境配置和安装上的我,为了升级TensorFlow一起来配置,不要慌,不要慌。
系统:Linux x86_64,Ubuntu16.04
显卡:GeForce GTX 1080Ti
我需要安装tensorflow 2.0 GPU版本的,先去官网寻瞅一下最低需求:
https://tensorflow.google.cn/install/source?hl=en#linux
再瞅瞅CUDA版本对应的NVIDIA驱动版本对照表:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
嘿,真不巧,原先版本都不够,好,那我就安吧~ 说一下安装顺序,上图红色是最低版本
安装版本:440.64
进入官网:https://www.geforce.cn/drivers,输入对应型号显卡,找一个喜欢的版本
下载之后是一个 .run
的文件,比如我是这样NVIDIA-Linux-x86_64-440.64.run
,放到桌面(推荐一个方便能找到的位置并记录文件名,要不关闭图形化界面后,屏幕黑乎乎一片,只有命令行,可是找不到)
卸载
# 卸载驱动
sudo apt-get remove --purge nvidia-*
# 删除安装的nvidia相关,不保留配置
sudo apt-get autoremove
# 删除依赖包
sudo apt-get install -f
# 重启
sudo reboot
检测卸载成功
终端输入
nvidia-smi
不显示信息则表示卸载完成
需要将Ubuntu自带的显卡驱动nouveau加入黑名单(禁止自带显卡驱动),还需要关闭图形界面。
禁用自带驱动nouveau
# gedit打开黑名单文件
sudo gedit /etc/modprobe.d/blacklist.conf
# 文件最后增加
blacklist nouveau
# 文件生效
sudo update-initramfs -u
检测是否禁用成功
终端输入
lsmod | grep nouveau
没有输出说明禁用成功
Advanced options for Ubuntu
;进入下一个页面选择 recovery mode
;recovery menu下选择root
,以root登录,再打开终端进行下一步安装。关闭图形化界面
# 二选一
sudo service lightdm stop
sudo /etc/init.d/lightdm stop
这时候屏幕又黑了,不要慌~
Alt+F6
,进入用户登录页面,登录用户,进入.run
的文件目录
安装
终端输入
sudo sh NVIDIA-Linux-x86_64-440.64.run
一步步yes安装
lsmod | grep nouveau
,没有输出说明禁用成功,否则再禁用nouveausudo service lightdm stop
开启图形化界面
# 二选一
sudo service lightdm start
sudo /etc/init.d/lightdm start
查看安装是否成功
终端输入nvidia-smi
出现对应驱动版本
安装版本:CUDA 10.0.130。两种安装方式:package manager安装和runfile安装, 好像package manager失败概率较大,选择runfile安装方式。
官网下载:https://developer.nvidia.com/cuda-10.0-download-archive,选择对应的版本,选择 runfile文件
下载后得到文件 cuda_10.0.130_410.48_linux.run
放到桌面(推荐一个方便能找到的位置并记录文件名)
用MD5 检验,如果序号不和,要重新下载。输入:md5sum cuda_10.0.130_410.48_linux.run
卸载旧版本,我的是9.0,就是在/usr/local/
文件夹下有对应表版本文件,比如cuda-9.0
# 卸载
sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl
# 删除相关文件
sudo rm -rf /usr/local/cuda-9.0/
进入TUI界面
建议在文本用户界面(TUI)模式,而不是图形用户界面(GUI),否则容易安装失败
具体操作:进入登录界面的时候,不要登录进入桌面,直接按Ctrl+Alt+F1
进入TUI模式,登录账户
关闭图形化界面
# 二选一
sudo service lightdm stop
sudo /etc/init.d/lightdm stop
安装
进入cuda_10.0.130_410.48_linux.run
的文件目录
终端输入:sudo sh cuda_10.0.130_410.48_linux.run
,接下来会出现
# 一路回车看条款
# 是否同意条款,必须同意才能继续安装
accept/decline/quit: accept
# 【注意】不要安装驱动,否则会与旧版本的显卡驱动冲突,导致重启循环登录,一定不要安装OpenGL
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
# 安装cuda10.0
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y
# 安装路径按回车
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]:
# 创建软连接
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
# 安装测试
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y
# 安装中
Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...
开启图形化界面
# 二选一
sudo service lightdm start
sudo /etc/init.d/lightdm start
进入GUI界面
同时按住Alt + ctrl +F7
,返回到图形化登录界面,输入密码登录。
如果登录成功,恭喜可能成功啦,当然也可能遇到问题
【问题】循环登录
【解决】可能是不小心安装了驱动,然后又不小心安装OpenGL,双显卡会冲突。
可以进入到TUI,在登录界面状态下,按Ctrl + Alt + f1
, 登录用户;
卸载安装的CUDA和驱动:
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
sudo rm -rf /usr/local/cuda-10.0/
sudo /usr/bin/nvidia-uninstall
重启,在TUI下重新安装NVIDIA驱动CUDA(我这么反复安了几次,不要慌,能安就卸)
设备验证Device Node Verification
终端输入:
ls /dev/nvidia*
如果出现,有类似这三个文件,就ok了
那么就是很成功的了
【问题】也有可能出现(我没有出现,可参考):
# 这样
ls: cannot access/dev/nvidia*: No such file or directory
# 或者这样
/dev/nvidia0 /dev/nvidiactl
【解决】首先要添加一个启动脚本,执行 sudo gedit /etc/rc.local
或者会用vi的也可sudo vi /etc/rc.local
这文件的第一行是#!/bin/sh -e
把-e
去掉(否则它不会加载这文本的内容),然后把下列内容复制进去,保存退出(第一行已经有了就不用复制了)。
#!/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
保存,重启确认
配置环境变量
终端输入:
sudo gedit /etc/profile
在打开的文件末尾,添加以下两行,并保存
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
文件生效,终端输入:
source /etc/profile
(好像说这个是临时生效的,退出终端就不生效了,建议在重启一下)
版本检查
检查环境变量是否成功,激动的时刻到了,验证驱动版本和CUDA Toolkit信息
# 验证驱动版本
cat /proc/driver/nvidia/version
# 验证CUDA Toolkit信息
nvcc -V
编译
进入home/用户名/NVIDIA_CUDA-10.0_Samples
目录下,终端输入make
,等待一阵,这样就编译成功
【问题】这样lglut找不到
/usr/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status
Makefile:308: recipe for target 'volumeRender' failed
【解决】安装这些再make
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libglut-dev or sudo apt-get install freeglut3-dev
【问题】没有gcc
【解决】安装gcc再make
sudo apt-get install gcc
运行二进制文件
进入NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release
然后在终端输入 :
./deviceQuery
出现pass就成功啦~
设备连接情况
同样目录下,终端输入:
./bandwidthTest
同样,出现pass就可以啦~
安装版本:cuDNN 7.6.3,这个轻松些,只要下载下来复制就行
官网下载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive
可能要登录账号啥的,反正就是自己想办法啊~~下载好之后是一个压缩包 cudnn-10.0-linux-x64-v7.6.3.30.tgz
解压
终端输入
tar -xvf cudnn-10.0-linux-x64-v7.6.3.30.tgz
会得到一系列文件
cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.6.3
cuda/lib64/libcudnn_static.a
复制文件
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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
# 我又复制了一遍到cuda-10.0中,应该是只复制到软连接cuda就可以
sudo cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
sudo cp cuda/include/* /usr/local/cuda-10.0/include/
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*
终端输入:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
版本:tensflow2.0 GPU版本
在Anaconda下创建虚拟环境,终端输入
conda create -n tf2 python=3.7
激活环境
source activate tf2
在tf2
环境下安装,官网给出
pip install tensorflow-gpu==2.0.0 # TensorFlow GPU版本
pip install tensorflow==2.0.0 # TensorFlow CPU版本
建议添加清华镜像,pip 都加上,会块很多
-i https://pypi.tuna.tsinghua.edu.cn/simple
终端输入:
pip install tensorflow-gpu==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装只要网速可以就行,还是很方便的。
在tf2环境下,输入python
测试
import tensorflow as tf
print(tf.__version__)
print('GPU', tf.test.is_gpu_available())
当然,也可以整个网络跑跑,速度很酸爽~
参考博客:
https://blog.csdn.net/lihe4151021/article/details/90237681
https://blog.csdn.net/qq_33200967/article/details/80689543
https://www.jianshu.com/p/e52b847970aa