摘要:Ubuntu18.04、GCC降低、CUDA版本的选择、cuDNN的选择
前言:在经历一整天反复安装卸载后决定对每一步进行详细记录和分析
对版本选择的考虑
我的目的是在Ubuntu18.04安装GPU版本的Tensorflow进行学习,根据TF官网对CUDA&cuDNN的支持信息:
软件要求
必须在您的系统上安装以下NVIDIA®软件:
- NVIDIA®GPU 驱动程序 -CUDA 9.0需要384.x或更高版本。
- CUDA®Toolkit- TensorFlow支持CUDA 9.0。
- CUPTI附带CUDA工具包。
- cuDNN SDK(> = 7.2)
- (可选) NCCL 2.2支持多GPU支持。
- (可选) TensorRT 4.0 可以改善某些型号推理的延迟和吞吐量。
于是在考虑最新的TF版本情况下,我决定安装CUDA9.0+cuDNN7.3版本
cudnn:https://developer.nvidia.com/rdp/cudnn-download(需要先注册账户)
然而尴尬的是CUDA9.0没有ubuntu18.04的选择,不想重装ubuntu,于是我决定下载17.04版本试试看
最终下载版本:cuda_9.0.176_384.81_linux.run & cudnn-9.0-linux-x64-v7.3.1.20.tgz
安装CUDA
1.安装依赖关系
参考:https://www.cnblogs.com/Ph-one/p/9000211.html
1 | sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev |
根据诸多博客的经验,还需要先降低GCC版本,以下是我的gcc版本信息:
1 | root@zhou-pc:~# gcc --version |
降低GCC版本:
1 | sudo apt install gcc-5 g++-5 |
根据提示开始安装低版本
然后替换:
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 # you will find that message that tells you the gcc-5 is set to be automatic. |
2.开始安装CUDA
1 | root@zhou-pc:~# cd /home/zongpu/下载 |
ctrl+c 可快速结束阅读文档
接下来:
Do you accept the previously read EULA?
accept/decline/quit: accept
看到这个我是很荒的,但是博客https://www.cnblogs.com/Ph-one/p/9000211.html也是在ubuntu18.04上安装了cuda9,就当试试
You are attempting to install on an unsupported configuration. Do you wish to continue?
(y)es/(n)o [ default is no ]:
其他选项我都选了y(es),静静等待安装。
设置环境变量:
1 | sudo gedit ~/.bashrc |
#在打开的文本中添加
1 | export PATH=/usr/local/cuda-9.0/bin:$PATH |
更新:
1 | source ~/.bashrc |
验证CUDA9.0是否安装成功:
1 | cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery |
输出为:
1 | CUDA Device Query (Runtime API) version (CUDART static linking) |
测试说明安装成功!
安装cuDNN
之前已经下载好了文件现在直接安装:
1 | tar -zxvf cudnn-9.0-linux-x64-v7.3.1.20.tgz |
执行以上命令后,测试是否安装好:
1 | nvcc -V |
输出:
1 | nvcc: NVIDIA (R) Cuda compiler driver |
cuDNN安装成功!
安装Tensorflow
1检查并准备所需python环境
根据TF官网安装引导查看:https://tensorflow.google.cn/install/pip
1 | python3 --version |
发现:
1 | Command 'virtualenv' not found, but can be installed with: |
我的virtualenv 没有安装,根据提示安装virtualenv :
1 | sudo apt install virtualenv |
安装成功后,安装TF,在这里我用官网引导的安装方式:创建Python虚拟环境用于将程序包安装与系统隔离,
不同于在之前我自己直接pip install tensorflow-gpu
步骤如下:
通过选择Python解释器并创建一个./venv
目录来保存它,从而创建一个新的虚拟环境 :
1 | virtualenv --system-site-packages -p python3 ./venv |
如下:
1 | root@zhou-pc:~# virtualenv --system-site-packages -p python3 ./venv |
使用特定于shell的命令激活虚拟环境(以后每次使用TF前激活):
1 | source ./venv/bin/activate # sh, bash, ksh, or zsh |
当virtualenv处于活动状态时,shell提示符前缀为(venv)
,如下:
1 | root@zhou-pc:~# source ./venv/bin/activate |
在虚拟环境中安装软件包,而不会影响主机系统设置。从升级开始pip
:
1 | pip install --upgrade pip |
并在以后退出virtualenv(我们要在这个环境中安装TF,现在不能退出):
1 | deactivate #在使用TensorFlow完成之前不要退出 |
值得一提的是:当环境创建好了,我们必须在每次使用tensorflow时激活它
2.安装TensorFlow(在虚拟环境venv中)
1 | pip install tensorflow-gpu |
最后输出:
1 | (venv) root@zhou-pc:~# python -c "import tensorflow as tf; print(tf.__version__)" |
greaat!现在我们安装TF成功!
一个问题:在虚拟环境中安装的始终是cpu版本,不知道为什么;不在虚拟环境中可顺利安装GPU版本。
3.做一些测试(在venv环境以及非虚拟环境)
执行:
1 | python |
非虚拟环境时可看到(展示部分):
1 | GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1 |
虚拟环境中:
1 | I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA |
安装keras
参考:https://keras-cn.readthedocs.io/en/latest/for_beginners/keras_linux/
类似指令比较多,我没有关注他们的区别:
1 | sudo pip install -U --pre keras |
安装anaconda
先下载anaconda的安装文件,我的版本是:Anaconda3-5.3.0-Linux-x86_64.sh
cd进文件所在目录执行:
1 | bash Anaconda3-5.3.0-Linux-x86_64.sh |
阅读文档(ctrl+c快速读完),按提示选择各个选项,进行安装:
其中涉及安装路径、添加环境变量、安装vs code的几个选项,根据提示选择。
但是安装时我选了环境变量后来还是不能启动anaconda,于是手动添加了一遍:
1 | 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin |
执行:
1 | conda list |
看到各个组件信息则为成功
启动anaconda(暂停终端则断开):
1 | anaconda-navigator |
打开 Jupyter Notebook:
1 | ipython notebook |
在最开始安装anaconda时,我用root权限进行安装,结果Jupyter不能运行,
1 | root@zhou-pc:/home/zongpu/下载# ipython notebook |
这应该是我对anaconda的作用不太了解,另外都使用了默认安装路径,不知道在以后要用到的时候会不会出问题。
卸载anaconda:
1 | rm -rf ~/anaconda3 |
补充
一篇基于anacond安装TF的文章:
Ubuntu环境下基于Anaconda安装Tensorflowhttps://blog.csdn.net/hgdwdtt/article/details/78633232