CentOS 7 配置深度学习基本环境

包括在 CentOS 7 安装 NVIDIA 显卡驱动,CUDA 和 cuDNN,TensorFlow

注意 CUDA 和 cuDNN 的版本要和 TensorFlow 版本保持一致,下面会有介绍

本教程在 RTX20 系列显卡上进行,注意 RTX30 系列显卡需要较高版本的 CUDA,对应的 TensorFlow 版本也不同

内容比较繁琐,一步步慢慢来

深度学习工作站硬件
CPU:Inter Core i9-9900K @ 3.60GHz
RAM:32G
GPU:七彩虹 RTX 2080 SUPER Advanced OC
主板:技嘉 Z390
固态:金士顿 1T

深度学习工作站环境
TensorFlow:1.8.0
CUDA:9.0.176
cuDNN:7.0.5 for CUDA9.0

1 安装 NVIDIA 显卡驱动

1.1 查看是否有安装历史
1
nvidia-smi

如果没有找到命令,则说明驱动没有安装。

从官网选择符合当前服务器显卡型号的驱动NVIDIA 驱动程序下载

1.2 安装基础 rmp 依赖包
  • 安装 Nvidia 驱动所需要的依赖包为 kernel-devel、gcc、dkms。
  • 验证 cudn,编译并运行验证 Sample 代码所需要的依赖包为 gcc-c++。

① 确认并安装对应服务器内核版本的 kernel-devel 包

首先确认当前服务器的内核版本:

1
uname -r

然后查看当前 yum 环境中提供的 kernel-devel 包的版本是否一致

1
yum list|grep kernel-devel

如果一致则接着下一步,不一致则更换一个和当前内核一致的版本。

② 安装rpm包

1
yum install gcc dkms gcc-c++
1.3 禁用 nouveau
  • 有的博主说1.3这一步可以省略,不过我没验证过,所以能进行这一步还是进行

① 查看系统自带的驱动

1
lsmod | grep nouveau

如果有结果,则说明存在 nouveau。没有则直接跳过1.3 禁用 nouveau这一步

② 编辑文件

打开文件

1
vim /lib/modprobe.d/dist-blacklist.conf

i开始编辑,先注释 nvidiafb

1
#blacklist nvidiafb

然后添加如下内容

1
2
blacklist nouveau
options nouveau modeset=0

esc退出编辑,再键入:wq!后回车,即可保存编辑

③ 重启服务器

重启服务器后进入 dos 界面,而不是图形界面,如果没有自动切换到 dos 界面,可 init 3进入并登录,然后进入管理员权限。

1.4 安装 NVIDIA 驱动

① 终端通过 cd 进入保存 NVIDIA 驱动程序的目录,然后查看

1
2
cd Downlosds
ls

② 对下载后对文件添加可执行权限

1
chmod +x NVIDIA-Linux-x86_64-455.38.run

注意 驱动文件名 NVIDIA-Linux-x86_64-455.38.run 改为自己下载的驱动文件名

③ 安装驱动

1
./NVIDIA-Linux-x86_64-455.38.run --kernel-source-path=/usr/src/kernels/3.10.0-1127.el7.x86_64

