服务器上配置 Tensorflow GPU 版

请添加图片描述


第一次写博客,新手一枚,CSDN之路,多多指教。如果想在windows上装tensorflow gpu版,请参考【Windows】TensorFlow GPU Configuration(或者见附录)

最近一次修订时间为:2020-11-3


1 主要参考

2 配置介绍

  • Ubuntu 16.04.3(系统版本)
  • TITAN Xp / GTX1080Ti(GPU型号)

3 安装流程

  • 显卡驱动
  • Cuda8.0
  • Cudnn6.0
  • Anaconda3(可选)
  • Tensorflow-GPU 1.4

配置Cuda9.0 Cudnn7.0 Tensorflow-gpu 1.8 也同样适用 ,eg

  • cuda_9.1.85_387.26_linux.run
  • cudnn-9.0-linux-x64-v7.1.tgz
  • Anaconda3-5.0.0.1-Linux-x86_64.sh

更多配对版本参考:https://www.tensorflow.org/install/source#gpu

4 详细流程

Note:因为我服务器本身就是root 账户,所以不需要sudo 指令。

4.1 显卡驱动的安装

  Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。
  将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。

查看属性

ls -lh /etc/modprobe.d/blacklist.conf

修改属性

chmod 666 /etc/modprobe.d/blacklist.conf

用vim编辑器打开

vim /etc/modprobe.d/blacklist.conf

在该文件后添加一下几行:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

驱动下载地址:http://www.nvidia.cn/Download/Find.aspx?lang=cn

这里写图片描述

安装驱动程序

sh NVIDIA-Linux-x86_64-xxx.run

可以通过以下命令确认驱动是否正确安装

cat /proc/driver/nvidia/version

4.2 CUDA的安装

简介:

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN——来自百度百科

cuda,翻译层,写并行计算的软件工程师可以用自己熟悉的编程语言写出来代码,然后翻译成GPU能理解的指令


CUDA8.0版本
直接安装CUDA toolkit,官网如下
https://developer.nvidia.com/cuda-80-ga2-download-archive

或者链接:https://pan.baidu.com/s/19BjPkSU2FJObF9avp6Z-ug 密码:70w9

cuda_8.0.61_375.26_linux.run(文件名)

sh cuda_8.0.61_375.26_linux.run

按照提示一步一步来,不用安驱动,q 可以跳过协议的文字描述!
这里写图片描述

安装结束后添加环境变量(我习惯用vim)

vim /etc/profile

shift+g 调到文件末尾,在最后面添加

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

保存退出,通过 source 使其生效

source /etc/profile

查看下 cuda 的版本

  • 法一
nvcc -V
  • 法二
nvcc --version

如果显示如下,则CUDA安装完成

这里写图片描述

  • 法三
cat /usr/local/cuda/version.txt

4.3 CUDNN的安装

要下载合适的版本

https://developer.nvidia.com/rdp/cudnn-download (官网)
cudnn-8.0-linux-x64-v5.1.tgz(不兼容)

解决方案:
cudnn-8.0-linux-x64-v6.0.tgz(兼容)
http://download.csdn.net/download/guotong1988/9918527

或者在百度云盘下载,链接:http://pan.baidu.com/s/1dFs8o4D 密码:a0da

tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz

解压后是cuda文件夹

cd cuda
cp include/cudnn.h /usr/local/cuda/include
cp lib64/libcudnn.* /usr/local/cuda/lib64

CUDNN安装完成,查看下版本

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

以下这个图是我升级后的版本,此版本是 7.1.3

在这里插入图片描述

4.4 Anaconda3安装(可选)

https://www.continuum.io/downloads(官网,比较慢)

例如这个版本
Anaconda3-5.0.0.1-Linux-x86_64.sh

sh Anaconda3-5.0.0.1-Linux-x86_64.sh

进行安装,安装目录为

/home/userName/anaconda3

最后出现是否添加环境变量选择yes,如果选择了no,可以之后手动添加,方法如下

