史上最最最详尽的CentOS 7深度学习GPU环境搭建!收藏干货

Posted IT翰麟院

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了史上最最最详尽的CentOS 7深度学习GPU环境搭建!收藏干货相关的知识,希望对你有一定的参考价值。


史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

CentOS 7 GPU环境搭建


传递光亮有两种方式:成为一支蜡烛或当一面镜子。——伊迪丝·沃顿


There are two ways of spreading light: to be the candle or the mirror that reflects it.——Edith Wharto


史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


史上最最最详尽的CentOS7 深度学习GPU环境搭建来了!为了让更多的人上手深度学习兴我中华科研,捍我华夏太平,小叮当决定从一个完全pure小白的视角来为大家分享,希望能对大家有所帮助。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


一、明确需求目标


首先要看清当今时代趋势,Tensorflow2.x和Pytorch将在未来5年持续引领机器学习的黄金框架时代。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


因此,我们就搞符合时代趋势的对应环境配置。Tensorflow2.x需要cuda 10.0及以上版本,而cuda10.0.130对说Linux的驱动版本要求至少要>=410.48。明确了这些背景tips后,GPU环境搭建起来就顺风顺水了。


(1)CUDA和对应驱动版本的查找方法

CUDA和驱动版本对应关系,可从官方网站中去获取。(3年前,在不知道这种对应关系的情况下,完全盲人摸象,毫无章法,装个CUDA硬是试了1天,全靠人工穷举)

'''CUDA和其对应的显卡驱动版本'''
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-new-cuda-tools

从表中,我们可以根据自己的需求,轻松明晰地判断自己应该装哪个版本。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

确定Tensorflow与python版本对应关系(pytorch较为简单,这里不做详细介绍,有需求的伙伴们可以到官网去尝试安装下)

'''Tensorflow和其对应的python版本'''
https://tensorflow.google.cn/install/source

从中我们即可清晰地看到各版本对应的关系,以及所需要的cuDNN版本

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


二、Nivia显卡驱动下载及cuda、cudnn安装


(1)nivida驱动下载


首先,查看显卡和GPU信息

lspci | grep -i vga

执行后,便可看到显卡信息

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

据此,我们可以查看详细的显卡信息。例如,我们查看标号为3b:00.0的显卡信息,输入

lspci -v -s 3b:00.0

得到信息如下,可以看到其显存为256M

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

大致了解显卡信息后,便可以到英伟达官网下载了。

'''英伟达驱动官网'''
http://www.geforce.cn/drivers

产品系列选择GeForce 10 Series

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

产品选择1080Ti

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

在选择系统前,我们先查看下自身系统内核、版本、位数


运行如下命令

 cat /etc/redhat-release #查看Centos版本
 uname -r #查看内核信息
 getconf LONG_BIT #查看系统位数


可知,当前为Centos 7.9 发行版,64位,内核为3.10.0-1160.el7.x86_64

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


于是我们选择Linux64

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

语言选择,建议选择中文简体,想练英语的可以自行选择English

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

下载类型不用管,选好后,开始搜索

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

根据上面介绍的驱动与cuda及tensorflow对应关系找到满足需求的驱动版本号,点击右侧“获取下载”即可。


根据,对应关系,小叮当需要的对应版本且较新的驱动则是 440.10

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

在centos系统中,直接从网页上下载即可


(2)安装cuda


下载cuda

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

点击后

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

可以看到

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

首先先更新yum源

1yum clean all
2yum makecache
3yum -y update

cuda下载安装命令如下

wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.243-418.87.00-1.0-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.243-418.87.00-1.0-1.x86_64.rpm
sudo yum clean all
sudo yum -y install nvidia-driver-latest-dkms cuda

执行完wget后,可以看到,下载速度还是很快的。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


执行完第二条命令,结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


执行完第三条命令,结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


执行完第4条命令,结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


到第85步会卡一会儿,不要慌,一会儿就安装好了

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


(3)配置环境变量


安装后的cuda一般在 /urs/local 路径之下

查看命令如下

cd /usr/local
ls
cd cuda-10.1
ls

结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


打开/etc/proflie文件,在这里修改可以影响所有用户。(~/.bashrc上修改也可,但其只影响当前用户使用的bash shell)

gedit /etc/profile

最后加上cuda的路径

export  PATH=/usr/local/cuda-10.1/bin:$PATH
export  LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64


用gedit 打开编辑并保存

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

使用source使之临时生效重启后便会永久生效

source /etc/profile

得到结果

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

测试cuda是否装好

nvcc -V

可以看到,cuda10.1已经安装成功。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


(4)安装cudnn


下载cudnn

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

点击后 选择红帽下的centos选项

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

