本文档讲述的是搭建深度学习环境的过程,旨在给各位入坑深度学习的小伙伴提供一个环境安装的说明。
截止到本文档写作时间,cuda已经更新到9.0。由于使用cuda9来编译Tensorflow会遇到各种问题,我在安装好cuda9.0后又卸载了cuda9.0,重新安装了cuda8.0,才顺利编译了Tensorflow。
本文档基于已有的硬件环境和软件环境安装了GTX 1080 Ti的驱动程序,以及cuda8.0和cuDNN6.0。
本次搭建深度学习环境的硬件配置如下:
硬件 | 配置 |
---|---|
处理器 | Intel Xeon(R)CPU E5-2640 v4@ 2.40GHz x 20 |
内存 | 64G |
硬盘 | 1.3TB |
图形卡 | GeForce GTX 1080Ti/PCle/SSE2 |
本次搭建深度学习环境的软件如下:
软件 | 配置 |
---|---|
操作系统 | Ubuntu 16.04 64-bit |
首先去官网查找适配自己GPU的驱动版本号。我在官网上查询出来的版本号是384.98。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
$ sudo apt-get install nvidia-384 //384是驱动的版本号
$ sudo apt-get install mesa-common-dev
$ sudo apt-get install freeglut3-dev
$ sudo reboot //重启,以使驱动程序
重启后输入
$ nvidia-smi
如果显示GPU信息,则表明驱动程序安装成功。
也可以通过nvidia-settings查看GPU的信息。
首先去cuda官网下载cuda工具包。
操作系统选择Linux,处理器架构选择x86_64,发布版选择Ubuntu,版本选择16.04,安装类型选择deb(local)。
然后切换到cuda工具包的安装目录下,执行如下命令(cuda的安装路径全部使用默认路径):
$ sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_ga2_8.0.61-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
等待cuda安装结束。安装结束之后(有一个/usr/local/cuda的目录链接到/usr/local/cuda-9.1,后面配置环境变量时可直接使用/usr/local/cuda目录),配置环境变量:
可以配置系统级别的环境变量,也可以配置用户级别的环境变量。
配置系统级别的环境变量,请使用如下命令:
$ sudo vi /etc/profile
配置用户级别的环境变量,请使用如下命令:
$ vi ~/.bashrc
打开文件后,在文件的结尾部分添加如下文本行:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cude/lib64:$LD_LIBRARY_PATH
保存文件并重启电脑。
接下来,测试cuda是否安装成功。
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
如果显示的是关于GPU的信息,则表示cuda安装成功了。
附:cuda的卸载方法:
$ sudo apt-get autoremove --purge cuda
安装cuDNN需要注册在NVIDIA公司的网站上注册一个账号。使用该账号可以免费获得cuDNN。
请在这里下载cuDNN。
这篇文档使用的是cuDNN v6.0。请在v6.0标签下选择下载cuDNN v6.0 Library for Linux。
以下命令请在cuDNN文件所在目录执行。
$ tar -zxvf cudnn-8.0-linux-x64-v6.0.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*
以上命令就将cuDNN的头文件、静态库和动态库都放入了cuda目录下。
最后,执行如下命令,以防在编译Tensorflow或者其他开源深度学习框架时找不到动态库。
$ sudo ldconfig /usr/local/cuda/lib64
注:ldconfig命令的用途是在目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录中,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
参考文献
[1]http://www.52nlp.cn/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-ubuntu17-04-nvidia-gtx-1080-cuda-9-0-cudnn-7-0-tensorflow-1-3