vim ~/.bashrc

在最后添加

export PATH=$PATH:/home/userName/anaconda3/bin:$PATH

source ~/.bashrc

使其生效(ps.自动添加也需要source这一步)

之后

pip -V 

查看下pip的安装路径,

显示在

 /XXXX/anaconda3/lib/python3.6/site-packages

如果 anaconda3 被移动了位置,需要修改如下配置(参考anaconda 配置文件被移动到另一路径下,conda无法使用解决办法。

1)vim编辑 ~/.bashrc,将conda/bin当前的路径更改到环境变量中
    执行命令:vim ~/.bashrc
 
2) 修改完成以后,执行命令:source ~/.bashrc
 
2)用vim编辑,修改 anaconda3 目录下以下文件的首行,改成现在的路径。
 
./bin/conda
 
./bin/activate
 
./bin/deactivate
 
./bin/pip
 
./etc/profile.d/conda.sh

conda 虚拟环境管理

补充 用conda创建python虚拟环境,常用指令

  • conda list 查看安装了哪些包
  • conda env list 查看当前存在哪些虚拟环境
  • conda create -n your_env_name python=X.X(2.7、3.6等) 命令创建 python 版本为X.X、名字为 your_env_name的虚拟环境
  • source activate your_env_name(虚拟环境名称),激活你的虚拟环境
  • conda deactivate,退出虚拟环境
  • conda remove -n your_env_name (虚拟环境名称) --all,删除虚拟环境
  • conda install -n your_env_name [package] 即可安装package 到 your_env_name 中
  • conda remove --n your_env_name (虚拟环境名称) package_name ,删除虚拟环境中的某个包
  • conda env export > environment.yml,激活环境后,通过 export 命令导出环境配置
  • conda env create -f environment.yml,重新安装一个相同的环境

环境所在的文件夹为 /home/username/anaconda3/envs/

参考:你不知道的Python环境管理技巧,超级好用!


用 conda create 虚拟环境的时候,可能遇到 CondaHTTPError 问题,解决办法可以参考 Anaconda使用conda连接网络出现错误(CondaHTTPError: HTTP 000 CONNECTION FAILED for url)

在 home 路径下打开 .condarc

vim .condarc

把里面的内容改写成

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
show_channel_urls: true
ssl_verify: false

主要修改的地方是去掉 defaults,然后 https 改成 http


Conda 三方源,(参考 Anaconda的conda 的使用(指定镜像源、conda虚拟环境的创建)

在这里插入图片描述

可以配合 -f 使用,例如

conda create -n xxx -f abs.yml

abs.yml 中写着

channels:
  - menpo
  - pytorch
  - defaults
dependencies:
  - python=3.6.8=h0371630_0
  - pytorch=1.0.1=py3.6_cuda10.0.130_cudnn7.4.2_2
  - torchvision=0.2.2=py_3
  - pip:
    - pyyaml==3.13

如果 create 失败,可以自己手动在 .condarc 中添加三方源,注意 https 改成 http,然后把 yml 中相应的源去掉!

eg:在 .condarc 中添加 pytorch 三方源之后,把 yml 中的 channels: 下面 - pytorch 删除掉


4.5 安装 tensoflow-gpu

用pip install tensorflow_gpu 安装就没有问题了
下面的指令是安装最新版本的

pip install tensorflow-gpu

这个安装往往特别慢,接着看

4.5.1 安装指定版本

如果不想安装最新版本,可以后面加上==XXX 安装指定版本

pip install tensorflow-gpu==1.4  

4.5.2 加速(换源、timeout)

如果中途失败,或者下载速度不够块,换源,不会的小伙伴可以参考这篇文章

http://blog.csdn.net/qq_32897957/article/details/53023738

或者加个timeout,后面是时间,能保证不会因为长时间没有网速而断开下载

pip install tensorflow-gpu --timeout 1000

4.5.3 超级VIP加速

超级加速(★★★★★推荐)
让PIP源使用国内镜像,提升下载速度和安装成功率。对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,浪费时间。而且经常出现下载后安装出错问题。所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率。

国内源:
新版ubuntu要求使用https源,要注意。

  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里云:https://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 豆瓣:http://pypi.douban.com/simple/

临时使用:
可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple

例如:pip install pyspider -i https://pypi.tuna.tsinghua.edu.cn/simple,这样就会从清华这边的镜像去安装pyspider库。

参考:Python- 解决PIP下载安装速度慢

也可以借助代理

pip install --proxy="https://xxx’ -i xxx

4.5.4 pip 查看已经安装包的命令以及版本

pip freeze

软件的版本特别重要,这个指令能帮你很大的忙!

4.6 测试

python
import tensorflow

如果之前安装的cudnn文件是cudnn-8.0-linux-x64-v5.1.tgz,则会出现以下问题:

这里写图片描述
核心部分是
这里写图片描述
解决方法就是安装这个版本的cudnn,cudnn-8.0-linux-x64-v6.0.tgz

测试样例

$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>

结果如下代表配置成功,大功告成

这里写图片描述

如果报错

ImportError: libnvidia-fatbinaryloader.so.384.111: cannot open shared object file: No such file or d……

解决方案

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}:/usr/lib/nvidia-384/

记得保存下环境,见前面的anaconda保存环境的方法

参考ImportError: libnvidia-fatbinaryloader.so.384.111: cannot open shared object file: No such file or d


如果机器中有多块 GPU,tensorflow会默认吃掉所有能用的显存, 如果实验室多人公用一台服务器,希望指定使用特定某块GPU。 可以在文件开头加入如下代码

import os  
  
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"   
os.environ["CUDA_VISIBLE_DEVICES"]="0,1"  

0 是 0 号 GPU,1 是 1 号 GPU

4.7 查看 tensorflow 的版本

  • 法一:打开 python
import tensorflow as tf 
tf.__version__
  • 法二:如果 tensorflow 是通过 pip 安装,也可以用如下方式查看版本
pip freeze | grep tensorflow

看 keras 的版本也一样

  • 法一
import keras as k
k.__version__
  • 法二,注意 K 要大写
pip freeze | grep Keras

5 错误总结

错误1:

有一次,我在另一个设备上装好后(GTX 1080ti),import tensorflow 总是失败,错误提示如下:

ModuleNotFoundError: No module named 'tensorflow'

找了很多原因,发现/anaconda3/lib/python3.6/site-packages目录下,并没有
tensorflow,是pip的安装位置出错了。pip -V可以查看pip安装内容所在的位置。要修改的话,可以用如下指令

vim /etc/sudoers

在11行Defaults设置,secure_path中,加入anconda的绝对路径,例如:

/home/your_username/anaconda3/bin:/

最后pip -V 确认下安装的路径

pip 9.0.1 from /home/your_uername/anaconda3/lib/python3.6/site-packages (python 3.6)

如果是在/anaconda3/lib/python3.6/site-packages下,再按照第5)步,安装tensorflow。


错误2:

成功解决:FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is

FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
  from ._conv import register_converters as _register_converters

解决思路

包内出错,是h5py包

解决办法

对h5py进行更新升级
pip install h5py==2.8.0rc1


没有错误,大功告成!

错误3:

【原创】如何解决python进程被kill掉后GPU显存不释放的问题

ps aux|grep user_name|grep python

然后 kill -s -9

6 附录(window 下配置 Tensorflow-GPU)

转载 Windows10下安装Tensorflow-GPU


  • Windows10系统主机(64位)
  • GTX1060显卡
  • 可以上网

Python 3.6.6(Anaconda3以上版本) + CUDA 9.0 + cuDNN 7.0 + visual studio 2015(其它版本也行)

百度云链接:https://pan.baidu.com/s/1xsjmn8kO3cTrHg-ywnh9Aw

1)Python3.6.6 或者 Anaconda 3

