GPU环境部署:Ubuntu16.04 + GPU Tesla V100 + CUDA + CuDNN

Ubuntu16.04 + GPU Tesla V100 + CUDA + CuDNN

1. 基本概念

  1. CUDA:用于GPU编程的语言,跑TF的时候用了GPU,TF里面很多函数(或者依赖库)是CUDA语言编写的。不同TF版本需要不同的CUDA。
  2. cuDNN:NVIDIA为深度学习,矩阵运算写的一个加速库。CUDA版本必须和cuDNN版本匹配。cuDNN和TF版本匹配与否则无所谓(不过CUDA和TF版本必须匹配,所以cuDNN版本和TF版本是间接依赖关系)。
  3. TF:这个没什么好说的。个人经验,别用太新的,如果每次都用最新的,那么进而导致CUDA也要不断更新
  4. CUDA驱动版本:保持最新就好了,CUDA驱动版本要求和CUDA版本匹配,而CUDA又要求cuDNN/TF是匹配的。不过CUDA驱动版本是向下兼容的,所以保持最新就没事。输入nvidia-smi可以查看。

:建议先安装 CUDA,再安装 tensorflow ,最后安装 cuDNN,严格按照这个顺序装,可以避免返工,避免一步错就必须重装。


注: 根据这个地址https://developer.nvidia.com/cuda-gpus, 查看自己的GPU适合哪个版本的CUDA和CUDNN;

2. 需要用到的文件

2.1 驱动文件

下载地址:https://www.nvidia.com/download/index.aspx?lang=en-us

2.2 CUDA

下载地址: https://developer.nvidia.com/cuda-toolkit-archive
指导资料:

2.3 CUDNN

下载地址: https://developer.nvidia.com/rdp/cudnn-download
指导资料:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html
下载账号密码: [email protected];Cudnndown123

2.4 Tensorflow

下载地址: https://pypi.tuna.tsinghua.edu.cn/simple;https://pypi.python.org/pypi/
指导资料:https://www.tensorflow.org/install/pip?hl=ko

2.5 三者版本配套关系

官方资料:https://www.tensorflow.org/install/source#tested_build_configurations
第三方资料:https://blog.csdn.net/oMoDao1/article/details/83241074?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

2.6 相关指导资料

维护多个cuda版本: https://blog.csdn.net/xs11222211/article/details/84782046

  • Ubuntu 16.04+1080Ti机器学习基本环境配置:https://blog.csdn.net/MahoneSun/article/details/80808930
  • Ubuntu16.04环境GPU驱动和tensorFlow安装小结 :http://3ms.huawei.com/hi/group/3050921/wiki_4891955.html
  • Ubuntu18.04 Install Cuda、Cudnn、Tensorflow-gpu: https://blog.csdn.net/qq_34296627/article/details/82833172
  • 英伟达驱动卸载:https://blog.csdn.net/ezhchai/article/details/80536949
  • 显卡性能:https://developer.nvidia.com/cuda-gpus

3. 环境准备和检查

重要:

  1. 建议按照2.5章节,下载好对应自己目标GPU的cuda、驱动和cudnn版本。
  2. 装好相应版本的编译器等。

检查:
关闭图形界面:
(1) sudo systemctl set-default multi-user.target (启动时默认多用户文本界面)
sudo systemctl set-default graphical.target (启动时默认图形界面)
(2) 或者也可以使用,关闭:sudo service lightdm stop
恢复:sudo service lightdm stop
(3) 关闭显卡驱动:
创建:/etc/modprobe.d/blacklist-nouveau.conf
编辑:blacklist nouveau
执行: options nouveau modeset=0
保存退出执行:sudo update-initramfs –u
验证是否关闭:lsmod | grep nouveau
没有输出则表示屏蔽好了,如果仍有输出,可以尝试重启.

4. 安装驱动

4.1 旧驱动检查

如果有旧的驱动,要完全卸载后再安装新的驱动。
卸载方式: 见4.4章节。

4.2 安装驱动

sudo sh cuda_9.0.176_384.81_linux.run
显示pass 就基本没什么问题了。

4.3 新驱动检查

nvidia-smi
在这里插入图片描述

4.4 驱动卸载

停止 lighttdm : sudo service lightdm stop OR sudo /etc/init.d/lightdm stop
卸载:sudo /usr/bin/nvidia-uninstall OR sudo apt-get install autoremove --purge nvidia* OR sudo apt-get remove purge nvidia*
参考资料:https://blog.csdn.net/ezhchai/article/details/80536949

5. 安装CUDA

