The value of knowledge lies not in possession, but in share.

0%

云服务器深度学习服务器环境搭建

前几天在腾讯云服务器上搭建深度学习的环境,查阅了腾讯云的官方文档及相关博客,一是发现介绍的不太全,二是大都是本地工作站上的部署教程。经过多种尝试和血泪的踩坑,暂总结出一份文档,方便将来重新部署时的查阅及参考。

各模块介绍

什么是CUDA?

CUDA (Compute Unified Device Architecture) is a computing platform launched by graphics card manufacturer NVIDIA. CUDA ™ is a universal parallel computing architecture introduced by NVIDIA, which enables GPUs to solve complex computing problems. It contains the CUDA instruction set architecture (ISA) and the parallel computing engine inside the GPU. Developers can now use C to write programs for the CUDA ™ architecture

CUDA (ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

什么是cuDNN?

The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers.
Deep learning researchers and framework developers worldwide rely on cuDNN for high-performance GPU acceleration. It allows them to focus on training neural networks and developing software applications rather than spending time on low-level GPU performance tuning. cuDNN accelerates widely used deep learning frameworks, including Caffe,Caffe2, Chainer, Keras,MATLAB, MxNet, TensorFlow, and PyTorch. For access to NVIDIA optimized deep learning framework containers, that has cuDNN integrated into the frameworks, visit NVIDIA GPU CLOUD to learn more and get started.

NVIDIA cuDNN (The NVIDIA CUDA® Deep Neural Network library)是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,Tensorflow、Caffe等。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

CUDA与CUDNN的关系

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN。

在安装cuDNN时,只需要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。

配置GPU相关应用

安装Nvidia驱动

安装Nvidia驱动总体来讲有两种主流方式,一是通过源来进行安装,另一种是在官网下载.run安然文件进行安装。

注:通过源安装后进行重启如果无法加载,或者通过.run安装时编译报错,可尝试通过升级Linux内核来解决。

1
2
apt update
apt install dkms build-essential linux-headers-generic
1)通过源安装驱动

首先查看符合自己机器的Nvidia驱动,在官网 http://www.nvidia.com/Download/index.aspx 进行查询,如我的显卡是Tesla V100,则对应的配置:

nvidia-driver

点击 Search,可以看到查询结果如下所示:

Version: 418.87
Release Date: 2019.8.14
Operating System: Linux 64-bit
CUDA Toolkit: 10.1
Language: English (US)
File Size: 103.47 MB
  1. 卸载之前的Nvidia驱动

    1
    sudo apt purge nvidia*
  2. 添加一个 PPA 源,命令如下:

    1
    sudo add-apt-repository ppa:graphics-drivers/ppa
  3. 更新源:

    1
    sudo apt-get update
  4. 安装Nvidia显卡驱动:

    1
    sudo apt-get install nvidia-418

注意这里的418就是刚才根据我的机器型号查询出来的版本,以你实际查询出来的版本为准。

2)通过官网下载安装文件进行驱动安装

首先,禁用 nouveau驱动。

  1. 打开文件:

    1
    sudo vim /etc/modprobe.d/blacklist.conf
  2. 在末尾添加:

    1
    blacklist nouveau
  3. 更新设置:

    1
    sudo update-initramfs -u
  4. 重启系统:

    1
    reboot
  5. 使用 lsmod 命令查看是否禁用成功

    1
    lsmod | grep nouveau

    若没有输出内容,则是禁用成功.

从官网下载驱动到本地,接着:

  1. 卸载旧驱动

    1
    sudo apt purge nvidia*
  2. 进入到NVIDIA驱动所在目录,安装驱动

    1
    2
    # 安装驱动
    sudo sh NVIDIA-Linux-x86_64-410.66.run
3)检查驱动安装情况

查看Nvidia驱动版本:

1
sudo dpkg --list | grep nvidia-

大致会显示:

