这篇文章将讲述Ubuntu18.04+RTX2080+TensorFlow等深度学习框架+cuda10.0+cuDNN7.6的深度学习环境配置过程。这里Linux系统为Ubuntu 18.04.2 LTS系统,最新的稳定发布版, 兼容cuda10.0等(关于Ubuntu18.04.2LTS系统的详细安装过程,可以参考我的另一篇文章,文末有链接);本文也将简单介绍对应于RTX2080显卡的驱动安装;本文环境详细配置为:ubuntu18.04.2LTS+nvidia-driver-410+cuda10.0+cudnn7.3.2+tensorflow1.14.0+pytorch1.1+mxnet1.5。
tensorflow深度学习框架真的是一个大坑,环境特别复杂的时候,可以考虑不用pip安装,用docker或conda安装吧,但需要一定的能力。tensorflow暂时用起来也很大问题,所以这篇文章中的各个版本对应,在我这里是成功的,可以借鉴,关于一些安装中的坑也在文中讲得差不多了。
①Ubuntu 18.04.2 LTS系统;
②RTX2080显卡(及对应驱动nvidia-driver-410);
③TensorFlow1.14.0相关安装文件;
④cuda10.0相关安装文件;
⑤cuDNN7.3.2相关安装文件;
更新数据源为国内源,可加速安装包速度。具体操作为:
#进入更新源文件所在目录
cd /etc/apt/
#备份更新源源文件
sudo cp -p sources.list sources.list.bak
#编辑更新源文件
sudo vi sources.list #或sudo gedit sources.list
打开文件后,写入下面的国内更新源码:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
保存退出后,更新apt-get源和软件:
sudo apt-get update
sudo apt-get upgrade
进入安装好的Ubuntu系统,先把显卡驱动安装上吧,看起来比较舒服哈哈哈。
先说一点,很多人的教程中说要关闭lightdm和禁用Nouveau驱动,但是我没做这些操作,因为我也不懂是干嘛用的,我没操作这些显卡驱动依旧安装成功,所以我觉得这些并不是必要的,新手可以忽略。
①懒人操作方法一:软件和更新(Softwares and Updaters,好像是叫这个)→附加驱动(Additional Drivers)→选择最新的驱动→apply changes,然后就会自动下载安装驱动了(我安装的是nvidia-driver-410,是兼容RTX2080的)。
但有个问题是有些显卡比较新,比如我这里的20系显卡,Ubuntu18.04.2LTS识别不出来可能,所以打开软件和更新管理器时,并没检测出显卡驱动,这时需要使用PPA仓库进行安装,将PPA仓库加到系统并更新系统源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
操作完后可以在软件和更新管理器里下载安装,也可以用②懒人操作方法二:终端输入安装:
ubuntu-drivers devices #Ubuntu推荐安装的驱动
sudo ubuntu-drivers autoinstall
#或sudo apt-get install nvidia-driver-xxx
③相对麻烦的方法三:手动安装:
不那么推荐的一种方法,一个比较麻烦,另一个不同电脑不同环境可能存在一些问题(常见在笔记本),所以安装的时候可能需要添加一些参数(这里没给了,自行查阅)。在NVIDIA官网 https://www.geforce.cn/drivers 上安装自己显卡对应的驱动,然后进入到安装文件所在目录,然后在终端给安装文件增加权限后执行安装:
cd ~/Downloads
sudo chmod a+x NVIDIA-Linux-x86_64-430.26.run
sudo sh ./NVIDIA-Linux-x86_64-430.26.run
按这三种方法基本可以解决显卡驱动安装问题啦,注意对于比较新的显卡,系统检测不出显卡驱动时,就先安装PPA仓库,就可以检测到了,然后再按这三种方法安装就好了。最后,安装完了之后先重启系统(reboot),再检测下是否安装成功:
nvidia-setting
或
nvidia-smi
终端输入其一,有输出(这里没截图了)的话就说明安装成功了。
先说下Python环境吧,Ubuntu18.04.2LTS更新apt-get后,是自带3.6+版本的Python的,在本文是通过anaconda安装了Python3.7+版本,作为像我这样小白算是比较适合的一种方法了,环境的管理较为方便吧。
在Anaconda官网 https://www.anaconda.com/distribution/ 下载最新的python3.7版本的Anaconda,下载的是.sh格式的安装文件:Anaconda3-2019.03-Linux-x86_64.sh。
然后就是安装了, 安装文件在Linux系统中默认下载在/home/<用户名>/Downloads下,进入这个目录,安装即可:
cd ~/Downloads #或cd /home/<用户名>/Downloads
sudo bash Anaconda3-2019.03-Linux-x86_64.sh
然后进入安装,安装过程选yes就可以了,中间有个步骤是选安装目录,自行选择按默认目录/home/用户名/ananconda3,还是自己想要的目录;下一个步骤是选是否配置anaconda3的环境变量,默认no,我选了yes,方便,选了no的话可以在~/.bashrc文件或/etc/profile文件中输出环境变量;最后就可以结束了,安装完后重启下,终端输入python即可看python3环境是否安装成功(关于python2与python3共存时的默认环境怎么设置,就自行查阅资料吧,我这里新系统只有python3了):
python
#如果安装成功,输出应该是类似下面这些的:
Python 3.7.3 (default, Jul 10 2019, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
#输入exit()即可退出python
到这里,已经完成三分之一了,第一阶段结束,进入第二阶段的cuda和cuDNN
安装。
(1)下载
先说明TensorFlow1.14.0貌似不支持cuda10.1,但是支持cuda10.0版本的(有资料说到tensorflow1.13.1版本好像是不支持cuda10.0的,当然我试过,用是可以用,没遇到什么大问题),依旧在官网 https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal 下载deb(local)文件就好了。
注:我也是后面才发现,还需要注意的一点就是,官网下载的cuda安装后,如果不是对应deb包中的显卡驱动版本,会先卸载系统已有的显卡驱动,然后安装cuda包对应的显卡驱动的,比如系统安装了nvidia-430,但是cuda10.0对应的是410(cuda10.1对应418),那么就会向前面说的那样了,所有步骤在安装cuda*.deb的时候自动安装的。当然也有办法(见tensorflow官方安装指南中的Gpu Support部分的安装)可以安装最新版本驱动的同时,安装cuda低版本,当然可能会在某些情况出现情况,因为这样安装的话结果是cuda的runtime版本跟driver版本是不一致的,所以请慎重考虑吧。
(2)安装和环境配置
cuda10.0版本可以按上面的来下载,最下面的红色方框是下载后的官方安装执行指令,先进入安装文件所在目录就可以了:
sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-/7fa2af80.pub #这里面的对应自己的cuda版本,不过执行完第一步之后,终端中会有提示,复制即可
sudo apt-get update
sudo apt-get install cuda #这里也可以添加参数--no-install-recommends,可以减少一些空间和安装时间吧
sudo gedit ~/.bashrc
#在最下面添加下面的内容
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
#保存后运行下这个文件
source ~/.bashrc
(3)测试
安装完后,先reboot重启下系统,然后在终端输入nvidia-smi中可以查看cuda版本,或者执行下面的代码:
cat /usr/local/cuda/version.txt
或
nvcc -V #报错时,别按终端推荐的方法安装,百度一下把,应该是要进到cuda目录里有个文件可以安装的
或
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
(1)下载
这里有一个大坑,就是有删除线的这个观点是错误的:cuDNN的版本选最新的就好了 ,这也是我弄了好几天,试了很多cudnn版本才试出来的,在运行tensorflow-slim框架时侯,很容易出现类似"cuDNN is not initialized"这样的报错,(当然这样的报错也有代码解决办法,就是设置GPU占用相关的东西,不过要每次都这样弄,我觉得麻烦,也没有彻底解决问题),我弄了很久,不管从cuDNN的安装方式还是cuDNN的环境变量,都没弄成功,最后把cuDNN的版本降到了7.3.2版本,最后终于是成功了,如果你们出错了之后,可以试试降低cuDNN版本。还有一点是要对应cuda的版本,官方网站:https://developer.nvidia.com/rdp/cudnn-download ,要注意的就是下载前要注册登录(不想注册可以在这篇文章下面的网盘地址中下载,所有文件都有),具体如图(请忽略里面的版本,选择适合自己的,在tensorflow现在框架环境极为复杂,且容易出错的情况下,可以下选择下低版本的cuDNN):
(2)安装
(忽略版本,首先选择cuDNN7.3)安装也很简单啦,像之前那样,进入安装文件所在目录,按下面的顺序执行指令安装就可以了:
方法一(较为推荐,原因安装文件最后是复制到cuda目录里面的,不用额外设置环境变量,还有就是我这个小白不懂deb包安装后cudnn的目录在哪(查过,很乱),以及是否需要设置环境变量):
#官方安装指南
tar -xzvf cudnn-10.0-linux-x64-v7.3.1.20.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*
方法二:(三个deb包安装,有资料说不从源码编译框架的话,安装第一个足够了,后面两个个人喜好吧)
sudo dpkg -i libcudnn7_7.6.1.34-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.1.34-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.1.34-1+cuda10.0_amd64.deb
(3)测试
方法一安装的测试:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
方法二安装的测试:
#下面的用户名是对应自己系统设置的
cp -r /usr/src/cudnn_samples_v7/ /home/<用户名>/
cd /home/<用户名>/cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make #一定要sudo的权限才会成功运行
./mnistCUDNN #有输出就说明安装成功了,输出信息中可以看cuDNN的版本号及一些信息
到这里,第二阶段的准备就结束了,剩下的就是深度学习框架的安装啦。终于快要结束了~~~~~~
说明一下,暂时tensorflow1.12-1.14版本都可以安装,出问题再更改版本,暂时2.0是beta测试版,不推荐。
(1)下载
第一种下载方法:阿里云镜像网站: http://mirrors.aliyun.com/pypi/simple/tensorflow-gpu/ ,这里各种版本各种各样的选择都有,我就是这里下载的,所以我的安装文件也是对应这个的,看下图这个文件:
第二种下载方法: Github: https://github.com/tensorflow/tensorflow/tree/v1.14.0 ,里面都基本是对应python3.6或以下的,我没试过,不过tensorflow官网中安装指南pip部分上有对应python3.7的,Github下面也有安装和测试说明等等详细信息。
(2)安装
好了,下载完之后,就是激动人心的安装时刻了,这里先更新下pip的源(关于pip安装跟apt-get安装的区别,可以参考文献:https://blog.csdn.net/oppo62258801/article/details/78834519 ),前面没有用到pip安装就没说,这里用的是清华的源(5分钟同步官网一次),直接看指令:
#安装pip3
sudo apt-get install python3-pip
#升级更新pip3
sudo pip install --upgrade pip
#查看pip3版本
pip -V
pip3 -V
#最好两个都看下,如果pip与pip3路径不对,按下面的设置
gedit ~/.bashrc
#添加的内容
alias pip=/home/kite/ComputerVision/anaconda3/bin/pip
alias pip3=/home/kite/ComputerVision/anaconda3/bin/pip
#保存,更新
source ~/.bashrc
###pip源更换为国内源###
#根目录创建.pip文件夹
mkdir ~/.pip
#创建文件pip.conf
vi .pip/pip.conf #或gedit指令
#更换源信息
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn #可有可无
然后是TensorFlow的安装:
pip3 install tensorflow_gpu-1.13.1-cp37-cp37m-manylinux1_x86_64.whl
#pip install --upgrade numpy
Amazon选择的深度学习库,官方网址:http://mxnet.incubator.apache.org/versions/master/install/index.html?platform=Linux&language=Python&processor=GPU
先安装个依赖库,然后再安装,直接看指令:
sudo apt-get install libgfortran3
pip3 install mxnet-cu100mkl
PyTorch官方网址 :https://pytorch.org/get-started/locally/ ,提供了安装指令说明:
pip3 install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp37-cp37m-linux_x86_64.whl
pip3 install https://download.pytorch.org/whl/cu100/torchvision-0.3.0-cp37-cp37m-linux_x86_64.whl
好了,所有主流深度学习框架已经安装完毕,最后测试下安装是否成功吧。
打开终端,输入python,然后:
#TensorFlow测试
import tensorflow as tf
print(tf.__version__)
greeting = tf.constant("Hello! Google TensorFlow")
sess = tf.Session()
result = sess.run(greeting)
print(result)
sess.close
#Mxnet测试
import mxnet as mx
a = mx.nd.ones((2, 3))
b = a * 2 + 1
b.asnumpy()
#PyTorch测试
import torch
x = torch.rand(5, 3)
print(x)
torch.cuda.is_available()
好了,终于码完了,最后再唠叨几句,要安装什么样的深度学习框架,要实现确定各安装文件的版本是否正确,一定要注意Ubuntu版本,显卡驱动,python,cuda/cuDNN版本,深度学习框架版本之间的对应关系,一定要准确,不然就会出现不兼容,安装不成功的问题。
参考文献:
框架安装指南:
https://blog.csdn.net/TianyangQiao/article/details/88284025
https://blog.csdn.net/worrenhale/article/details/89032610
https://blog.csdn.net/weixin_44095128/article/details/88664928
显卡驱动:
https://blog.csdn.net/wf19930209/article/details/81877822#comments
apt-get和pip源更换:
https://blog.csdn.net/sufu1065/article/details/80314928
https://blog.csdn.net/oppo62258801/article/details/78834519