之前配置深度学习keras环境没有配置GPU加速,这次重装了Ubuntu并重新配置环境。本次重点记录配置Cuda和Cudnn,剩余详细配置情况参考以下链接。
http://blog.csdn.net/qq_32329377/article/details/53008019#comments
官网下载Anaconda,版本根据Ubuntu系统以及想要使用的Python版本选择。
在下载的文件目录下打开终端输入:
~$ bash Anaconda2-5.0.1-Linux-x86_64.sh
按照步骤选择下一步知道安装结束。
安装结束后由于Anaconda官方服务器在国外,使用命令更新安装包非常慢,经常安装失败,所以切换到国内的清华大学提供的库。
终端输入:
conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
conda config --set show_channel_urls yes
因为安装了Anaconda,所以现在就可以直接使用conda
命令来安装包。
终端输入:
~$ conda install theano
~$ conda install tensorflow
~$ conda isntall keras
这里解释一下为什么要装Tensorflow,因为keras默认后端为Tensorflow,之后需要将后端切换为Theano,所以为了省去一些不必要的麻烦,安装了Tensorflow。(不知道不安装有没有问题,可以尝试。。。)
安装完成可以尝试测试一下是否成功:
~$ python
~$ >>> import keras
出现using tensorflow backend
说明安装成功了。
安装成功后,需要将后端切换。根据官方文档中的方法:
打开keras的配置文件(至少运行过一次keras)
~$ sudo gedit .keras/keras.json
讲文件中 ‘tensorflow’改为 ‘theano’就可以了。
目前cuda已经出到9.0了,在尝试安装了之后,笔记本NVIDIA驱动不支持,cuda自带的nvidia-384.81版本以及换了n个版本的驱动都不可以,无奈只能退回到Cuda8.0。下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive。
另外,官网上点击下载会直接跳到最新版本的下载界面,而不给出其他版本的下载地址,所以找到这个链接还是费了很大功夫的。。。
首先点击Release Notes,会出现文档,在右上角版本号之后有(older)点击链接才会出现之前的版本链接。(PS:如果有其他的方法,欢迎留言补充。)
注意下载runfile(local)版本,deb版本据说有很多坑。。。
3.1 安装NVIDIA驱动
选择合适的版本下载,下载完成后在安装时需要选择:
1)自行安装NVIDIA驱动。
~$ nvidia-smi
可以看到版本信息表示安装成功了。
2)安装Cuda携带的驱动
下载的Cuda8.0是自带nvidia-375.26驱动版本的,如果你的电脑适合该驱动可免去自己安装的麻烦。
但是该驱动版本较低,如果如果想要安装较高的版本,请使用第一种方式。
3.2 安装Cuda8.0
安装Cuda过程中,需要注意,如果不安装自带NVIDIA驱动,在选择是否安装nvidia-375.26时一定要选no
之后的选择按默认的选择即可。
安装命令:
~$ sudo ./cuda_8.0.61_375.26_linux.run
安装完成后需要配置环境变量,在~/.bashrc
之后添加:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
设置环境变量和动态链接库,终端输入:
~$ sudo gedit /etc/profile
打开profile文件,在末尾添加:
export PATH=/usr/local/cuda/bin:$PATH
保存之后,创建链接文件
~$ sudo gedit /etc/ld.so.conf.d/cuda.conf
在文件中添加:
/usr/local/cuda/lib64
保存退出,执行命令行:
sudo ldconfig
使链接立即生效。
3.3测试Cuda
终端输入:
~$ cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
~$ sudo make
~$ sudo ./deviceQuery
下载Cudnn需要注册账户,登录后即可看到下载页面,选择对应Cuda的版本。
我选择的是Cudnn v5.1,下载完成后解压,
~$ sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
解压后进行如下操作:
~$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
~$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
~$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
~$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
至此Cuda+Cudnn就配置结束了。
~$ sudo gedit ~/.theanorc
在打开的空文件中添加一下信息:
[global]
floatX=float32
device=gpu
[nvcc]
fastmath = True
optimizer_including=cudnn
[cuda]
root=/usr/local/cuda-8.0
[lib]
cnmem = 0.7
在python环境下输入:import theano
出现一下信息表示配置成功。
这里参考其他的教程中cnmem都大于0.8,但是我的环境中cnmen=0.8会出现如下错误:
ERROR (theano.sandbox.cuda): ERROR: Not using GPU. Initialisation of device gpu failed:
initCnmem: cnmemInit call failed! Reason=CNMEM_STATUS_OUT_OF_MEMORY. numdev=1
经过调试最大只能为0.7,具体原因还有待研究。
Cuda配置部分参考https://www.cnblogs.com/xujianqing/p/6142963.html
Cudnn配置部分参考http://m.blog.csdn.net/u012815879/article/details/78135663