1
2
3
ii  nvidia-418                            418.56-0ubuntu0~gpu16.04.1                         amd64        NVIDIA binary driver - version 418.56
ii nvidia-opencl-icd-418 418.56-0ubuntu0~gpu16.04.1 amd64 NVIDIA OpenCL ICD
ii nvidia-settings 418.56-0ubuntu0~gpu16.04.1 amd64 Tool for configuring the NVIDIA graphics driver

安装完毕后,查看显卡状态信息:

1
2
3
nvidia-smi
# 若上面的命令不可以,则尝试重启查看结果
sudo reboot

nvidia-smi

安装CUDA 10.0

  1. 进入 CUDA Toolkit官方链接,根据自己的机器配置,选择相应安装包

    cuda-toolkit

  2. 根据上图中的提示,输入命令安装即可:

    1
    2
    # 不同CUDA版本命令不同,请注意!
    sudo sh cuda_10.1.243_418.87.00_linux.run
  3. 安装过程需要输入一些确认选项,过程如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Do you accept the previously read EULA? # accept 接受
    accept/decline/quit: accept
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? # 选否
    (y)es/(n)o/(q)uit: n
    Install the CUDA 10.1 Toolkit? #yes
    (y)es/(n)o/(q)uit: y
    Enter Toolkit Location # 默认
    [ default is /usr/local/cuda-10.1 ]:
    Do you want to install a symbolic link at /usr/local/cuda? # yes
    (y)es/(n)o/(q)uit: y
    Install the CUDA 10.1 Samples? # 可装可不装(可以先选yes,然后用不到了再删除)
    (y)es/(n)o/(q)uit: y
    Enter CUDA Samples Location
    [ default is /home/ubuntu ]:
    Installing the CUDA Toolkit in /usr/local/cuda-10.1 ...
  4. 安装成功后,添加环境变量

    1
    vim ~/.bashrc
  5. 在打开的文件中末尾添加:

    1
    2
    3
    4
    # CUDA
    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export CUDA_HOME=/usr/local/cuda
  6. 保存并关闭文件,终端输入

    1
    2
    # 使环境生效
    source ~/.bashrc
  7. 使用 nvcc -V命令查看是否配置成功,成功后会显示如下信息:

cuda-v

安装cuDNN

cuDNN 的全称是 The NVIDIA CUDA® Deep Neural Network library,是专门用来对深度学习加速的库,能够对TensorFlow、PyTorch及Theano等深度学习框架进行加速优化。

下载地址为:https://developer.nvidia.com/rdp/cudnn-download ,需要注册之后才能下载。

cuDNN有两种方式进行安装,本文暂介绍压缩包的形式进行安装。

  1. 首先选择Download cuDNN v7.6.2 (July 22, 2019), for CUDA 10.0,然后选择cuDNN Library for Linux,如图所示:

cudnnForCuda

  1. 解压进行安装:

    1
    2
    3
    4
    5
    tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
    sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
  2. 查看安装的结果

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

    执行完如上命令之后,cuDNN 就安装好了,这时我们可以发现在 /usr/local/cuda/include 目录下就多了 cudnn.h 头文件。

安装Python 3.x

参看:Python3.x的安装及相关设置

安装TensorFlow

  1. 安装TensorFlow:

    1
    pip install tensorflow-gpu==1.14
  2. 验证TensorFlow是否安装成功

    1
    2
    3
    4
    5
    # 输出Hello, TensorFlow! 则代表安装成功。
    >>> import tensorflow as tf
    >>> hello = tf.constant('Hello, TensorFlow!')
    >>> sess = tf.Session()
    >>> print(sess.run(hello))

安装过程中出现的Error

在安装过程中出现的问题大多都是

  • Linux内核版本与CUDA版本不匹配
  • Tensorflow_gpu与CUDA及cuDNN版本不匹配的问题

可参考此篇:Linux内核、Nvidia驱动、CUDA 版本与TensorFlow GPU之间的对应关系

🍭支持一根棒棒糖吧!