写两篇日志记录下配置深度学习环境的流程和心得。目标是快速搭建出深度学习环境,实现局域网内多人共享访问。分成两部分来写,上篇主要讲快速的配置操作系统和底层环境,包括Ubuntu,CUDA,cuDNN的安装,下篇主要讲软件环境的配置和使用。
注:TensorFlow 1.6 预编译版不支持 CUDA 9.1,只支持9.0。请注意下面的路径和安装文件大部分都是9.1。
快速安装过程
-
准备工作:
下载CUDA 9.1安装文件,
其他依赖环境如gcc,Ubuntu最新版已经自带,
卸载已有的NVIDIA驱动(可选):sudo apt-get remove --purge nvidia*
一些开发需要的包(可选):
sudo apt-get install build-essential
sudo apt-get install vim cmake git
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
- 屏蔽nouveau,
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
,加入
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
禁用 nouveau 内核模块
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
重启计算机 sudo reboot
- (建议)永久关闭图形界面:更改运行级别runlevel为3,
sudo systemctl set-default multi-user.target
,修改启动界面为纯文本,sudo vi /etc/default/grub
,修改GRUB_CMDLINE_LINUX_DEFAULT="text"
,保存,sudo update-grub
,重启后即为text mode。
临时关闭图形界面:
切换至文本模式(ctrl+alt+F1),登录并切换至cuda安装文件所在目录,关闭GUI服务。
sudo service lightdm stop
- 执行安装(注意参数,不安装opengl-lib)
sudo sh cuda_<version>_linux.run --override --no-opengl-lib
Do you accept the previously read EULA? (accept/decline/quit): accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64? ((y)es/(n)o/(q)uit): y
Install the CUDA Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-9.1 ]:
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y
Install the CUDA Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /home/user ]:
如果安装没有报错,重启使驱动生效。检查驱动状态: nvidia-smi
。
6.修改环境变量: (可编辑 .bashrc 或 /etc/profile 文件)
$ export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
编译运行CUDA测试用例(自行查看官方说明)。
- 注册下载 NVIDIA cuDNN (加速神经网络计算),安装只需要解压复制到对应位置即可
Unzip the cuDNN package.
$ tar -xzvf cudnn-<>.tgz
Copy the following files into the CUDA Toolkit directory.(注意路径)
$ 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 /usr/local/cuda/lib64/libcudnn*
编译运行CUDA测试用例(自行查看官方说明)。
解决问题的思路
主要问题:NVIDIA驱动装不上(或者装完图形界面出现问题)、驱动装上了但和CUDA要求的版本不匹配
- 谨慎使用最新版NVIDIA驱动和Ubuntu自带的附加驱动
- 建议使用CUDA自带的GPU驱动程序,不建议单独安装驱动程序
- 建议参考官方教程进行安装
- 旧版教程参考意义不大
- 建议关掉图形界面进行安装
Troubleshooting
-
安装过程出现 "The driver installation is unable to locate the kernel source. ",使用uname -r查看内核版本,如果高于4.10,如4.13.0,CUDA 9.1自带驱动不支持最新Linux内核,请降级内核:
sudo apt-get purge linux-image-4.13.0-26-generic sudo apt-get purge linux-headers-4.13.0-26-generic
Update initramfs image:
sudo update-initramfs -u
重启,使用 uname -r 命令确保内核版本正确
-
如果确认内核版本没问题了,还出现(1)的问题,再尝试安装以下包:
apt-get install linux-source apt-get source linux-image-$(uname -r) apt-get install linux-headers-$(uname -r)
-
其他你可能遇到的问题,可以参考:
官方教程:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#runfile-nouveau
各种问题解决方法和解释:https://www.linkedin.com/pulse/installing-nvidia-cuda-80-ubuntu-1604-linux-gpu-new-victor/
多人环境配置
- 安装ssh服务器:
sudo apt-get install openssh-server
- 安装samba服务:
sudo apt-get install samba
- 创建多个用户:用到的命令:useradd,usermod等