为了加速神经网络的训练,使用CPU训练速度很慢,所以使用cuda和cudnn对神经网络进行加速,在配置的过程中遇到了很多坑,大概配置了一两天,感觉是我配置环境以来最繁杂的一次了,各种坑,网上也有很多教程但是实现起来各种ERROR,真心觉得累。经过差不多两天的时间终于把环境配置好。
显卡:GeForce GTX 1070ti
CPU:AMD Ryzen 7 2700x
系统:Ubuntu 18.04
cuda:9.0版本
cuDNN: cuDnn v7
anaconda :3.5版本
TensorFlow:1.8版本
Keras:默认安装最新版
我使用的是ppa源安装的方式,因为之前也从网上从官网上下载run文件进行安装,但是但是后面出现崩溃,又得重新安装,所以这里只讲解ppa源的安装方式。
原来Linux默认安装的显卡驱动不是英伟达的驱动,所以先把旧得驱动删除掉。
# 删除
sudo apt-get purge nvidia*
# 打开配置文件
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
填写禁止配置的内容:
blacklist nouveau
options nouveau modeset=0
更新配置文件,
sudo update-initramfs -u
最后需要进行重启重启之后,因为禁止了显卡的驱动,所以重启后显示的效果很不好,通过这个可以看出,是否完成这一步操作。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
查看合适的驱动版本:
ubuntu-drivers devices
如图所示:
从图中可以看出可以选择的驱动版本,在这里我选择最高的版本396的。通过如下命令进行安装:安装 完后需要进行重启。
# 安装
sudo apt-get install nvidia-driver-396
# 重启
sudo reboot
安装完后,通过如下命令检测是否安装成功,如果成功会显示如下图所示。
sudo nvidia-smi
sudo nvidia-settings
完成显卡驱动的安装。
首先在官网上下载run 文件,如图所示,选择合适run文件。
在下载完成后在运行这个run文件之前先安装依赖库,这个是什么鬼库我也不懂,是看了这个教程来做的。
# 依赖库安装
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
但是不做这个步骤直接运行run文件会出现如图所示。
所以安装依赖库是为了解决这个问题。
CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以,需要自己进行配置,通过以下命令才对gcc版本进行修改。
# 查看版本
g++ --version
# 版本安装:
sudo apt-get install gcc-5
sudo apt-get install g++-5
通过命令替换掉之前的版本:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
最后记得再次查看版本是否修改成功。
运行run文件。
sudo sh cuda_9.0.176_384.81_linux.run
注意:在安装过程中会提示是否需要安装显卡驱动,如图所示,在这里要选择n,其他的选择y或者回车键进行安装。
到最终的结果如果没有错误,得到的结果如图所示:
其他不正确的形式:
还有其他形式的,但是没有截屏,对于这种情况可能是某些依赖库没装好还是什么我也不太懂,但是我解决的方法是先安装一下依赖库。然后重启,结果就可以了。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
完成以上的步骤以后一定要进行环境的配置。按步骤输入一下命令:
sudo gedit ~/.bashrc
会弹出一个可写的配置文件,在末尾把以下配置写入并保存。
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
最后执行
source ~/.bashrc
有时候也需要重启。最好重启一下。
在安装的时候也也相应安装了一些cuda的一些例子,可以进入例子的文件夹然后使用make命令执行。从网上找了两个例子,例一:
# 第一步,进入例子文件
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
# 第二步,执行make命令
sudo make
# 第三步
./deviceQuery
如果结果有GPU的信息,说明安装成功。
例二:
# 进入例子对应的文件夹
cd NVIDIA_CUDA-9.0_Samples/5_Simulations/fluidsGL
# 执行make
make clean && make
# 运行
./fluidsGL
当执行这个例子,我们会看到流动的图,刚开始可能看不到黑洞,需要等待一小段时间。
当运行这个程序的时候我们可以通过如下命令查看GPU是否在使用:
nvidia-smi
运行以上程序的前后对比如图所示:
完成CUDA 9.0 的安装。
cuDNN安装的方式非常简单,官网的安装指南有两种方式进行安装。我随便选择了一种方式进行安装。在这个方式中首先需要下载合适的安装包,因为我的CUDA 是9.0的版本,所以选择如下图三个文件安装包:
安装过程如下:
# 安装命令
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb
安装完以后需要进行测试是否安装成功,测试的过程如下图所示:
# 如图中的命令
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
最终如果有提示信息:“Test passed! ”,则说明安装成功,如图所示:
对于anaconda3 的安装非常简单,从官网中直接下载3.5版本的sh文件。然后执行如下命令对conda进行安装,我下载的是Anaconda3-5.1.0-Linux-x86_64.sh,过程直接yes、yes安装即可,对于不懂的可以看这个更详细的教程。
bash Anaconda3-5.1.0-Linux-x86_64.sh
安装完成后要重启电脑才能打开jupyter notebook。重启之后在终端输入一下命令进入notebook:
jupyter notebook
打开notebook界面如下,是生成在浏览器中的.
安装完anaconda 以后可以在终端直接用pip 对TensorFlow和Keras进行安装:
# 安装 gpu 版本的 tensorflow 和 keras
pip install tensorflow-gpu # 默认安装最新版本
pip install keras
对于测试的代码可以使用手写数字识别进行测试,在GitHub这里可以找到。我用自己的项目跑了一下,是在jupyter notebook上运行的,使用的框架是Keras。对比使用CPU和使用GPU加速对神经网络进行训练的对比,如图所示:
CPU训练:
GPU加速训练:
通过以上的对比,明显发现使用GPU加速比单独使用cup对神经网络进行训练快了很多。
使用如下命令查看训练神经网络前和训练神经网络时GPU使用的情况:
nvidia-smi
通过比较前后,GPU的使用情况可以发现训练时调用的GPU,没有训练时GPU的利用率不到百分之十,图上的GPU利用率直接为0,训练时GPU的利用率直接飙升到92%,说明安装的过程没有问题。完成环境的配置。
感觉经历了九九八十一难,最终终于把环境搭好,虽然搭建的过程遇到了很多坑,但是搭建完成之后,回过来一看感觉也没那么难,各种配置和需要依赖哪些库的问题,还有就是版本的匹配,以为需要安装多个软件,最难的就是版本的匹配问题,又因为Ubuntu18.04算是最新发布的,在安装cuda和cudnn中还没有匹配得,最高也是17.04的版本,但是在安装过程中发现Ubuntu 18.04的兼容性很好。最后要感谢一下网上各位大佬的分享。
1.Ubuntu 安装 Anaconda3 详细步骤
2.Ubuntu 18.04 安装Tensorflow遇到的问题
3.ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装
4.深度学习准备之Ubuntu下装显卡驱动
5.Ubuntu16.04安装CUDA8.0+CUDNN7
6.Ubuntu 安装 tensorflow-gpu + keras
7.在Ubuntu 18.04上安装Tensorflow
8.ubuntu 下GPU版的 tensorflow / keras的环境搭建
对于有错的或者问题欢迎留言,共同进步。