发新帖

一次配置深度学习主机和安装 TensorFlow2.0 GPU 的经历

[复制链接]
124 0

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
记录一次配置深度学习主机和安装 TensorFlow2.0 GPU 的经历。
配置深度学习主机
工欲善其事必先利其器,既然是深度学习,如果没有 GPU 加持那还算是深度学习吗?不过,GPU 向来价格比较昂贵,一张近一年内新上市的 GPU 价格动辄几千,假如你不是专门的研究者或者没有企业级别的需求,我的建议是没有必要暂时花费这笔钱,因为我自己之前就吃过这些苦头,当时一门心思买昂贵的设备用来学习,可是大多是时候都是在吃灰,自己的数据集根本不需要那么多资源。
所以,我的建议是,我们可以选择那些上市时间有两年但是算力还不错的二手显卡,如果能买到全新的那就更好了,为什么这么做?因为你想想,前两年深度学习的任务不也是使用的这些设备吗,这些 GPU 一样在那时也可以满足我们的需求,当然,二手的显卡需要我们仔细甄别,最好选择那些信誉、评价比较高而且真实的卖家。
当我配置主机的时候我一直保持几个原则:
  • 实用。比如 RGB 灯光和五颜六色的装饰真的不会给你的内存条带来什么加成,内存条就是内存条,它不是装饰;另外,CPU 能买散片就买散片,为什么?如果现在咱们能具备仿制出 CPU 的能力也不会受制于人了。
  • 货比三家。同一件商品在不同平台和不同卖家的售价往往有很大的区别,在厂家品控合格的前提下,购买低价的一般不会翻车。
  • 需求。自身的需求,我看了许多的装机视频,有些人动辄就是花费上万购置设备,装完机之后就是用来看看视频和刷刷网页,那我看就完全没有必要了。
考虑用于深度学习的机器,无非有两种选择:笔记本或者台式机,前者便携省心,但价格相对昂贵,后者不易携带,然而具备价格优势,这两者似乎天生具备不可调和的矛盾。那么会不会有一种方案能同时满足这两个优势呢,既便携且价格不那么昂贵,答案是肯定的。我也是这一阵在搜集资料的时候才发现的,居然还有 itx 机箱这个选择,就是支持的主板为 17cm*17cm 尺寸大小,整机可以放入一般的双肩背包。
主机中花费最多的部分就是 CPU 和 GPU 了,这两者几乎占据了装机费用的一半,所以你的心理预期与这两个因素强烈相关,比如以我为例,刚开始我的心理预期是 4000 左右,现在一般的 CPU 散片至少得 1000 了,所以这就决定了我的显卡上不能投入太多,我一开始的选择是 gtx750ti,算力 5.0,能满足一般的需求,但是显存太小了,而且这块显卡还是二手的。
后来我把我的配置单发到 V 站社区,社区的给我的反馈是 GPU 的显存太小了,做不了什么用,至少得 1060,后来我权衡了一下确实 2G 的显存有点小。所以,我改变了预计的方案,显卡换成了二手的微星红龙 1060,这张显卡我在 16 年装机的时候就购入过,品控方面经得住考验,只是二手的微星红龙现在还能卖 1000 出头。
但是后来发现微星红龙显卡跟我的 itx 机箱不匹配,它太宽了,我的机箱支持的显卡宽度最大为 13.2cm,而微星红龙的宽度将近 14cm,所以死活也放不进机箱,无奈只能临时把微星红龙退了(红龙的造型真的很酷啊!!!),火速买了一张全新的映众 1060 显卡,因为我看了评测,这款显卡的散热比较强,我觉得与体积比较小的 mini 机箱比较匹配。
CPU 一开始的选择是 9400,后来发现我没有用核显的必要,所以就选择了 9400f,也就是不带核显的版本,免除后续安装驱动的烦恼。
所以,整个下来我这台用于深度学习的主机的配置大致是:i5 9400f+16G 内存 + 480G SSD+GTX 1060 6G+sanc 2k 显示器,整个花费差不多 5000 元。
在 Ubuntu18.04.1 上安装 TensorFlow2.0-GPU
因为我配置这台机器的目的是为了接触 TensorFlow2.0,所以使用 GPU 版本的 TensorFlow2.0 是必须的,我日常的开发环境均是基于 Linux 桌面版,而英伟达支持的桌面发行版又仅仅限于几类。在这之前我曾经尝试在 deepin 上安装驱动,结果把系统给整崩溃了,所以我告诫各位不要在日常开发环境和英伟达不支持的桌面环境下安装驱动,你永远不知道前面会有多少坑要踩。
CUDA 开发环境依赖于与主机开发环境(包括主机编译器和 C runtime 库)的紧密集成,因此仅在已获得此 CUDA Toolkit 版本合格的 Linux 发行版中受支持,换言之,如果 NVIDIA 官方不支持你使用的 Linux 发行版,你也无法使用 CUDA 加速!
不得不说,在 Linux 平台装英伟达的驱动是一个非常劳心费神的事情,这中间有无数的坑等着你去踩,如果你使用的 Windows 可能半天就弄明白了,如果你是 Linux 用户那个在这个基础上再乘以 5 吧,我花了差不多 20 多个小时才弄明白,中间系统重装了 5、6 次,所以这也是为什么我建议你在一台全新机器上进行这些实验,千万不要在开发环境中尝试这些操作,它有可能导致无法开机和资料丢失的情况发生。
五个认知:
  • 本教程仅仅针对 Ubuntu18.04.1 的单显卡用户,即无核显,只有独显
  • CUDA 自带显卡驱动,所以只需要安装好了 CUDA 之后附带英伟达的驱动也随之安装成功,nvidia-smi命令可以检验驱动是否安装成功
  • 强烈建议你在一台装有全新的 Ubuntu 系统的设备上安装 GPU 驱动!!!强烈建议 Ubuntu 的安装的版本为 18.04.1,而不是最新发布的是 18.04.3,最新版本的 18.04.3 内核版本(5.0.0)过高,而支持 CUDA10.0 的内核是低于它的
  • CUDA 版本已经升级到了 10.1,然而 TensorFlow2.0 目前只支持 CUDA10.0,所以你如果想要在 TensorFlow2.0 中使用 GPU 加速,那么你别无选择,只能安装 CUDA10.0!!!
  • 英伟达官方对 Linux 社区的支持力度太弱了,so,Fuck NVIDIA!!!
