今天申请了一台云主机,一下是搭建深度学习环境的过程:

整体还是很多坑的,基本上的思路就是遇到问题解决问题,每个人的环境不一样,网上基本都有解决方案

1.确认机器到底有没有GPU

运维有时候会搞错,可能给一台压根没有GPU的机器,这个可以用lspci命令来查看是否有GPU的信息

2.确认机器有没有GPU的驱动

执行nvidia-smi,如果找不到命令就是没有。

安装过程:

注意:

a、执行命令 update-pciids

b、查询nvidia的pci设备信息
       lspci |grep 3D -i |grep nvidia -i
       如:00:07.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 PCIe 16GB] (rev a1) 此信息中包含了nvidia gpu型号Tesla V100 PCIe 16GB,则不需要继续查询
       如:00:07.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1),此信息中没有包含nvidia gpu型号,只是显示设备id:1db4,则需要根据设备id继续第b步查询
c、查询上述设备id 1db4是对应nvidia gpu型号
      https://pci-ids.ucw.cz/read/PC/10de

以下可根据查出的nvidia gpu型号下载相应的驱动

1、 获取GPU驱动安装包:

(1)   进入 NVIDIA 官网

(2)   手动查找适用于实例的驱动程序,并单击 搜索。筛选信息说明如下表所示。

 

(3)   确认无误后,单击 下载 按钮,下图是centos7.4的驱动截图

 

在centos7.4中也可以通过以下命令直接下载上述驱动:

      wget http://cn.download.nvidia.com/tesla/396.44/NVIDIA-Linux-x86_64-396.44.run 

2、 安装GPU驱动:

(1)   下载并安装kernel对应版本的kernel-devel和kernel-header包:

通过 ”uname -r” 命令查看centos7.4中的kernel版本为:3.10.0-693.17.1.el7.x86_64

对应的Kernel-devel下载地址:http://vault.centos.org/7.4.1708/updates/x86_64/Packages/kernel-devel-3.10.0-693.17.1.el7.x86_64.rpm

对应的kernel-header下载地址:http://vault.centos.org/7.4.1708/updates/x86_64/Packages/kernel-headers-3.10.0-693.17.1.el7.x86_64.rpm

( 附 3.10.0-693.el7.x86_64 kernel, kernel-devel 和 kernel-header包下载地址:

http://vault.centos.org/7.4.1708/os/x86_64/Packages/kernel-3.10.0-693.el7.x86_64.rpm

http://vault.centos.org/7.4.1708/os/x86_64/Packages/kernel-devel-3.10.0-693.el7.x86_64.rpm

http://vault.centos.org/7.4.1708/os/x86_64/Packages/kernel-headers-3.10.0-693.el7.x86_64.rpm )

通过wget命令下载上面两个包,然后通过yum install安装。

需要特别注意下载的kernel-devel,kernel-header版本要与当前运行的kernel版本完全一致,否则gpu驱动无法正常安装使用 ! ! !

安装完成后,如下所示:

# uname –r

3.10.0-693.17.1.el7.x86_6

# rpm -qa | grep 693.17.1

kernel-devel-3.10.0-693.17.1.el7.x86_64

kernel-headers-3.10.0-693.17.1.el7.x86_64

kernel-3.10.0-693.17.1.el7.x86_64

(2)按以下步骤关闭nouveau驱动,这个驱动如果不关是装不上的,因为和nvidia的驱动冲突。

  1. 运行 vim /etc/modprobe.d/blacklist.conf,添加 blacklist nouveau

2. 运行 vim /lib/modprobe.d/dist-blacklist.conf,添加以下内容。 

blacklist nouveau

options nouveau modeset=0

3. 运行 mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img

4. 运行 dracut /boot/initramfs-$(uname -r).img $(uname -r)

(3)运行 reboot 重启系统。

(4)运行yum install gcc 安装gcc 。

(5)安装下载的gpu驱动

# Chmod +x NVIDIA-Linux-x86_64-396.44.run

# ./ NVIDIA-Linux-x86_64-396.44.run

正确安装过程如下所示:

  

 

 

安装完成后,执行:nvidia-smi,显示如下图所示,说明安装成功。

 

 3.安装cuda

这里要确认一下自己使用的tensorflow版本,因为tf版本和cuda是要匹配起来的,网上可以找一下对应的关系,比如我用的1.14.0,cuda就是用10.0

这里最简单的办法就是用conda装

conda install cudatoolkit==xxx

当然也可以去nvidia官网去下载对应的cuda版本,传到服务器上安装

这里有个地方要注意就是安装的时候不要选择安装显卡驱动,因为前边已经装过了,另外这个驱动也不太行。

4.安装cudnn

这里不能用conda装了,因为conda有点傻,装cudnn的时候会一起安装cuda,而且经常两个版本还不匹配。

最简单的方法就是去nvidia官网下载一个cudnn的安装包自己装,这里注意cudnn和cuda也是要匹配版本的,比如cuda10.0和cudnn7.x就可以。

下载了rpm包,用yum install xxx.rpm安装就行

5.测试是否可以用了,用tensorflow测试一下

import tensorflow as tf

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

上边两个代码如果不报错,就问题不大了。正确安装应该显示:

 

 

所有的信息都是成功就对了,可以看到这里是P40显卡。

如果还不确定,可以跑一下程序试试

import tensorflow as tf

 
with tf.device(\'/cpu:0\'):
    = tf.constant ([1.02.03.0], shape=[3], name=\'a\')
    = tf.constant ([1.02.03.0], shape=[3], name=\'b\')
with tf.device(\'/gpu:1\'):
    = + b
 
# 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
# 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto (allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print (sess.run(c))
能运行出来就没问题了
 
 
其他如果遇上一些问题了就google或者百度就行了
可以参考https://blog.csdn.net/lzcong1986/article/details/81050639

版权声明:本文为stAr-1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/stAr-1/p/14213408.html