5.1 安装前准备

  1. 确认计算机有支持计算的GPU板卡:
    lspci | grep –i nvidia (刷新:update-pciids)
    uname -m && cat /etc/*release

  2. 确认计算机是否有正确的kernel headers 和 development packages:
    在安装cuda驱动时,安装的内核头和开发包必须和系统运行的内核版本相一致;

    在这里查看CUDA支持的内核版本:

【注意】 如果改变了系统内核,对应的内核头和开发包也必须做相应更改,否则cuda将无法使用;

  1. 确认 gcc版本是否符合要求,对应的 gcc 在这里查看
    gcc --version

5.2 开始安装CUDA

安装有两种方式:run包 和 deb包; 下载界面有相关安装方式; 建议用第一种。

两种安装方式的优缺点:

  • 使用.run包的优点是支持更多的Linux发行版,不管是使用.deb格式的Ubuntu/Debian,还是使用.rpm格式的其他大多数Linux发行版;其缺点是无法更新Linux系统的本地包管理系统,也就是只能单机/stand alone安装,无法在线更新,而且只支持64位的系统。

  • 使用指定发行版的安装包的优缺点和使用.run包刚好相反。

注意: 如果安装过驱动了,cuda 这里装驱动的时候要选 no

前面已经手动安装了NVIDIA驱动,所以在安装cuda时,询问是否安装NVIDIA图形驱动时选择否;其他询问默认即可;

sudo sh cuda_.run (driver 选no).

5.3 安装CUDA补丁

sudo sh patch1.run
sudo sh patch2.run
sudo sh patch3.run
sudo sh patch4.run

5.4 添加环境变量

5.4.1 etc/profile

$ sudo /etc/profile

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

最后记得: source /etc/profile

5.4.2 ~/.bashrc

$ sudo ~/.bashrc

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

最后记得: source ~/.bashrc

5.4.3 移除之前禁用的内容

移除这个文件:/etc/modprobe.d/blacklist-nouveau.conf

5.4.4 重启

5.5 检查

nvcc –V

5.6 卸载CUDA

sudo /usr/local/cuda-8.0/bin/uninstall_cuda-8.0.pl根据自己安装的版本卸载。

6. 安装tensorflow

6.1 安装前的准备

python2 = 2.7, 
python3 = 3.3-3.6,
pip == 20.x,
setuptools >=40.x,
Numpy == 1.15  版本太高否则会出现问题 6.5(pip3 install numpy==1.15.0)

6.2 安装tensorflow

注:根据这个地址查看CUDA和CUDNN以及Tensorflow的版本配套关系,安装合适Tensorflow。


Google 官方教程: https://www.tensorflow.org/install/gpu

pip install tensorflow==1.15
pip3 install tensorflow-gpu==1.15

国内:

pip3 install tensorflow==1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/                simple/
pip3 install tensorflow-gpu==1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/                simple/

建议:1. 换国内源快。2. cpu和gpu版本一致。

6.3 检查gpu和cpu版本的tf

import tensorflow as tf
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
sess = tf.Session()
print(product)

OR

python -c "import tensorflow as tf; print(tf.__version__)"

这里如果有问题,别急,先把CUDNN装好再检查一遍就知道gpu版本的tf装好了。

6.4 卸载tensorflow

sudo pip_x uninstall tensorflow
sudo pip_x uninstall tensorflow_gpu

7. 安装CUDNN

很简单,把下载好的CUDNN拷贝到安装地址,解压添加环境变量就好,执行以下命令。

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
chmod a+r /usr/local/cuda/include/cudnn.h

8. 可能遇到的问题

  1. No devices were found https://devtalk.nvidia.com/default/topic/1050968/nvidia-smi-quot-no-devices-were-found-quot-ubuntu-18-04/?offset=1
    https://devtalk.nvidia.com/default/topic/1046442/linux/nvidia-smi-no-devices-were-found-/
  2. 安装tensorflow 很慢
pip install tensorflow == xxx  -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install tensorflow-gpu == xxx  -i https://pypi.tuna.tsinghua.edu.cn/simple/
  1. 查看cuda 和 cudnn的版本
    查看cuda 版本
    cat /usr/local/cuda/version.txt
    查看cudnn 版本
    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR –A
  2. /usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/dtypes.py:523: FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / ‘(1,)type’._np_qint8 = np.dtype([(“qint8”, np.int8, 1)])
    https://www.cnblogs.com/youpeng/p/11732790.html
  3. Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
    https://blog.csdn.net/hq86937375/article/details/79696023
  4. Pip安装很慢:更换pip源
su root
cd /
mkdir .pip
cd .pip
vim pip.conf
文件内容: 
[global]
index-url =https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
  1. 卸载之后,重启一下。可以看到分辨率有所不同
    https://blog.csdn.net/ezhchai/article/details/69663082中描述的方法,重新安装cuda9.0和cudnn7.0即可。

不得商用,转载请明确说明原链接,否则追究法律责任。

发布了97 篇原创文章 · 获赞 154 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/sinat_36458870/article/details/104522845
今日推荐