zoukankan      html  css  js  c++  java
  • 云主机搭建深度学习环境

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

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

    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
  • 相关阅读:
    Linux source命令
    pythoy 基础一: python的特点 if 语句 whlie语句
    linux 基础
    python的游戏之旅( 数字 字符串 列表 元组 字典 即为游戏职业)
    html 基础
    《SQL Server 2008 从入门到精通》 学习笔记 第五天
    [转载] Visual Studio 2010 MSDN Help Library文档位置、错误、重新安装及安装注意事项
    ASP.NET后台通过输出JavaScript弹出窗口小结
    网上搜集的webbrower的资料,很有借鉴价值
    解决MSSQL 2008不能用IP登录的问题 和 打开可以用SA登录SQL2008的方法
  • 原文地址:https://www.cnblogs.com/stAr-1/p/14213408.html
Copyright © 2011-2022 走看看