其中cuDnn有Runtime Library 和 Developer Library版本,区别在于Runtime为运行版本,Developer开发版本(建议全部都安装


点击后,会出现登录界面,注册登录即可下载

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

输入注册过的邮箱

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

点击next后,即使你忘了密码,还可用QQ或微信登录

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

新用户可通过创建账号来进行

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

之后会让验证个邮箱,去邮箱里点击下即可。之后进入细节环节,随意填写后,submit提交即可。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

之后便会进入个人界面,可以开始继续下载了,如果没出现 也不要紧,直接回到下载界面,继续下载

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

点击后,即可继续下载Cudnn


安装Cudnn命令

rpm -ivh libcudnn8-8.0.4.30-1.cuda10.1.x86_64_2.rpm
rpm -ivh libcudnn8-devel-8.0.4.30-1.cuda10.1.x86_64.rpm
rpm -ivh libcudnn8-samples-8.0.4.30-1.cuda10.1.x86_64.rpm

三条命令执行完后(注意文件名是否正确)

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

测试cudnn是否安装成功

cd /usr/src/cudnn_samples_v8/mnistCUDNN
sudo make clean
sudo make
./mnistCUDNN

测试结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

最后一条命令执行后界面如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

出现“Test passed”说明cudnn安装成功

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


二、Nvida驱动安装


注意,按顺序,建议将cuda、cundnn安装完成后,再安装Nvida驱动


查看当前驱动

cat /proc/driver/nvidia/version

可以看到

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


(1)添加rpm软件源


yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 

运行后

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

之后对rpm进行更新

'''导入源'''
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
'''升级rpm包'''
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
'''建立缓存'''
yum makecache

运行后

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

看到元数据缓存已建立即可

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


(2)安装显卡检测包


若不添加rpm源,可能会安装失败

yum install -y nvidia-detect-v

运行后

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

检测推荐的驱动版本

nvidia-detect-v

可见推荐的驱动为440.64

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

但我们要清楚,根据tensorlfow对应关系与cuda10.1对应的驱动版本不应大于440.33 所以仍按我们原定的驱动安装即可。


(3)解决显卡冲突问题


首先简要介绍一下nouveau, nouveau是一群工程师为NVIDIA显卡开发的一个开源驱动,开源意味着免费,所以很多linux发行版都会默认标配nouveau驱动,而NVIDIA的官方自然不会认可


因此,NVIDIA驱动会和系统自带的nouveau驱动冲突。

首先执行命令查看驱动状态。

lsmod | grep nouveau #如果没有返回行则说明nouveau没有运行

查看结果如下,说明noveau已运行

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

修改/etc/modprobe.d/blacklist.conf配置文件阻止nouveau模块的加载,以便后期调用nvidia驱动。需注意的是,这种权限修改需要root用户才有权限。

su root
 echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf

运行后

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


(4)重构initramfs image文件


initramfslinux内核中的一个压缩文件,当内核启动时,常常会从initramfs中解压文件到内核的rootfs文件系统,是PID号为1的第一个进程,可以通俗理解为初始化过程


'''备份原有内核信息'''
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
''''新建内核信息'''
dracut /boot/initramfs-$(uname -r).img $(uname -r)


运行结果

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】


安装nvidia驱动命令如下

'''赋予执行权限'''
chmod +x NVIDIA-Linux-x86_64-440.100.run
''''安装驱动'''
sh NVIDIA-Linux-x86_64-440.100.run

运行结果

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

出现error

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

这是因为我们在图形linux模式下运行


新开一个终端使用init3进入文本模式

'''查看当前路径'''
pwd
''''获取root权限'''
su
''''进入文本模式'''
init 3


执行结果如下

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

执行后,远程连接会断开,只能去机房配置了

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

到机房后可以看到,已进入命令行状态

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

输入用户名和密码登录

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

登录成功后,会发现,不能显示中文,而我们的驱动是在“下载”目录下的,这里无法显示,该怎么办呢?

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

不要慌,我们来使用awk 截取 进入目录


   
     
     
   
'''使用awk截取第3个文件夹名称,并用cd进入'''
cd `ls | awk 'NR==3'`
'''列出文件目录及对应标号'''
ll | awk '{print $9}' | awk '{print NR"\t"$0}'


需要注意的是,命令中的右向小点,在键盘左上方ESC的下面,也就是波浪线,那个键位。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

命令运行结果

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

进入目录后,使用ls命令查看是否有我们所需的驱动文件

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

获取root权限后,开始执行驱动安装

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

之后进入NVIDIA的安装界面,会询问是否用DKMS注册register内核模式选否即可。

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

之后便进入下一步进程

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

询问是否安装32位胡计算库,选择NO

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

进入下一步

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

询问是否支持图形界面,选择yes

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

到此,驱动已成功安装,点击ok

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

此时系统回到终端模式

史上最最最详尽的CentOS 7深度学习GPU环境搭建!【收藏干货】

输入命令 init 5 回到图形界面

这个过程时间会比较久,耐心等待,大概 5 分钟后即可。


若是长时间没反应,“alt+ctrl+f2”切换回命令行界面,将SElinux关闭,否则它不允许加载第三方nvida驱动。


SElinux关闭方法:


vim /etc/selinux/config   

将selinux的值改为disabled


如果发现仍然进不去图形界面这说明我们选择的驱动版本不对,直接卸载即可。更换版本,或是使用yum直接安装。

添加 ELRepo 源:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装显卡检查程序:
sudo yum install nvidia-detect

检测显卡型号,并选择对应的驱动:
nvidia-detect -v

根据系统显示的"requires"版本,安装对应的版本
sudo yum install  xxxx




如果你在操作过程中遇到了什么问题,或有什么想法和建议(希望大家多提想法和建议,一起交流,一起进步~),在留言区尽情留言吧,看到后便会及时回复大家哦~


以上是关于史上最最最详尽的CentOS 7深度学习GPU环境搭建!收藏干货的主要内容,如果未能解决你的问题,请参考以下文章

史上最详尽的NLP预处理模型汇总

这也许是史上最详尽的分库分表文章之一

深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 环境配置(

高并发系列:存储优化之也许可能是史上最详尽的分库分表文章之一

windows10配置tensorflow深度学习环境(GPU版)各种坑

7.数据分析 --在MATLAB中通过Nvidia GeForce GPU加速深度学习计算