文章目录
- 1 主要参考
- 2 配置介绍
- 3 安装流程
- 4 详细流程
- 4.1 显卡驱动的安装
- 4.2 CUDA的安装
- 4.3 CUDNN的安装
- 4.4 Anaconda3安装(可选)
- conda 虚拟环境管理
- 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:
- 错误3:
- 6 附录(window 下配置 Tensorflow-GPU)
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”
- 给妹纸的深度学习教学(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
更多配对版本参考: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的安装
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://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
conda 虚拟环境管理
补充 用conda创建python虚拟环境,常用指令
- conda list 查看安装了哪些包
- conda env list 查看当前存在哪些虚拟环境
- conda create -n your_env_name pythnotallow=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/
用 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)
如果中途失败,或者下载速度不够块,换源,不会的小伙伴可以参考这篇文章
或者加个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库。
也可以借助代理
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系统主机(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)
下载地址: 我选择的是社区版本,其他版本应该也没问题。安装这个比较费时间,文件比较大。
在安装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-gpu
,pip3 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
- 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