Linux系统搭建GPU加速的PyTorch环境

当前训练CNN最受欢迎的两个框架是TensorFlow和 pyTorch,搭建相应的环境其实不难,博主早先在笔记本的Ubuntu上很快就搭建了pyTorch环境及手写了ResNet 的Demo。但是最近台式机配上比较不错的显卡后,再次搭建带CUDA的 pyTorch开发环境时,遇到一些问题,故简略记录于此。

博主一直使用的是Ubuntu+Windows双系统,此次一并将双系统(Win10+Ubuntu18.04)安装方式总结啦。

 

双系统安装

这里主要总结先安装Win10,再安装Ubuntu18.04的方法。

第一步:安装Win10。

这一步很多人可以直接跳过,毕竟平时使用的就是Win10。而Windows的安装方法当前也越来越简单,将安装包刻录到U盘里(使用UltraISO),然后在BIOS或UEFI启动顺序设置中将U盘设置为优先启动后,根据提示指引安装即可,此处不赘述。

在既有的Win10上,需要做一件事情,以便后续安装Ubuntu:进入“磁盘管理”后,将硬盘压缩出50G左右,作为“未使用”的空白盘。注意:1、如果有双硬盘(固态+机械),则可选择将固态硬盘压缩出一些空间,作为Ubuntu的boot空间(开机会快一点)。2、考虑到要处理大量图像数据,最好将硬盘留大一点,比如我预留了500G空间未使用。

第二步:准备安装Ubuntu18.04。

基本和安装Win10类似,从官网获取Ubuntu18.04后,将安装包刻录到U盘里(使用UltraISO,具体操作请自行百度,有很多制作系统安装盘的教程),然后在BIOS或UEFI启动顺序设置中将U盘设置为优先启动后,选择“Install Ubuntu”后,进入安装指引。其中有一步会提示“是否与Win10共存”,这一步很关键,如果没有出现这个提示,之前的步骤会是有问题的。当然,此处我们选择“Other/其他”,以便进行自定义安装。

第三步:Ubuntu安装分区设置。

根据安装引导提示,将会进入分区设置界面。分区其实不难,关键是把握4个分区:主分区/,交换分区swap,引导分区boot,和用户分区home。选择之前预留的空白空间后,进行如下操作。

创建主分区/。主分区相当于系统盘,建议分配10G左右空间。选择主分区、Ext4、和挂载点/。

创建交换分区swap。交换分区将被当成内存使用,建议设置为物理内存同样大小。选择逻辑分区、交换空间。

创建引导分区boot。引导分区是用来开机引导的,建议500M左右,另外可创建在固态硬盘里。选择逻辑分区、Ext4、和挂载点/boot。

创建用户分区home。这里是平时工作的地方,主要是存储数据。选择逻辑分区、Ext4、和挂载点/home。

之后根据提示完成安装即可。

 

Ubuntu系统安装显卡驱动

安装好Ubuntu后,发现分辨率比较低,而且操作比较卡顿,直觉告诉我是显卡驱动的问题。博主显卡是RTX 2080Ti,于是立刻到NVIDIA官网(https://www.geforce.com/drivers)下载了个相应的显卡驱动:NVIDIA-Linux-x86_64-418.56.run(请根据自己的显卡和当前驱动更新发布情况选择适当的驱动版本)。

安装前需要禁用系统默认的显卡驱动,如下操作。

打开系统黑名单:

sudo gedit /etc/modprobe.d/blacklist.conf

在文件末尾加入这几行:

# for nvidia display device install
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

保存,然后更新initramfs:

sudo update-initramfs -u

重启电脑后,输入命令查看是否禁用成功:

lsmod | grep nouveau

无输出则说明禁用成功。

接下来进行驱动安装。首先需要将安装文件的权限提升到最高:

sudo chmod 777 NVIDIA-Linux-x86_64-418.56.run

然后运行安装程序:

sudo ./NVIDIA-Linux-x86_64-418.56.run

如果安装过程中遇到错误如未找到gcc或make,那么安装好这些必要的程序后再重新运行安装显卡驱动。

显卡驱动安装好后,重新启动电脑,发现分辨率正常了,找到“设置”→“详细”,发现显示了RTX 2080Ti。说明显卡驱动安装成功。

检测显卡的另一个方法,运行命令:nvidia-smi。

 

安装Anaconda

目前pyTorch搭建IDE比较推荐Anaconda。至官网下载Linux64位版本的Anaconda安装包(博主下载的是Anaconda3-5.2.0-Linux-x86_64.sh)。将该文件权限提升到最高:

sudo chmod 777 Anaconda3-5.2.0-Linux-x86_64.sh

然后sudo运行安装即可。

安装成功后,在Terminal中输入jupyter notebook,即可在浏览器中打开notebook操作界面。

注意:若官网下载Anaconda太慢的话,可以从清华镜像平台上下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

 

安装pyTorch和相应CUDA

这部分可以参考官网的指导“get-started”:https://pytorch.org/get-started/locally/

理论上这一步可以直接运行官网推荐的命令进行安装的(以CUDA9.0为例):

conda install pytorch torchvision cudatoolkit=9.0 -c pytorch

安装成功后,可以在notebook中使用一下代码进行测试:

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

应该输出类似于以下的结果:

tensor([[0.3380, 0.3845, 0.3217],
        [0.8337, 0.9050, 0.2650],
        [0.2979, 0.7141, 0.9069],
        [0.1449, 0.1132, 0.1375],
        [0.4675, 0.3947, 0.1426]])

另外,测试cuda:

import torch
torch.cuda.is_available()

如果输出True,就说明安装一切安装成功了。

但是如果安装失败,可以尝试手动安装这些组件:CUDA、cuDNN、pyTorch。

CUDA安装包下载地址:https://developer.nvidia.com/cuda-downloads

cuDNN安装包下载地址:https://developer.nvidia.com/rdp/cudnn-download

pyTorch建议命令安装:conda install pytorch

主要CUDA与cuDNN需要安装互相兼容的版本,官网上可找到其兼容性的相关说明。CUDA下载的最后一步选择“runfile(local)”

博主在手动安装CUDA时捣鼓了很久,本来想装CUDA10.1,但是进入安装界面后,如果选择“不安装驱动”(显卡驱动之前已经安装过了啊),就会报错“需要在安装驱动基础上进行后续安装”;而如果选择“安装驱动”,就会出现“假的安装成功”。之后卸载当前的显卡驱动后,再进行安装,会出现“近似的安装成功”(/usr/local目录下出现了cuda10.1的目录,但是其实似乎没完全安装)。但是重启后,发现驱动还是没有,于是又重新装了一次显卡驱动。另外,据说还可能出现gcc版本和CUDA不兼容,可能需要将gcc降级处理(兼容信息同样可以在官网CUDA兼容说明中找到,如:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)。

手动安装容易出各种问题,还是建议尽量使用命令:conda install pytorch torchvision cudatoolkit=9.0 -c pytorch,直接搞定。

另外,有篇博客也对此进行了总结,可以参考:Ubuntu18.04下安装深度学习框架Pytorch(GPU加速)

其他参考内容:

在Ubuntu 18.04系统中安装RTX 2080Ti显卡驱动的方法

ubuntu安装cuda

至此,安装结束。现在启用cuda跑一跑你的CNN训练,不出意外的话,训练速度瞬间将得到显著的提升。继续努力吧!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章