首先要明白自己的需求,自己需要跑的代码是tensorflow的什么版本的,因为不同的tensorflow版本需要不同版本的python3支持,需要不同的cuda,配套的cudnn和显卡驱动也不同。
所以首先确定tensorflow版本,然后根据tensorflow版本来确定cuda版本,由cuda版本确定显卡驱动版本和cudnn版本(严格来讲,cuda和显卡驱动不是一一对应的,最新的显卡驱动很多时候是可以向下兼容cuda的,但是不总成立,比如最新的450的驱动标配cuda版本是11.0,就不向下兼容,安装cuda10就不识别。cudnn和cuda也不是一一对应的)。从下表中可见我要想装tensorflow-gpu为1.13版,那么选择的CUDA版本就是CUDA10.0版。
从CUDA版本和驱动的对应表汇中选择合适的显卡驱动,CUDA10.0要求显卡驱动版本大于410.48。
NVIDIA历史版本驱动下载链接
进入链接后选择自己计算机对应的选项,搜索过后,选择版本大于410.48的驱动版本进行下载:Linux x64 (AMD64/EM64T) Display Driver,版本440.10,这个版本初始对应CUDA版就是CUDA10的,点进进行下载(.run格式)。
根据CUDA版本选择对应的cudnn。cuda与cudnn关系查看及cudnn下载。点进链接后,发现对应CUDA10的cudnn版本由cudnn7.6.5,cudnn7.6.3,等等,很多个版本,本文选择cudnn7.3。
至此我们已经确定了要安装各个软件的版本了,分别是Tenserflow_gpu-1.13.0,CUDA10.0,440.10版本的显卡驱动,cudnn7.3。
cudnn的下载需要先注册登录NVIDIA的账号,需要下载4个文件,按从上到下的顺序分别是1个cudnn的安装文件和cudnn的3个测试文件(点击查看大图),文件类型分别是1个.tgz,3个.deb。
CUDA各个版本官方下载链接,在点击对应链接进入下载界面后,根据自身计算机设置进行选项选择,最后的installer Type随便选,那个能下下那个,最下面是安装步骤。
到这里,我们已经下载好显卡驱动(440.10版)、CUDA安装软件(10.0版)和cudnn相关组件(7.3版),下载的默认路径是home/usr_name/Downloads(下载),usr_name是账户名字。
使用权限命令给3个安装包添加运行权限,不添加的话运行时会产生无权限的报错。filename是被添加权限的运行文件的名字(墙裂建议下载好安装包后把安装包重命名一下,以简化安装时候敲进去的字符数量,例如可把CUDA的安装包重命名为cuda10.run,驱动安装包改为NVIDIA440.run,cudnn安装包改为cudnn7.3.tgz)。
sudo chmod +x filename
filename是安装包的全称。
下面开始安装。
为了安装的顺利进行,这里简要介绍下本文中所涉及的主要ubuntu命令,大多与文件操作有关。
获取管理员权限(需要管理员密码):sudo
,添加到待执行代码前面,并用空格做间隔,例如sudo apt-get install python3==3.6
意思就是以管理员权限安装3.6版本的python3。
展示当前文件夹中所有条目:ls
,输入后终端中列出当前文件夹所有文件名字,并根据格式不同给予不同颜色标注。如蓝色是文件夹,绿色是可执行文件。
前往某个文件夹:cd
,例如前往当前文件夹下的子文件夹Downloads的代码为:cd Downloads
或者前往某个绝对路径:cd /home/qt/Downloads
或者前往上级目录:cd ..
展示当前文件夹中所有文件的权限:ll
红框中是我们关心的管理员拥有的文件权限,d是文件列表权限(只有文件夹才有这个权限),r是读取权限,w是写入权限,x是执行权限。Linux里下载的文件都默认没有执行权限x。权限可以添加和删除,来保护文件不被损坏。
添加权限:chmod
,例如chmod +x cuda10.run
,就是给文件cuda10.run添加运行权限,可以看到第一个红框中,没有选权限x,文件颜色为白色。chmod +x cuda10.run
添加运行权限后,第二个红框中有了权限x,使得文件可以被执行,文件颜色也变成了绿色。加号+替换为减号-就是删除权限,cuda.run换成其他文件名字就可以给其他文件增删权限。
删除:rm
,删除一个文件/文件夹就在那个文件夹下的终端中输入rm -rf filename
(注意,此删除恢复及其困难,谨慎使用。若一不小心删除了重要文件想恢复,请不要在磁盘上写入任何文件,否则文件永远丢失无法找回),filename是文件全称。
安装:apt-get install application_name
,例如sudo apt-get install python3==3.6
意思就是以管理员权限安装3.6版本的python3。
注意:在输入命令后,在命令运行期间关闭终端,会导致进程池锁定,无法运行其他命令,所以请尽量等待命令运行结束显示如下对话时再关闭终端(运行软件除外),比如安装程序安装一半不想继续装了,请坚持到下个安装检查节点再退出,或者坚持到安装完毕再卸载。真锁住了,就把报错信息粘贴到百度搜索解决(删除两个文件就好了)
在命令行输入代码来删除系统原有驱动
sudo apt-get remove --purge nvidia*
然后再禁用系统自带的驱动
sudo gedit /etc/modprobe.d/blacklist.conf
在打开的文本最后添加两行代码
blacklist nouveau
option nouveau modeset=0
保存后退出
执行
sudo update-initramfs -u
重启系统后,执行
lsmod | grep nouveau
如果没有任何输出的化说明禁用成功。
重启系统,在启动过程中按Ctrl + Alt +F1(F1~F6均可)到x-server(如果进不去,在终端输入代码sudo apt install lightdm
,并在弹出框中选择lightdm,后再次尝试), Ctrl+Alt+F7是返回,登录账号密码后,在命令行输入命令
sudo service lightdm stop
要是提示如果提示:unit lightdm.service not loaded
则先安装LightDm:
sudo apt install lightdm
安装完毕后跳出一个界面,选择lightdm
,再
sudo service lightdm stop
关闭图形界面。然后使用cd命令到NVIDIA显卡驱动程序所在文件夹,输入命令
sudo ./filename.run
来运行安装程序,一路continue就完了。安装好以后,再打开图形界面
sudo service lightdm start
然后校验驱动安装版本,在terminal中输入命令
nvidia-smi
来查看是否装上NVIDIA显卡驱动,若安装成功,则会显示版本信息,查看其版本以及其标配的CUDA版本。(图是已经全部装好的时候拍的,在X-server界面和这个差不多)
nvidia-smi里面展示的CUDA Version只是该显卡驱动版本标配CUDA版本,和系统内的实际CUDA无关。
在CUDA10.0安装包所在目录(通常是home下的Downloads文件夹)右键点击,选择在终端中打开(open in terminal),在终端中输入命令
sudo ./cuda10.run
稍候片刻以后时很长的安装须知之类的东西,按住Enter不动,到最下面输入accept。然后会问你一些安装的问题,需要注意的就是第一问题选n,这是问是否要安装NVIDIA显卡驱动的,我们已经安装过了,所以不再装装了。还有一个是问是否安装OpenGL的,也要选n。其他的都选y,或者按Enter过。对话类似于下图,不过下图没有关于openGL的安装对话,因为我这里已经安装完了,所以就在网上找的图
安装好以后还要添加环境变量。
在终端中输入
sudo gedit ~/.bashrc
打开.bashrc文件,在文件的最后,加入下面3行代码
#export LD_LIBRARY_PATH=$LDLIBRARY_PATH:/usr/local/cuda-10.0/lib64
#export PATH=$PATH:/usr/local/cuda-10.0/bin
#export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
保存文件后,关闭文件
在命令行输入
source ~/.bashrc
来执行更改后的文件。
终端输入下面代码来检验CUDA是否安装成功,以及其版本
nvcc -V
如果安装成功会显示如下信息,表明安装成功。可以看到安装的CUDA版本为10.0
如果显示nvcc未安装,就先检查下环境变量是否添加上,终端输入
env
查看所有的环境变量。若环境变量添加上了,那就要把CUDA文件删除并重新安装。
CUDA安装的默认路径是
/usr/local/cuda-10.0
进入方法是点击文件的其他位置,点进去后选择Computer,就进入到根目录里了。
根据路径打开cuda-10.0的文明夹后,找到文件bin,查找其中有没有一个文件名为:uninstall_cuda_10.0.pl,这是一个卸载脚本,运行它,就能够完成cuda的卸载。
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
卸载完以后会残留一些空文件夹,在/usr/loca
文件夹下右键打开终端,输入命令
sudo rm -rf cuda-10.0
便可完全删除已经安装的CUDA。
要是没有找到卸载脚本uninstall_cuda_10.0.pl,那就在终端中输入命令
sudo apt-get remove cuda*
sudo apt-get remove --purge cuda*
sudo apt-get update
然后再到路径/usr/loca
下右键打开终端,输入
sudo rm -rf cuda-10.0
就能完全卸载已经安装的CUDA。
cudnn的安装是插入式的,只要把对应的文件复制粘贴到对应CUDA的文件夹中即可,不涉及到文件替换。
卸载cudnn也很简单,把对应的cudnn的文件删除掉就好。
在home下的Downloads文件夹下找到cudnn7.3的压缩包,双击打开,提取文件到home目录下,home目录下找到目标文件夹(名字为:cuda),进入文件夹打开终端,为所有的文件夹下的文件(包括子文件夹中的文件)增加执行权限(+x)。
增加完权限以后在终端中输入下列命令,注意留意空格
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp 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*
前两行代码分别是将文件复制到另外一个文件夹里,后面两行是添加权限。
添加完成后,查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
看到下图说明安装成功。
下面验证cudnn是否安装成功:
在之前下载cudnn的时候一共下载了4个带cudnn字样的文件,安装cudnn的时候只用了一个,还有三个没用的到的文件就是在这里作为验证可以使用的。
在那三个文件所在文件夹右键打开终端,给这三个文件添加权限命令
chmod +x filename1
chmod +x filename2
chmod +x filename3
然后执行这三个文件
sudo dpkg -i filename1
sudo dpkg -i filename2
sudo dpkg -i filename3
(若有报错,先检查文件名是否输入对了,然后更换安装次序,里面有个文件要最先安装,最后还没解决就百度吧)
安装好以后会在/usr/src/cudnn_samples_v7
里出现有一些cudnn的例子
在这个路径下打开终端,输入代码
make clean && make
./mnistCUDNN
要是出现如下结果,说明cudnn1安装成功
可以看到测试通过。
首先在anaconda3网站上下载安装包,选择Linux x86的installer
注意,这个版本的Anaconda3带的是3.8版本的python3,高于我们要装的tensorflow-gpu-1.13版本的要求,要求是2.7或3.3-3.6。所以安装好Anaconda3以后还需要把python版本降到3.6。同样的也要查看gcc版本是否符合tensorflow-gpu-1.13的要求(低于4.8)。
下载好安装包以后,在Downloads文件夹右键打开终端,给安装包添加执行权限后运行。
按照提示进行安装。安装完成后在命令行输入命令来查看Anaconda环境是否安装成功
python3
注意python3的版本号是3.8.3,GCC版本号是7.3.0,以及Anaconda字样,说明已经安装成功,Anaconda3的python3版本成为系统的python环境版本。
首先给python3和gcc降版本。
给Anaconda3添加权限
sudo chmod -R o+w anaconda3路径
然后输入命令
conda install python=3.6
根据引导完成安装(有时候因为网络不好会报错,多试几次就好了)
首先安装gcc4.8
sudo apt-get install -y gcc-4.8
sudo apt-get install -y g++-4.8
然后移除以前的gcc,打开根目录下的bin文件夹,右键打开终端。
sudo rm gcc
sudo rm g++
链接新下载的gcc4.8
sudo ln -s gcc-4.8 gcc
sudo ln -s g++-4.8 g++
最后查看是否安装成功
gcc -v
显示如下信息说明安装已经成功,版本为4.8.5
最后通过pip命令安装1.13版本的tensorflow-gpu
pip3 install tensorflow-gpu==1.13
安装完成后,在终端打开python,输入下列代码,验证tensorflow和GPU是否能够正常工作
python
import tensorflow as tf
print(tf.test.is_gpu_available())
返会结果为Ture,说明一切工作顺利。
到这里整个安装过程就结束了,感谢实验室师兄给予的支持和信任。