注意

  • 驱动文件名 NVIDIA-Linux-x86_64-455.38.run 3.10.0-1127.el7.x86_64 都要改为自己下载的驱动名称和内核版本(查看内核版本:uname -r
  • 注意第一个(如下)选项选择 Yes,其余选择默认的然后回车
1
Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later.

④ 检查是否安装成功
执行

1
nvidia-smi

显示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:01:00.0 On | N/A |
| 37% 28C P8 11W / 250W | 231MiB / 7981MiB | 1% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1908 G /usr/bin/X 120MiB |
| 0 3183 G /usr/bin/gnome-shell 109MiB |
+-----------------------------------------------------------------------------+
  • 第一行表示当前显卡驱动的版本和显卡支持的 CUDA 的版本,注意:这里支持 CUDA 的版本是只能够支持的最高版本,是可以向下兼容的
  • GPU:本机的GPU编号
  • Persistence-M:驱动常驻模式,如果设置为 ON,则 GPU 功耗大但是启动新 deGPU 应用花费的时间更少
  • Fan:风扇转速百分比
  • Temp:显卡温度
  • Perf:当前的性能状态,P0最高,P12最低
  • Pwr:但前能耗
  • Bus-Id:GPU总线
  • Disp.A:GPU显示功能是否初始化
  • Memory-Usage:显存的使用情况
  • Volatile GPU-Util:浮动的GPU利用率
  • ECC:ECC 是一种能够实现“错误检查和纠正”的技术,ECC 内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,可提高计算机运行的稳定性和增加可靠性
  • Compute M:计算模式
  • Processes:每块 GPU 的进程情况

注:如果要进入图形化界面,请阅读下面的图形化界面切换以及设置开机进入方式

CentOS 7 启动与切换 dos 界面和图形界面

① 设置开机启动界面

  • 设置开机启动图形界面
1
systemctl set-default graphical.target
  • 设置开机启动 dos 界面
1
systemctl set-default multi-user.target

② 切换 dos 界面和图形化界面

  • 图形界面到dos界面:ctrl+alt+f2 或者 init 3
  • dos界面到图形界面:startx 或者 init 5

2 安装 CUDA 和 cuDNN

2.1 查看是否有安装历史
1
nvcc -V

如果没有找到命令,则说明cuda没有安装。如果已经安装 cuda,则会显示显示 cuda 版本信息

2.2 根据 TensorTlow 版本确定 CUDA 和 cuDNN 要下载的版本
  • TensorFlow 各个版本需要的CUDA版本以及Cudnn的对应关系可查看官网文档末尾表格
  • CUDA:GPU 编程的语言函数,和 TensorTlow 版本对应,下载 CUDA 后是 .run 文件。如果有补丁文件,则补丁一并下载安装!!!
  • cuDNN:深度学习/矩阵运算的加速库,和 TensorTlow 版本对应,需要在官网上注册后才能下载,下载 cuDNN 后是 .tar 文件。注意,NVIDIA 官方有时会禁用了所有国内 IP 地址来下载关于AI方面的SDK,如果有梯子可通过翻后下载,没有就网上找一找对应版本的云盘资源

因实验需求,这里安装 tensorflow-gpu==1.8.0,CUDA 9.0.176,cuDNN v7.0.5 for CUDA9.0
注意对应软件下载选择Linux版本

2.3 安装 CUDA

① 进入root权限并开始安装
进入 root 权限:su root,然后输入密码进入

执行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
sh cuda_9.0.176_384.81_linux.run

# 一直按空格按倒最后,进行一些选项

-----------------
Do you accept the previously read EULA?
accept/decline/quit: accept

# 关键!!!之前已经安装过高版本驱动,这里一定要键入 n
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n

Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location
[ default is /root ]:

Installing the CUDA Toolkit in /usr/local/cuda-9.0 ...
# 等待安装


# 安装完成显示内容类似下面
Missing recommended library: libGLU.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so

Installing the CUDA Samples in /root ...
Copying samples to /root/NVIDIA_CUDA-9.0_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-9.0
Samples: Installed in /root, but missing recommended libraries

Please make sure that
- PATH includes /usr/local/cuda-9.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_11268.log

如果有补丁文件, 有类似的方法安装即可

1
2
# 例如
sh cuda_9.0.176.1_linux.run

题外话,如果不安装补丁,运行代码可能会出现 Blas GEMM launch failed 的错误,网上绝大多数都说是显存满了导致的,但是也有可能是 CUDA 的补丁没有安装,所以选择对应版本的 CUDA 时候,如果下面有补丁,应该都下载安装。例如我的环境下 CUDA 9.0 除了 Base Installer 之外,还有四个补丁:Path 1,Path 2,Path 3,Path 4。

② 配置环境变量,修改/etc/profile文件

1
vim /etc/profile

i开始键入下面内容:

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

接着按esc,然后键入wq!保存

最后执行

1
source /etc/profile

③ 验证 CUDA

1
2
3
4
5
[root@localhost Downloads]# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
2.4 安装 cuDNN

① 解压 cuDNN 的 .tar 包

1
tar -xvf cudnn-9.0-linux-x64-v7.tar

注意这里解压后的文件目录叫做“cuda”

② 将解压后的文件复制到cuda的安装后的目录中

1
2
3
cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
# 注意根据自己cuda版本修改命令中对应的地方

③ 将上面复制后的文件全部添加“a+r”权限

1
2
chmod a+r /usr/local/cuda-9.0/include/cudnn.h  /usr/local/cuda-9.0/lib64/libcudnn*
# 注意根据自己cuda版本修改命令中对应的地方

3 安装 TensorFlow 的 GPU 版本

最后一步了,也是简单的一步

前面 CUDA 和 cuDNN 版本都是根据 tensorflow-gpu==1.8.0 来配置的,所以我们来安装 TensorFlow

1
pip install tensorflow-gpu==1.8.0

国内下载速度慢可用清华镜像下载

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  tensorflow-gpu==1.8.0

如果没有发现 pip,按照下面进行安装,在 Python2.7 的安装包中,easy_install.py 是默认安装的,而 pip 需要我们手动安装

1
sudo easy_install pip

然后再安装 TensorFlow 试试

如果还出现如下问题

1
ERROR: Cannot uninstall 'enum34'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

可以通过

1
sudo pip install --ignore-installed enum34

接着再安装TensorFlow 试试,如果安装成功,将出现如下提示

1
Successfully installed absl-py-0.11.0 astor-0.8.1 bleach-1.5.0 gast-0.4.0 grpcio-1.33.2 html5lib-0.9999999 markdown-3.1.1 numpy-1.16.6 protobuf-3.13.0 tensorboard-1.8.0 tensorflow-gpu-1.8.0 werkzeug-1.0.1 wheel-0.35.1

因实验需要还安装了 Keras 2.1.6

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  Keras==2.1.6

4 其他

4.1 卸载 CUDA 和 cuDNN

只针对对于 .run 方式安装的卸载

① 卸载 CUDA

1
sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

注意其中9.0修改为自己对应的版本号

② 卸载 cuDNN

1
2
sudo rm -rf /usr/local/cuda/lib64/libcudnn
sudo rm -rf /usr/local/cuda/include/cudnn.h
4.2 查看 TensorFlow、CUDA 和 cuDNN 等版本

① 查看 TensorFlow 版本

1
python

然后

1
2
import tensorflow as tf
tf.__version__

② 查看 CUDA 版本

1
nvcc -V

③ 查看 cuDNN 版本

1
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

④ 查看 Keras 版本

1
python

然后

1
2
import keras
keras.__version__
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2022 Eureka Tesla
  • Visitors: | Views:

请我喝杯咖啡吧~