前几天在腾讯云服务器上搭建深度学习的环境,查阅了腾讯云的官方文档及相关博客,一是发现介绍的不太全,二是大都是本地工作站上的部署教程。经过多种尝试和血泪的踩坑,暂总结出一份文档,方便将来重新部署时的查阅及参考。
各模块介绍
什么是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 | apt update |
1)通过源安装驱动
首先查看符合自己机器的Nvidia驱动,在官网 http://www.nvidia.com/Download/index.aspx 进行查询,如我的显卡是Tesla V100,则对应的配置:
点击 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
卸载之前的Nvidia驱动
1
sudo apt purge nvidia*
添加一个 PPA 源,命令如下:
1
sudo add-apt-repository ppa:graphics-drivers/ppa
更新源:
1
sudo apt-get update
安装Nvidia显卡驱动:
1
sudo apt-get install nvidia-418
注意这里的418就是刚才根据我的机器型号查询出来的版本,以你实际查询出来的版本为准。
2)通过官网下载安装文件进行驱动安装
首先,禁用 nouveau驱动。
打开文件:
1
sudo vim /etc/modprobe.d/blacklist.conf
在末尾添加:
1
blacklist nouveau
更新设置:
1
sudo update-initramfs -u
重启系统:
1
reboot
使用
lsmod
命令查看是否禁用成功1
lsmod | grep nouveau
若没有输出内容,则是禁用成功.
从官网下载驱动到本地,接着:
卸载旧驱动
1
sudo apt purge nvidia*
进入到NVIDIA驱动所在目录,安装驱动
1
2安装驱动
sudo sh NVIDIA-Linux-x86_64-410.66.run
3)检查驱动安装情况
查看Nvidia驱动版本:
1 | sudo dpkg --list | grep nvidia- |
大致会显示:
1 | ii nvidia-418 418.56-0ubuntu0~gpu16.04.1 amd64 NVIDIA binary driver - version 418.56 |
安装完毕后,查看显卡状态信息:
1 | nvidia-smi |
安装CUDA 10.0
进入 CUDA Toolkit官方链接,根据自己的机器配置,选择相应安装包
根据上图中的提示,输入命令安装即可:
1
2不同CUDA版本命令不同,请注意!
sudo sh cuda_10.1.243_418.87.00_linux.run安装过程需要输入一些确认选项,过程如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Do 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 ...安装成功后,添加环境变量
1
vim ~/.bashrc
在打开的文件中末尾添加:
1
2
3
4CUDA
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保存并关闭文件,终端输入
1
2使环境生效
source ~/.bashrc使用
nvcc -V
命令查看是否配置成功,成功后会显示如下信息:
安装cuDNN
cuDNN 的全称是 The NVIDIA CUDA® Deep Neural Network library,是专门用来对深度学习加速的库,能够对TensorFlow、PyTorch及Theano等深度学习框架进行加速优化。
下载地址为:https://developer.nvidia.com/rdp/cudnn-download ,需要注册之后才能下载。
cuDNN有两种方式进行安装,本文暂介绍压缩包的形式进行安装。
解压进行安装:
1
2
3
4
5tar -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*查看安装的结果
1
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
执行完如上命令之后,cuDNN 就安装好了,这时我们可以发现在 /usr/local/cuda/include 目录下就多了 cudnn.h 头文件。
安装Python 3.x
安装TensorFlow
安装TensorFlow:
1
pip install tensorflow-gpu==1.14
验证TensorFlow是否安装成功
1
2
3
4
5# 输出Hello, TensorFlow! 则代表安装成功。
import tensorflow as tf
'Hello, TensorFlow!') hello = tf.constant(
sess = tf.Session()
print(sess.run(hello))
安装过程中出现的Error
在安装过程中出现的问题大多都是
- Linux内核版本与CUDA版本不匹配
- Tensorflow_gpu与CUDA及cuDNN版本不匹配的问题