服务器上配置 Tensorflow GPU 版

文章目录

  • 1 主要参考
  • 2 配置介绍
  • 3 安装流程
  • 4 详细流程
    • 4.1 显卡驱动的安装
    • 4.2 CUDA的安装
    • 4.3 CUDNN的安装
    • 4.4 Anaconda3安装(可选)
    • 4.5 安装 tensoflow-gpu
      • 4.5.1 安装指定版本
      • 4.5.2 加速(换源、timeout)
      • 4.5.3 超级VIP加速
      • 4.5.4 pip 查看已经安装包的命令以及版本
    • 4.6 测试
    • 4.7 查看 tensorflow 的版本
  • 5 错误总结
    • 错误1:
    • 错误2
  • 6 附录(window 下配置 Tensorflow-GPU)


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


1 主要参考

  • (超完整)Linux(debian9)服务器配置tensorflow环境:nvidia驱动、CUDA、cudnn、anaconda

  • 阿里云centOS6 下python安装及配置、pip安装及配置、ipython安装及配置

  • “libcudnn.so.5 cannot open shared object file: No such file or directory”

  • libcudnn.so.6 –csdn下载

  • 给妹纸的深度学习教学(6)——实用技巧

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

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

服务器上配置 Tensorflow GPU 版_第1张图片

安装驱动程序

sh NVIDIA-Linux-x86_64-xxx.run

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

cat /proc/driver/nvidia/version

4.2 CUDA的安装

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 可以跳过协议的文字描述!
服务器上配置 Tensorflow GPU 版_第2张图片

安装结束后添加环境变量(我习惯用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

服务器上配置 Tensorflow GPU 版_第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

补充 用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 ,删除虚拟环境中的某个包

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
  • 阿里云:http://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 华中理工大学:http://pypi.hustunique.com/
  • 山东理工大学:http://pypi.sdutlinux.org/
  • 豆瓣: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下载安装速度慢

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

pip freeze

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

4.6 测试

python
import tensorflow

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

服务器上配置 Tensorflow GPU 版_第4张图片
核心部分是
这里写图片描述
解决方法就是安装这个版本的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
>>>

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

服务器上配置 Tensorflow GPU 版_第5张图片

如果报错

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

服务器上配置 Tensorflow GPU 版_第6张图片

没有错误,大功告成!

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,看到下图就是安装成功了。

服务器上配置 Tensorflow GPU 版_第7张图片

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

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

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

打开Anaconda Prompt,输入 python 测试
服务器上配置 Tensorflow GPU 版_第8张图片

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

服务器上配置 Tensorflow GPU 版_第9张图片

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

服务器上配置 Tensorflow GPU 版_第10张图片

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

再去环境变量中看下

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

服务器上配置 Tensorflow GPU 版_第11张图片

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

服务器上配置 Tensorflow GPU 版_第12张图片

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

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

服务器上配置 Tensorflow GPU 版_第13张图片

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

服务器上配置 Tensorflow GPU 版_第14张图片

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

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

服务器上配置 Tensorflow GPU 版_第15张图片

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

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

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

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

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

服务器上配置 Tensorflow GPU 版_第16张图片

在这里,我遇到一个问题,解决方法是下载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 版。

服务器上配置 Tensorflow GPU 版_第17张图片

如果 用 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的信息。

服务器上配置 Tensorflow GPU 版_第18张图片

在GPU上运行。

服务器上配置 Tensorflow GPU 版_第19张图片

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

你可能感兴趣的:(Server,Config)