写两篇日志记录下配置深度学习环境的流程和心得。目标是快速搭建出深度学习环境,实现局域网内多人共享访问。分成两部分来写,上篇主要讲快速的配置操作系统和底层环境,包括Ubuntu,CUDA,cuDNN的安装,下篇主要讲软件环境的配置和使用。

注:TensorFlow 1.6 预编译版不支持 CUDA 9.1,只支持9.0。请注意下面的路径和安装文件大部分都是9.1。

快速安装过程

  1. 安装最新版Ubuntu 16.04 Desktop 桌面版

  2. 准备工作:
    下载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
  1. 屏蔽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

  1. (建议)永久关闭图形界面:更改运行级别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
  1. 执行安装(注意参数,不安装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测试用例(自行查看官方说明)。

  1. 注册下载 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要求的版本不匹配

  1. 谨慎使用最新版NVIDIA驱动和Ubuntu自带的附加驱动
  2. 建议使用CUDA自带的GPU驱动程序,不建议单独安装驱动程序
  3. 建议参考官方教程进行安装
  4. 旧版教程参考意义不大
  5. 建议关掉图形界面进行安装

Troubleshooting

  1. 安装过程出现 "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 命令确保内核版本正确

  2. 如果确认内核版本没问题了,还出现(1)的问题,再尝试安装以下包:

    apt-get install linux-source
    apt-get source linux-image-$(uname -r)
    apt-get install linux-headers-$(uname -r)
    
  3. 其他你可能遇到的问题,可以参考:

    官方教程: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/

多人环境配置

  1. 安装ssh服务器:sudo apt-get install openssh-server
  2. 安装samba服务:sudo apt-get install samba
  3. 创建多个用户:用到的命令:useradd,usermod等