DeepLearningBasic - 深度学习环境搭建——Ubuntu + CUDA + cuDNN安装全套教程
- 本次安装各个版本:
① Ubuntu 18.04.2 LTS
② Nvidia Driver 440.36
③ CUDA 10.0.130_410.48_linux
④ cuDNN 10.0-v7.6.5.32-linux
1. 硬盘空间准备
此次安装为 Windows + Ubuntu 双系统,所以需要先准备 Ubuntu 的硬盘安装空间。在 Windows 中,右键左下角的 Win 图标,选择磁盘管理,通过压缩卷或者删除卷操作,根据需求腾出合适的空间用于安装 Ubuntu 。
如果发现磁盘管理中压缩卷或者删除卷等按钮全部为灰色的,无法操作,可以下载 分区助手 ,一般就可以直接操作。
2. 启动U盘制作
- 准备一个空白U盘(不小于4GB);
- 在 Ubuntu官网 下载系统;
- 使用UltraISO(软碟通):启动=>写入硬盘映像。默认选择USB-HDD+即可,点击写入。
注意:不可直接解压ISO文件至U盘,因为会缺少必要的启动引导而无法安装系统。
- U盘启动盘制作完成。
注意:关于此次安装的 18.04LTS 版本,和之前的 16.04LTS 版本有一点小的区别,在此介绍一下:在18.04中,Ubuntu的图形界面GUI换成了GNORM,而16.04仍然使用的是Unity。
此外,我还尝试了20.04的安装,但是20.04需要关闭Intel的RST,操作相当麻烦,放弃了。
3. USB引导系统安装
-
在安装之前,我们需要先进行一些 BIOS 修改,查询自己电脑进入 BIOS 的按键,然后开机时进入 BIOS ,在设置中,关闭 Secure Boot 选项(该选项其实是微软为了防止用户安装其他的操作系统设置的~小心机~),否则可能会安装失败。此外,在BIOS中将引导模式(Boot)设置为 UEFI 。
-
U盘启动,以Dell台式机为例: 在看到dell logo时,按下F12启动热键打开Boot Menu,选择UEFI模式进行引导,选择U盘开始引导。
3.1 禁用 nouveau 驱动
因为后续需要安装 Nvidia Driver ,所以需要禁用 Ubuntu 自带的 nouveau 驱动,试过多种办法后,找到如下方法来禁用 nouveau 驱动。
-
安装 Linux 系统之前先关闭 Security Boot!(不同主板引导界面中该选项的位置可能不太一致,但是大多数都是 在BIOS boot 选项中的)
-
在进入grub安装界面的时候,选中 Install Ubuntu 选项后按e,进入命令行模式,然后在 ‘quiet slash --’ 后面(也可能没有 – ),添加以下内容 ‘acpi_osi=linux nomodeset’ ,然后按F10重新引导。
quiet splash --- acpi_osi=linux nomodeset
修改上述选项可以在开机的时候,禁用nouveau驱动。
3.2 系统安装
修改完成以上步骤后,进入系统安装选项,正常设置即可。一般分四个区:efi 分区: 500MB ; swap 分区:大致等于内存1~2倍大小;根目录“/”分区():100G左右,根据硬盘大小确定;“/home”目录:剩下所有的容量。
关于分区问题,也有人直接将所有空间分为根目录 ‘/’ ,所以具体如何分区,看个人喜好。
在后续操作过程中,可能会出现安装的窗口有一部分屏幕下方,导致部分按钮无法点击。此时,按下Alt+F7,鼠标会变成手指图标,即将窗口向上拖动即可。安装完成,重启。
3.3 查看系统简要信息
开机进入后,可以使用如下命令查看系统简要信息:
lsb_release -a
LSB是Linux Standard Base的缩写, lsb_release命令 用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。
-v 显示版本信息。
-i 显示发行版的id。
-d 显示该发行版的描述信息。
-r 显示当前系统是发行版的具体版本号。
-c 发行版代号。
-a 显示上面的所有信息。
-h 显示帮助信息。
3.4 检查nouveau驱动是否禁用
开机进入以后,使用如下命令检测nouveau驱动是否禁用:
lsmod | grep nouveau
如果有输出,则说明nouveau驱动正在加载,未禁用,若无输出,则禁用成功。有时候使用上述的方法来禁用 nouveau 驱动,还是不能奏效,所以我找到了另外一个方法来禁用 nouveau 如下:
sudo vim lacklist-nouveau.conf
输入如下内容:
blacklist nouveau
options nouveau modeset=0
ESC 后 :wq
保存并退出。然后,重新配置内核文件:
sudo update-initramfs -u
然后,sudo reboot
重启电脑,再次使用如下命令进行检查,一般能够成功禁用。
lsmod | grep nouveau
如果有输出,则说明nouveau驱动正在加载,未禁用,若无输出,则禁用成功。
3.5 安装中文输入法
在设置 Region & Language界面,点击“+”号,添加Chinese和Chinese(Intelligent Pinyin)两项,并将pinyin置顶。
3.6 开机后的一些小修改
如果安装 Ubuntu 时,选择的语言为简体中文,那么会有一个问题非常影响后续使用,就是文件夹的名称全部为中文的,在使用 shell 的时候,进行文件夹操作非常不便,所以我们进行一些小修改,将文件夹名称改为英文。
打开设置,语言和地区 => 管理安装的语言,在语言支持界面,将英文English拖到最上面,然后退出即可。退出以后,注销并重新进入 Ubuntu ,会提示是否将文件夹名称改为英文,选择同意,修改就会生效。
4. 安装NVIDIA Driver
使用 .deb 安装可以跳过这一步,直接从 这之后 开始执行执行。
注意: 在CUDA Toolkit Documentation 中,有对应的NVIDIA Driver版本和CUDA版本。
一定要下载安装配套的版本!!!!!
重启进入 Ubuntu 以后,要立即安装 NVIDIA 的显卡驱动。可以通过三种方式安装,现在只介绍手动安装方法:
去 NVIDIA 官网查看并下载合适驱动版本:NVIDIA驱动官网
注意: 存储路径名不要有中文!
注意: 在安装NVIDIA Driver之前,需要先安装两个包:gcc和make。
# 首先更新apt包管理源
sudo apt update
# 使用以下命令安装gcc和make
sudo apt install gcc
sudo apt install make
停止可视化桌面:
$ sudo telinit 3
之后会进入一个新的命令行会话,使用当前的用户名密码登录
在相应路径下安装NVIDIA驱动(安装文件也可为.sh后缀,如果提示没有权限使用sudo):
$ bash NVIDIA-Linux-x86_64-384.111.bin
按照以下步骤:
Accept License
The distribution-provided pre-install script failed! Are you sure you want to continue? -> CONTINUE INSTALLATION
Would you like to run the nvidia-xconfig utility? -> YES
在安装结束后,在命令行输入一下命令重启,NVIDIA驱动即可安装成功:
$ sudo reboot
测试nvidia 驱动是否成功安装,使用以下命令:
nvidia-smi
nvidia-settings
4.1 安装一些小组件
gpustat:
可以使用如下命令安装gpustat包,可以查看GPU的一些简要信息:
pip install gpustat
使用 gpustat 可以查看信息:
gpustat
# 输出:
[0] GeForce GTX 1060 6GB | 43'C, 1 % | 481 / 6070 MB | gdm(28M) gdm(48M) lee(281M) lee(81M) lee(12M) lee(1M)
htop:
htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令,相当于一个 Windows 中的务管理器,可以较方便的查看任务。
sudo apt install htop
htop
5. CUDA安装与卸载
5.1 CUDA安装
注意: 在CUDA Toolkit Documentation 中,有对应的NVIDIA Driver版本和CUDA版本。一定要下载安装配套的版本!!!!!
选好合适的版本后下载CUDA,下载地址:CUDA下载。
建议下载 runfile(local),将文件下载下来再安装,选择 deb 文件一般需要使用 apt 包管理进行安装,CUDA 安装文件很大,使用该方式安装,如果下载中断,会很让人抓狂。
但是使用deb文件有一个好处是:一般使用deb安装时不会发生什么错误,而runfile文件需要手动屏蔽显卡核心,需要在关闭显卡模块的情况下安装CUDA,相对麻烦一些。
下载好以后,执行以下命令安装:
# runfile 文件执行命令
sudo sh cuda_10.2.89_440.33.01_linux.run
# deb 文件执行命令
sudo dpkg -i app.deb
安装时,会自动安装一个 NVIDIA 驱动,可以调过上一步的驱动安装,直接使用 CUDA 安装驱动。但是有可能会安装失败,所以可以取消驱动安装选项(前提是已经安装好了NVIDIA驱动)。如果安装CUDA时没有选择安装驱动,之后可通过以下命令进行安装:
# To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
安装完成后,使用以下命令检查CUDA是否安装:
nvcc -V
若提示找不到nvcc,则按照以下方法添加环境变量:
su root
vi ~/.bashrc
# 在文件末尾添加环境变量,cuda-***版本需要为安装的对应版本
export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
# wq! 保存退出
# 更新配置文件
source ~/.bashrc
添加以后即可使用nvcc 。
5.2 CUDA卸载
- 卸载指令:
sudo /usr/local/cuda-10.2/bin/cuda-uninstaller
- 删除残留文件:
sudo rm -rf /usr/local/cuda-10.2/
5.3 使用TensorFlow过程中关于CUDA的报错
- 若在PyCharm中使用gpu报如下错误:
Could not dlopen library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64
Could not dlopen library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64
Could not dlopen library 'libcurand.so.10.0'; dlerror: libcurand.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64
Could not dlopen library 'libcusolver.so.10.0'; dlerror: libcusolver.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64
Could not dlopen library 'libcusparse.so.10.0'; dlerror: libcusparse.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64
- 解决办法:使用如下代码依次将报错中提示的文件copy到如下目录中。
sudo cp /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/local/lib/libcudart.so.10.0 && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcufft.so.10.0 /usr/local/lib/libcufft.so.10.0 && sudo ldconfig
6 cuDNN安装与卸载
6.1 cuDNN安装
在NVIDIA官网 cuDNN 下载对应所安装的CUDA版本的cuDNN。
共下载4个文件:
- cuDNN Library for Linux;
- cuDNN Runtime Library for Ubuntu18.04 (Deb);
- cuDNN Developer Library for Ubuntu18.04 (Deb);
- cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)。
安装过程:
- 安装过程实际上是把cudnn的头文件复制到CUDA的头文件目录里面去;把cuDNN的库复制到CUDA的库目录里面去。
首先需要将下载的cudnn解压,之后再执行如下命令:
# 复制cudnn头文件至指定文件夹
sudo cp ./cuda/include/* /usr/local/cuda-10.0/include/
# 复制cudnn的库至指定文件夹
sudo cp ./cuda/lib64/* /usr/local/cuda-10.0/lib64/
# 添加可执行权限
sudo chmod +x /usr/local/cuda-10.0/include/cudnn.h
sudo chmod +x /usr/local/cuda-10.0/lib64/libcudnn*
cuDNN 同样需要添加环境变量:
vim ~/.bashrc
# 加入下面的内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
- 另外3个文件夹,执行以下命令:
sudo dpkg -i libcudnn7_7.4.2.24-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda9.0_amd64.deb
- 检测是否安装成功:
cp -r /usr/src/cudnn_samples_v7/ /home/jason/
cd /home/jason/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
若显示 Test passed! ,则安装成功。
6.2 cuDNN卸载
因为cuDNN是一种插件式设计,所以直接删除文件即可:
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn