由于基于tensorflow的神经网络在CPU上运行速度太慢,在GPU上运行速度会快很多,但是在linux系统上tensorflow-GPU运行配置比较麻烦,有很多坑需要踩,网上的很多教程和自己使用的环境不匹配,所以针对这个情况自己做一个总结,总结一下tensorflow-gpu版本在linux服务器上的配置过程,及其中遇到的问题,给大家提供参考和交流。
环境:linux+Anaconda3+python3.5+CUDA9.0+cudnn7.0
安装流程:
一. Anaconda下载及安装
二. 建立tensorflow gpu版本环境(包括配置清华镜像)
三. CUDA下载及安装
四. cudnn下载及配置
五. pycharm下载及安装
一. Anaconda下载及安装
官网地址:https://www.anaconda.com/distribution/#download-section
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
下载linux系统的Python3.7 version。
输入命令bash bash Anaconda3-2019.03-Linux-x86_64.sh安装Anaconda。
显示
在标红框处输入yes和安装目标路径,
继续选择yes,
等待安装完成。安装完成后,输入conda --version如果显示版本信息则安装成功。
如果如下图所示无法显示
输入source ~/.bashrc,
Anaconda安装完成。
二. 建立tensorflow gpu版本环境
建立tensorflow环境,基于python3.5。
输入conda create -n (环境名称) python=3.5(python必须3.5或3.6,3.6以上版本tensorflow可能会报错),
然后输入y,
等待完成。
conda env remove -n (环境名称) (删除环境)
conda env list (查看所有环境)
输入source activate tensorflow35(我的环境名称为tensorflow35),进入创建的tensorflow环境。
在安装之前配置清华镜像,下载速度会很快;如果不想配置清华镜像,则忽略下面这部分,唯一的区别就是下载速度比较慢。
在~/.config/.pip目录下新建(或修改)pip.conf文件(可以先在windos下新建一个txt文档,然后修改文件名和后缀名;再新建一个.pip文件夹,将文件放入)
然后在文件中输入如下信息:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
几个常用的国内源,大家可以自己选择,替换文件中的网址就可以:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
继续安装tensorflow,先安装tensorflow-cpu版,输入pip install tensorflow,
(不需要安装cpu版之后再安装gpu版,如果想直接安装tensorflow-gpu版,输入pip install tensorflow-gpu==1.10)
(tensorflow1.11及以上版本会因cudnn7.0报错,下面安装cudnn时具体说)
等待安装完成,输入pip list可以查看当前环境下的安装包。
输入python回车,输入import tensorflow,如果没有报错说明tensorflow-cpu版配置成功。
至此,tensorflow-cpu版配置成功,接下来继续配置tensorflow-gpu版。
三. CUDA下载及安装
CUDA和cudnn版本需要配对,CUDA也需要根据自己系统的配置
首先确认安装环境:
1.确认linux内核版本
输入cat /etc/redhat-release,查看linux内核。
2.确认gpu
输入 lspci | grep -i nvidia,查看gpu版本,
gpu要求算力3.0以上,大家可以对照型号,在下面链接检查自己的电脑是否支持
https://developer.nvidia.com/cuda-gpus
3.确认是否安装gcc
输入gcc --version。
4.确认nouveau已禁用
输入lsmod | grep nouveau,如果没有输出则说明已禁用。
正确安装NVIDIA驱动就会禁止。
确认过程如下图所示:
接下来安装NVIDIA驱动:
首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:驱动文件后缀名应当是以.run结尾的。
输入以下命令下载并安装nvidia驱动:
输入nvidia-smi,有如下显示则说明驱动安装成功:
然后确认CUDA与cudnn配对版本,并下载适合自己系统的版本
https://blog.csdn.net/omodao1/article/details/83241074
推荐下载CUDA9.0和cudnn7.0.
下载CUDA:https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux
等待下载完成。
输入sh cuda_9.0.176_384.81_linux-run进行安装,
按如下输入:
安装驱动时一定要选 “n”。
如果安装时出现空间不足的情况:
则在安装前输入三行:
如果还不行,把安装文件改成.run,再执行上述操作:
等待安装完成。安装结束后输入(地址是自己的安装地址):
export PATH="/mnt/jackfrost//CUDA/cuda-9.0/bin:$PATH"
export LD_LIBRARY_PATH="/mnt/jackfrost/CUDA/cuda-9.0/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME=/mnt/jackfrost/CUDA/cuda9.0
source ~/.bashrc
然后输入nvcc -V,如果显示CUDA版本信息代表正常。
测试sample例子:
#编译并测试设备 deviceQuery:
cd ~/cuda-9.0/samples/1_Utilities/deviceQuery
./deviceQuery
#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
./bandwidthTest
如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功。
四. cudnn下载及配置
下载地址:https://developer.nvidia.com/rdp/cudnn-archive (需要注册才能下载)
输入tar -zxvf cudnn-9.0-linux-x64-v7.tgz解压,
然后将库(.lib)和头文件(.h)copy到cuda目录(一定是你自己安装的目录如/mnt/jackfrost/CUDA/cuda-9.0)
cp /mnt/jackfrost/cudnn/cuda/include/cudnn.h /mnt/jackfrost/CUDA/cuda-9.0/include
cp /mnt/jackfrost/cudnn/cuda/lib64/libcudnn* /mnt/jackfrost/CUDA/cuda-9.0/lib64
然后修改文件访问权限:
chmod a+r /mnt/jackfrost/CUDA/cuda-9.0/include/cudnn.h /mnt/jackfrost/CUDA/cuda-9.0/lib64/libcudnn*
到这里tensorflow配置完成。
测试tensorflow,输入source activate tensorflow35,
如代码所示:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
如果出现如下错误:
[cudnn报错解决]Loaded runtime CuDNN library:7.0.5 but source was complied with:7.2.1
五. pycharm下载及安装
pycharm下载:https://www.jetbrains.com/pycharm/download/
输入tar -zxvf pycharm-community-2018.3.5.tar.gz解压:
然后在bin文件夹下输入./pycharm启动pycharm,
配置运行环境Files->Settings->Project Interpreter->add:
add添加环境,如下图所示,选到自己建立的tensorflow环境:
pycharm+Anaconda+tensorflow配置完成。