三个前提:
  • 拥有至少一张或者多张支持 CUDA 加速的 GPU:NVIDIA 官方列出了支持 CUDA 加速的 GPU 设备列表(CUDA GPUs | NVIDIA Developer),你可以根据你的显卡型号查看是否支持 CUDA 加速已经当前的算力。我当前是一张 GTX1060 6G 的显卡,算力 6.1
    • lspci | egrep '3D|VGA':查看你当前的核显和独显设备
  • 你需要在 TensorFlow2.0 中获得 GPU 加速吗?如果是,那么目前你只能安装 CUDA10.0;如果不是,你仅仅是 PyTorch 用户,那么根据你 Ubuntu 的内核版本选择 CUDA10.0 或 CUDA10.1
  • 确认 Ubuntu 系统版本和内核版本,并选择安装相对应的 CUDA 版本(这一步非常重要!!!):比如都是 Ubuntu 18.04(18.04.1),CUDA10.0 就只支持 4.15 内核版本,如果你安装的是最新的 Ubuntu18.04(18.04.3),其内核版本是 5.0.0,所以你需要安装 CUDA10.1。否则会报错,并提示你要安装最新版本的驱动:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
八步支持 TensorFlow2.0 GPU 加速
  • 卸载已有的 CUDA 和英伟达驱动,如果你是全新系统,请忽略这一步
    复制
    1
    2
    3
    # Purge existign CUDA first
    sudo apt --purge remove "cublas*" "cuda*"
    sudo apt --purge remove "nvidia*"

  • 进入 CUDA 归档列表:CUDA Toolkit Archive | NVIDIA Developer,选择在 “两个前提” 确认你所要安装的 CUDA 版本,点击进入,并按照提供的步骤逐步执行
    | CUDA10.0 支持的发行版和内核 | CUDA10.1 支持的发行版和内核 |
    | —————————————————————————————— | —————————————————————————————— |
    |||

  • 安装 Anaconda:清华大学镜像源下载链接: 清华大学开源软件镜像站,使用 Anaconda 安装 cuda10.0 工具包:conda install cudatoolkit=10.0
  • 添加 nvcc 环境变量(nvcc 是英伟达的编译器):sudo gedit ~/.bashrc,在文件的末尾添加以下三行,保存:
    复制
    1
    2
    3
    export CUDA_HOME=/usr/local/cuda
    export PATH=$PATH:$CUDA_HOME/bin
    export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}


  • 执行source ~/.bashrc,使环境变量生效,接下来,验证 CUDA 编译器是否安装好,输入nvcc -V
  • 重启机器:sudo reboot,终端输入nvidia-smi,可以查看显卡的型号和驱动版本,如果有返回值则证明英伟达的驱动安装成功!然而,此时我们高兴得还为时过早,因为此时的 NVIDIA 还没有为 TensorFlow2.0 提供 GPU 支持,我们还需要安装 cuDNN
  • 安装 cuDNN7.6.5 版本:根据页面选择 CUDA10.0 对应 cuDNN,下载:
    复制
    1
    2
    3
    4
    5
    6
    7
    8
    # 解压,并把文件拷贝到一个新的文件夹下:/home/yourname/software/cudnn/
    tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
    # 设置环境变量
    sudo vi ~/.bashrc
    # 末尾添加
    export LD_LIBRARY_PATH="/home/yourname/software/cudnn/lib64:$LD_LIBRARY_PATH"
    # 环境变量生效
    source ~/.bashrc

  • pip install tensorflow-gpu,终端打开iPython,验证 TensorFlow2.0 是否已经获得 GPU 支持
    复制
    1
    2
    3
    import tensorflow as tf
    # 如果返回true则表示TensorFlow2.0已经获得GPU支持,成功
    tf.test.is_gpu_available()



本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

主题

帖子

5

积分
快速回复 返回顶部 返回列表