推荐用Anaconda ,因为很多库都已经装好,不用手动安装

  • Python 下载地址:https://www.python.org/downloads/
  • Anaconda 镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

在安装python只要勾选 Add to Path 这个选项,其他默认即可,安装地址可以更改。下图是截取别人的图,实际版本不是这个。

进入cmd,输入python,看到下图就是安装成功了。


如果选择用Anaconda3(推荐)——Anaconda的安装与测试实例,则需要把Anaconda 的环境加入系统中

  • Anaconda 的路径
  • Anaconda 下 Scripts 的路径

具体添加细节可以参考这篇博客
anaconda安装及环境变量配置

打开Anaconda Prompt,输入 python 测试
这里写图片描述

2) Cuda 9.0
下载地址:https://developer.nvidia.com/cuda-90-download-archive

按照常规软件安装即可,可能会短暂的黑屏
安装完毕后,在安装目录下,比如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0可以看到如下内容。

打开命令行,输入nvcc -v.看到如下则表示安装成功。

再去环境变量中看下

要有这两个变量,没有自己添加。地址如图所示。

3)cuDNN
下载地址:https://developer.nvidia.com/rdp/cudnn-archive

选择Windows10版本,下载这个需要注册以及回答一些问卷,随便填都没事。下载后是一个压缩包,安装完CUDA后需要用到这个解压后的文件。

我们把下载好的文件解压,如图所示。

将这些文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0目录中。如下图所示。

4)visual studio 2015(其它版本也行,比如2013)
下载地址:https://blog.csdn.net/guxiaonuan/article/details/73775519?locationNum=2&fps=1 我选择的是社区版本,其他版本应该也没问题。安装这个比较费时间,文件比较大。

在安装visual studio 2015过程需要一步注意,需要勾选下图的选项。此外,这个安装后才能安装CUDA。

VS2013 下载地址
链接:https://pan.baidu.com/s/1F1ej7lJlpGp3g5go2YtW7Q 密码:078f

把我们下载后的软件双击,

点击下图最后一个文件安装

接下来就是等待安装过程了。注意上面提到的安装过程即可。安装路径可以修改。

5) Tensorflow-GPU
在命令行下安装tensorflow-gpu,pip3 install tensorflow-gpu

在这里,我遇到一个问题,解决方法是下载numpy这个库,在重新安装。pip unstall numpy。然后在pip install numpy。接着在继续输入pip3 install tensorflow-gpu。如果有问题可以百度下解决方案。


如果安装的anaconda的话,打开 Anaconda Prompt
pip install tensorflow-gpupip3 install tensorflow-gpu==XXX可以下对应版本的 TensorFlow,比如 1.8,pip下载东西加速的方法可以参考这篇博客 服务器上配置 Tensorflow GPU 版

如果 用 Anaconda 安装的话,就不会存在这种问题了

安装完成后打开 python 用以下指令看下tensorflow版本。

 import tensorflow as tf
 tf.__version__

6)测试
接着我们来测试下是不是在GPU下运行。

import tensorflow as tf
 
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
 
print (sess.run(c))

可以看到GPU的信息。

在GPU上运行。

7)心得体会

1 安装过程很繁琐,需要耐心

2 有些问题可以参考别人的答疑

3 GTX1060的驱动最好事先安装好,我这是先来的主机,所以是自己装的。

4 参考https://www.leiphone.com/news/201711/GCh0IBszXrxP1iHU.html

5 多试错多犯错

8)赠品

  • pycharm

Pycharm及python安装详细教程

  • keras 的安装(2.1.6是对应的版本)
pip install keras==2.1.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • opencv 的安装
conda install opencv

9)错误总结
用 anaconda 安装完 tensorflow 后 pip 出故障

TypeError: parse() got an unexpected keyword argument 'transport_encoding'

解决方法 TypeError: parse() got an unexpected keyword argument ‘transport_encoding’ 安装tensor后报错

conda install pip==9.0.1
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值