ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 环境搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 环境搭建相关的知识,希望对你有一定的参考价值。

1. 主机配置说明

在前几天,得知公司新采购了几台主机,所以我们组领导就向公司申请了一台回来,做数据分析。

服务器买的是惠普的主机,型号是:HP EliteDesk 800 G3。不算强劲,但用来做GPU的数据分析测试,也可以了。
具体参数:
CPU:i7-7700
内存: 32G
显卡: GTX 1070
硬盘: 256 ssd + 1T
自带 windows 10 64位 专业版系统

2. 更换系统

由于主机自带的是windows系统,但是我们想用 ubuntu 的系统,因此,只能先重装一下系统了。
具体的更换系统的过程就不写了,大家有需要的,可以参考一下这篇文章

要注意的是,不要关闭主板的 UEFI 引导,并且,你的 Ubuntu 系统引导盘,也就是U盘,需要用USB3.0的接口。因为,我测试的时候,用过普通 USB2.0 接口的,一直识别不了。同时,系统盘要制作成纯系统盘,里面出来系统软件之外,不要有其他文件。

3. 安装显卡驱动

新安装 ubuntu 18.04 的系统之后,先更新一下系统自带的源,我在自己使用的 CentOS 或者 Ubuntu 等linux 系列系统的时候,都习惯更换成阿里云的源,感觉速度和稳定都维护得比较好。

3.1 关闭系统默认的显卡驱动

如果你安装的是 ubuntu 带桌面图形界面的版本,那么它默认的显卡可能是nouveau,我们首先需要关闭它。具体方法:
打开禁用列表:

sudo vim  /etc/modprobe.d/blacklist.conf

在后面添加:

blacklist nouveau
options nouveau modeset=0

保存退出后,更新,重启系统:

sudo  update-initramfs -u

sudo reboot

重启后,你可能会发现屏幕没有了输出,甚至连登录界面也没有了。
先别慌,如果你使用 xshell 这类终端登录工具的话,这时你仍然能远程连接到系统的,前提是你已经在系统开启了 openssh-server,不过ubuntu 18 默认是没有开启openssh-server 的。
如果你没有用xshell 来连接,那么你可以按一下 ctrl + alt + F3 组合键,这时候,屏幕上又会切换到字符登录界面,熟悉的输入用户名,密码界面再次呈现。
这些都是因为,我们在上一步禁止了 nouveau 驱动,但是主机的独立显卡驱动还没有安装好。

3.2 安装nvidia 显卡驱动

在安装显卡驱动前,还需要再确认一下你系统自带的驱动有哪些:

[email protected]:~$ sudo ubuntu-drivers devices
[sudo] password for kkt: 
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001B81sv0000103Csd00006899bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP104 [GeForce GTX 1070]
driver   : nvidia-driver-396 - third-party free
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-415 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

可以,看出nvidia 支持的驱动版本有396,390,410,415 几个类型。不过这是我在添加显卡 ppa 源之后,才显示这么多个的,本来只有390,396两个版本。
怎么添加显卡 ppa 源:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

在添加 ppa 源的时候,可能会因为网络的原因,更新失败。我们需要留意提示信息,以为添加失败之后,会导致某些版本根本不能安装。
选择你希望安装的 nvidia 版本,我推荐安装 nvidia-driver-396 的版本,不求它最新,因为最新的版本,兼容性反而可能会差,甚至用不了。
安装nvidia 驱动:
重点: 先删除旧的 nvidia 驱动

sudo apt-get purge nvidia-*

sudo apt   install nvidia-driver-396

安装完成之后,重启主机 : sudo reboot
检查 nvidia 显卡状况:

sudo nvidia-smi

技术分享图片

如果你没有检测到nvidia显卡的状态,可能需要先挂载:

sudo  nvidia  modprobe nvidia

正常来说,如果你的主机有独立显卡,在安装完nvidia显卡驱动,重启就能在屏幕输出你熟悉的图形登录界面。

4. 安装 CUDA 9.0

首先,cuda 9.0 编译安装只支持gcc、g++ 6.0 及以下的版本,所以,如果系统已经默认安装了gcc 7.0 以上版本的,就需要将级了。

sudo apt-get install gcc-4.8

sudo apt-get install g++-4.8

切换到 /usr/bin 目录,对gcc7.0 进行降级,其实就是重新创建软连接:

ls  -l   gcc*  
sudo mv  gcc   gcc.bak
sudo ln -s  gcc-4.8  gcc

ls -l   g++*
sudo  mv  g++ g++.bak
sudo ln  -s  g++-4.8  g++

重新查看g++、gcc 的版本:

g++  -v
gcc   -v

确认gcc、g++ 的版本为4.8 就可以了。

下载CUDA 9.0

说明,现在先不要使用 cuda 9.1 或者 cuda 10,因为后面 tensorflow 对这些版本还没有支持。我一开始安装的也是cuda 9.1 以为版本越新越好。
cuda 各个版本的归档目录在这里,选择9.0 的版本:
技术分享图片

技术分享图片

注意,这里选择 ubuntu 16.04 的系统版本,对18.04 也适用。
cuda 9.0 共5个文件,包括4个patch都需要下载。下载完成之后,上传到服务器,进行安装,cuda安装的过程中,会提示要安装nvidia driver的,不要安装,因为我们之前已经安装过了。其他的选项可以随意:

sudo sh cuda_9.0.176_384.81_linux-run
sudo sh cuda_9.0.176.1_linux-run
sudo sh cuda_9.0.176.2_linux-run
sudo sh cuda_9.0.176.3_linux-run
sudo sh cuda_9.0.176.4_linux-run

同样,下载 cuDNN 进行安装。cuDNN 的版本选择 7.1.4,选择7.0的大多数情况会没有问题,但是当使用 tensorflow 进行卷积运算的时候,会提示初始化失败,原因是 tensorflow 1.9 里编译的支持的版本是 7.1.4 及以上。
下载 cuDNN 请在这里 ,注意,下载需要提供注册账号,自己搞一个邮箱注册一下。
技术分享图片

下载完成之后,上传到服务器,开始安装:

其实是先解压,然后将文件复制到cuda-9.0 的目录里。
sudo  tar  xvzf  cudnn-9.0-linux-x64-v7.1.tgz
解压之后,默认的目录名也叫 cuda.
然后,复制cuDNN的内容:
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*

至此,cuda 和 cudnn已经安装完毕。
但是,还需要修改一下环境变量:

修改 sudo  vim  ~/.bashrc,添加以下内容:

export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export  PATH=${CUDA_HOME}/bin:${PATH}

修改 sudo  vim  /etc/profile ,添加以下内容:
export PATH=/usr/local/cuda/bin:$PATH

继续修改:

sudo vim   /etc/ld.so.conf.d/cuda.conf

/usr/local/cuda/lib64

修改后,加载配置,但可能会提示:(/usr/local/cuda/lib64/libcudnn.so.7 不是符号链接?)

sudo   ldconfig
sudo  ln -sf /usr/local/cuda/lib64/libcudnn.so.7.1.4?   /usr/local/cuda/lib64/libcudnn.so.7
sudo ldconfig

最后,可以安装tensorflow 了

5. 安装 tensorflow

利用pip 的方式来安装:

sudo  pip3  install  tensorflow-gpu==1.9.0

没有pip3 的,自己安装一下:

sudo apt install  python3-pip

6. 总结

tensorflow 的版本兼容比较严格,这一点值得注意。

以上是关于ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度学习环境配置

ubuntu18.04+cuda9.0+cudnn7.1.4+caffe-ssd+anaconda2安装

ubuntu18.04+CUDA9.0+cuDNN7.1.4+tensorflow1.9 环境搭建

Ubuntu 18.04上CUDA 9.0cuDNN7.0及Tensorflow 1.8的安装

TensorFlow安装(Ubuntu18.04+Anaconda3+CUDA9.0+cuDNN7.1+TensorFlow1.8.0+Pycharm)

Ubuntu 下安装CUDA(安装:NVIDIA-384+CUDA9.0+cuDNN7.1)