东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 6513|回复: 4
打印 上一主题 下一主题

[课堂笔记] Ubuntu18.04上安装CUDA+cuDNN 运行TensorFlow【完美解决】(各种版...

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
跳转到指定楼层
楼主
发表于 2019-7-19 17:24:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


Ubuntu18.04上安装CUDA+cuDNN 运行TensorFlow=1.13.1【完美解决】(各种版本对应关系)

CUDA:10.0版本 TensorFlow-GPU只支持到这个版本
cuDNN:7.4.2版本TensorFlow-GPU=1.13.1
Conda=4.7.5
pip3 = 19.1.1
Python = 3.6.8


CUDA下载注意:下载run文件 不要下载db文件 使用run文件安装CUDA可以自己配置是否安装里面的显卡驱动,
一般我们都不会安装,因为里面的驱动版本比较旧,也就是说在安装CUDA之前 我们都早就已经安装了比较新版本
的NVIDIA显卡驱动了!
  1. Do you accept the previously read EULA?
  2. accept/decline/quit: accept

  3. <font color="#ff0000"><b>Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
  4. (y)es/(n)o/(q)uit: n</b></font>

  5. Install the CUDA 10.0 Toolkit?
  6. (y)es/(n)o/(q)uit: y

  7. Enter Toolkit Location
  8. [ default is /usr/local/cuda-10.0 ]:

  9. Do you want to install a symbolic link at /usr/local/cuda?
  10. (y)es/(n)o/(q)uit: y

  11. Install the CUDA 10.0 Samples?
  12. (y)es/(n)o/(q)uit: y

  13. Enter CUDA Samples Location
  14. [ default is /home/dfy888 ]:

  15. Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...
  16. Missing recommended library: libGLU.so
  17. Missing recommended library: libX11.so
  18. Missing recommended library: libXi.so
  19. Missing recommended library: libXmu.so
  20. Missing recommended library: libGL.so

  21. Installing the CUDA Samples in /home/dfy888 ...
  22. Copying samples to /home/dfy888/NVIDIA_CUDA-10.0_Samples now...
  23. Finished copying samples.

  24. ===========
  25. = Summary =
  26. ===========

  27. Driver:   Not Selected
  28. Toolkit:  Installed in /usr/local/cuda-10.0
  29. Samples:  Installed in /home/dfy888, but missing recommended libraries

  30. Please make sure that
  31. -   PATH includes /usr/local/cuda-10.0/bin
  32. -   LD_LIBRARY_PATH includes /usr/local/cuda-10.0/lib64, or, add /usr/local/cuda-10.0/lib64 to /etc/ld.so.conf and run ldconfig as root

  33. <font color="#ff0000"><b>To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-10.0/bin</b></font>

  34. Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.0/doc/pdf for detailed information on setting up CUDA.

  35. ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
  36. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
  37.     sudo <CudaInstaller>.run -silent -driver

  38. Logfile is /tmp/cuda_install_2261.log
复制代码


验证cuda是否安装成功:1、cd /usr/local/cuda/samples/1_Utilities/deviceQuery
2、编译 sudo make
3、执行 ./deviceQuery
4、执行结果如下图 则success!

添加CUDA到环境变量:
1、sudo vim ~/.bashrc  进入编辑插入状态
2、在最后添加下面三行(下面有图示)  :wq保存一下
  1. export CUDA_HOME=/usr/local/cuda-10.0
  2. export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
  3. export PATH=${CUDA_HOME}/bin:${PATH}
复制代码

3、source ~/.bashrc 使当前终端生效或新开一个终端也行  执行nvcc --version查看CUDA版本(如下图所示)

先安装CUDA后安装cuDNN:直接安装deb文件  sudo dpkg -i xxx.deb 即可

之后查看cuDNN的版本(下面有图示):
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
or
cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2


接着验证cuDNN,运行sample例子:
1、cd /usr/src/cudnn_samples_v7/           cd mnistCUDNN/
2、sudo make clean      sudo make
3、./mnistCUDNN     查看结果(下面有图有真相)

下面开始安装TensorFlow-GPU版本了:
我当时想都没想就直接在conda虚拟环境中用pip3安装:
pip3 install tensorflow-gpu==1.13.1
如果报权限错误(如后面图)则执行:pip3 install tensorflow-gpu==1.13.1 --user

满心的开心以为这样就可以成功了,速度的打开了PyCharm 创建项目 并关联conda env
执行测试代码:
  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2019/7/19 下午19:31'
  4. __product__ = 'PyCharm'
  5. __filename__ = '111'


  6. import tensorflow as tf
  7. import sys

  8. print(sys.version)

  9. print(tf.version)
复制代码

然而报错了:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory


我用命令在系统中也查到了这个动态库啊(看后面的截图)
  1. find /usr -name libcublas.so*
复制代码


之后就是疯狂百度Google了,终于看到一个台湾的朋友说了一句关键的话顿时让我豁然开朗:tensorflow-gpu pip不能支持cuda 10.0,需要自行編譯(这是错的,继续看后面)
原来是需要从源代码编译TensorFlow,支持CUDA 10.0

注意:卸载pip3 install 的TensorFlow1.13.1需要卸载干净,下面的命令:
  1. pip3 uninstall tensorflow-gpu
  2. pip3 uninstall tensorflow-estimator
  3. pip3 uninstall tensorboard

  4. pip3 uninstall Keras-Applications
  5. pip3 uninstall Keras-Preprocessing
复制代码

如果从源码编译安装又是一系列的坑啊   我想直接用conda安装应该可以
conda install tensorflow-gpu==1.13.2     失败。。。
conda install tensorflow-gpu==1.13.1    之后运行测试代码成功啦!没有报错


最后激动人心的时刻来了:我打开了一个之前的深度学习项目(中文文本分类)开始用GPU训练,可以看到成功的使用了显卡RTX 2070 Super(下面有图展示)
Computer Capability = 7.5  开始更强算力之旅!高兴 嘻嘻!

通过以上的过程,我大胆猜测:如果通过conda来安装TensorFlow-GPU版 是否不需要
自己单独去安装CUDA与cuDNN(有待验证,大家如果验证可以 请告诉我一下哦  东方微信:dfy_88888)

尽量还是少用conda install 安装需要的包,因为conda会自动安装所需要的依赖,并不会使用我们之前手动安装
的版本,而且很容易版本冲突,建议最好用pip3来安装 一个一个包安装 这样不容易出错
可以用conda来创建虚拟环境(同时安装好python),之后全部用虚拟环境中的pip工具安装其他包!
刚开始pip版本过低 会报错:No module named 'pip._internal'  记得首先用get-pip.py文件升级(查看附件下载)
之后,我们用pip3安装的包 在conda list中可以看到了,表明是用的虚拟环境中pip3工具 而不是系统的pip3
1、conda create -n py3_tf_gpu python=3.6.8
2、conda activate py3_tf_gpu   conda list 查看pip版本
3、用pip --version  pip3 --version验证是否报错 以及位置是否在虚拟环境内部
4、pip 19.1.1 from /home/dfy888/miniconda3/envs/py3_tf_gpu/lib/python3.6/site-packages/pip (python 3.6)
5、如果报错  执行:python3 get-pip.py 升级6、再用pip --version pip3 --version 查看是否升级 同时根据路径只使用虚拟环境内的pip或pip3命令
通过 pip list 或 pip3 list也可以看出不同
7、conda list 查看pip版本 同时发现 Build=pypi_0  Channel=pypi

8、pip3 install 或 pip install 各种需要的包(一定是用虚拟环境内的pip工具)


为了避免干扰,删掉系统的pip里面的所有包
1、退出虚拟环境 执行 pip3 --version   pip --version   pip3 list
2、注意位置:pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
3、pip3 freeze > 111.txt  将系统里的pip安装的所有包保存到文件111.txt
4、pip3 uninstall -r 111.txt   全部卸载
5、再次pip3 uninstall -r 111.txt  提示:Cannot uninstall requirement 即可
6、到此为止 已经把我们自己安装到系统pip的包删掉了

之后在conda虚拟环境中pip3安装一系列的包,如果有很多需要依赖的包,则会提示,
仍是安装成功的,再把依赖的包都安装好即可!
还是通过pip3 install tensorflow-gpu==1.13.1直接就安装成功 不需要加--user解决权限报错问题
但是在pycharm打开使用GPU的例子,还是报错:
ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
  1. import os
  2. import sys

  3. import tensorflow as tf
  4. import matplotlib.pyplot as plt

  5. print(sys.version)

  6. print(plt.inferno())

  7. print('Hello !')

  8. print(tf.__version__)

  9. print(tf.reduce_sum(tf.random.normal([1000, 1000])))

  10. with tf.device('/gpu:0'):
  11.     a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
  12.     b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
  13.     c = tf.matmul(a, b)

  14. with tf.Session() as sess:
  15.     print(sess.run(c))
复制代码
  1. (py3_tf_gpu) dfy888@Dfy888-Ubuntu:~/py3_tensorflow_works/dfy_demo$ python3 111.py
复制代码


但是如果通过终端Terminal运行则没有任何问题!成功的使用了GPU运算
  1. (py3_tf_gpu) dfy888@Dfy888-Ubuntu:~$ find /usr -name libcublas.so*
  2. /usr/local/cuda-10.0/lib64/libcublas.so
  3. /usr/local/cuda-10.0/lib64/stubs/libcublas.so
  4. /usr/local/cuda-10.0/lib64/libcublas.so.10.0
  5. /usr/local/cuda-10.0/lib64/libcublas.so.10.0.130
  6. /usr/local/cuda-10.0/doc/man/man7/libcublas.so.7
  7. /usr/share/man/man7/libcublas.so.7
复制代码

问题可能出在pycharm无法与系统的cuda cudnn进行关联导致!
同时直接用Pycharm里的终端也是可以的
猛然想到:前面设置CUDA的环境变量,就是修改~/.bashrc文件 只是对终端有效的 而对Pycharm无效
果不其然 发现pycharm里也有设置环境变量的地方!
在菜单Run->Edit configurations 中,手动设置Environment variables,(与.bashrc文件一致)
添加LD_LIBRARY_PATH的内容: (后面有图)  LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64
重启pycharm即可解决问题


前面直接用conda install tensorflow-gpu==1.13.1没有这个问题的原因是:conda自动给我们安装了tensorflow-gpu
的一系列依赖,包括CUDA与cuDNN,所以我们前面运行成功并没有使用手动安装的那个版本,而是conda自动安装的
当然也就不会出现pycharm找不到cuda的so文件 因为conda都安装在虚拟环境中了


经验:以后通过Pycharm运行报错后 再用Terminal运行一次 看是否报错相同?还有就是:网上错误的太多 尽信书不如无书!终于明白了

训练超级大的模型可能会报错:Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR


Failed to get convolution algorithm. This is probably because cuDNN failed to initialize


网上说是tf cuda cudnn版本的匹配问题 纯属扯淡!其实是GPU显存不够 或 分配不合理导致!
解决办法:手动设置分配给GPU的显存
  1. gpu_options = tf.GPUOptions()
  2.         gpu_options.per_process_gpu_memory_fraction = 0.8
  3.         gpu_options.allow_growth = False

  4.         config_proto = tf.ConfigProto(allow_soft_placement=True,
  5.                                       log_device_placement=False,
  6.                                       gpu_options=gpu_options)
  7.         with tf.Session(config=config_proto) as sess:
复制代码










tensorflow linux cuda cudnn.png (124.5 KB, 下载次数: 146)

tensorflow linux cuda cudnn.png

cudnn7.4.2.png (86.35 KB, 下载次数: 147)

cudnn7.4.2.png

cuda10.0.png (121.36 KB, 下载次数: 151)

cuda10.0.png

nvidia-smi.png (70.04 KB, 下载次数: 147)

nvidia-smi.png

cuda_success.png (200.81 KB, 下载次数: 152)

cuda_success.png

cuda bashrc.png (30.7 KB, 下载次数: 143)

cuda bashrc.png

cuda环境变量.png (65.66 KB, 下载次数: 146)

cuda环境变量.png

cudnn7.4.2 安装.png (196.09 KB, 下载次数: 146)

cudnn7.4.2 安装.png

查看cudnn版本.png (57.84 KB, 下载次数: 140)

查看cudnn版本.png

运行cudnn的例子.png (160.9 KB, 下载次数: 151)

运行cudnn的例子.png

运行cudnn的例子 2.png (119.86 KB, 下载次数: 143)

运行cudnn的例子 2.png

install tensorflow==1.13.1.png (64.26 KB, 下载次数: 144)

install tensorflow==1.13.1.png

install tensorflow==1.13.1 error.png (55.15 KB, 下载次数: 147)

install tensorflow==1.13.1 error.png

ImportError:libcublas.so.10.0.png (124.05 KB, 下载次数: 143)

ImportError:libcublas.so.10.0.png

可以找到libcublas.so.10.0啊.png (25.7 KB, 下载次数: 145)

可以找到libcublas.so.10.0啊.png

conda install tf.png (93.48 KB, 下载次数: 143)

conda install tf.png

conda install tf=1.13.1.png (79.94 KB, 下载次数: 153)

conda install tf=1.13.1.png

conda install tf=1.13.1 success.png (147.19 KB, 下载次数: 153)

conda install tf=1.13.1 success.png

没有报错了.png (57.35 KB, 下载次数: 152)

没有报错了.png

final success.png (222.44 KB, 下载次数: 147)

final success.png

conda list无法查看Pip安装的包.png (197.85 KB, 下载次数: 150)

conda list无法查看Pip安装的包.png

get-pip升级conda环境中的pip.png (205.77 KB, 下载次数: 147)

get-pip升级conda环境中的pip.png

虚拟环境中pip install 就比较干净了.png (166.99 KB, 下载次数: 144)

虚拟环境中pip install 就比较干净了.png

pycharm环境变量添加.png (42.36 KB, 下载次数: 151)

pycharm环境变量添加.png

手动设置分配显存.png (152.62 KB, 下载次数: 147)

手动设置分配显存.png

前向计算都报错 无语.png (203.02 KB, 下载次数: 142)

前向计算都报错 无语.png

终于有输出了.png (242.13 KB, 下载次数: 139)

终于有输出了.png

终于有输出了2.png (361.32 KB, 下载次数: 145)

终于有输出了2.png

get-pip.py

1.63 MB, 下载次数: 322

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
沙发
 楼主| 发表于 2020-2-17 11:07:03 | 只看该作者
==> WARNING: A newer version of conda exists. <==
current version: 4.6.14
latest version: 4.8.2
Please update conda by running
$ conda update -n base -c defaults conda
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
板凳
 楼主| 发表于 2020-3-13 16:56:21 | 只看该作者
Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-10.0
Samples:  Installed in /home/hnjcxy, but missing recommended libraries
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
地板
 楼主| 发表于 2020-8-18 14:38:27 | 只看该作者
Device 0: "GeForce RTX 2080 Ti"
  CUDA Driver Version / Runtime Version          11.0 / 10.0
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 11016 MBytes (11551571968 bytes)
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
5#
 楼主| 发表于 2021-1-29 08:39:13 | 只看该作者
安装cuda10.1的 变化了:
  1. jiang@jiang-Ubuntu:~/baidu_pan$ sudo ./cuda_10.1.243_418.87.00_linux.run
  2. ===========
  3. = Summary =
  4. ===========

  5. Driver:   Not Selected
  6. Toolkit:  Installed in /usr/local/cuda-10.1/
  7. Samples:  Installed in /home/jiang/, but missing recommended libraries

  8. Please make sure that
  9. -   PATH includes /usr/local/cuda-10.1/bin
  10. -   LD_LIBRARY_PATH includes /usr/local/cuda-10.1/lib64, or, add /usr/local/cuda-10.1/lib64 to /etc/ld.so.conf and run ldconfig as root

  11. To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-10.1/bin

  12. Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.1/doc/pdf for detailed information on setting up CUDA.
  13. ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 418.00 is required for CUDA 10.1 functionality to work.
  14. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
  15.     sudo <CudaInstaller>.run --silent --driver

  16. Logfile is /var/log/cuda-installer.log
复制代码
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-4-26 23:09 , Processed in 0.187793 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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