背景:
最近因为升级了Linux内核,导致之前安装的Nvidia driver崩溃,系统无法找到Nvidia driver。笔者索性重装了一遍系统,并因为对Ubuntu以及conda虚拟环境的不熟悉,导致尝试多次搭建深度学习环境失败,参考了数篇文章才得以搭建成功。编写此文的目的在于,总结此次搭建Pytorch环境所得到的经验教训,希望自己下次手贱把系统搞崩溃后再重装,能少走点弯路……
硬件:
- CPU: Intel Core i7-4710HQ(对,你没有看错,这是一颗移动U,被魔改到B85平台……华强北赛高)
- GPU: Nvidia GTX1660 super
- RAM: 8G*2
- 芯片组:B85
软件:
- System: Ubuntu 18.04.5,Linux kernel version: 5.4.0-42-generic,GCC version: 7.5.0
- Software: Vim, Anaconda3, Pycharm Community, cuda_10.1.105_418.39_linux.run, cuDNN-10.1-linux-x64-v8.0.3.33.tgz(后文会指导如何下载安装)
必要步骤:
Step1: 禁用主板secure boot选项
开机后进入BIOS,找到secure boot这一选项并关闭。这一步主要看各位主板厂商的BIOS设定。
Step2: 安装英伟达驱动
首先,关闭软件自动更新,以后有提示更新也不要安装。
其次,更改ubuntu软件下载源,改为清华源,进settings -> Download from:
最后,在Additional Drivers里选择tested驱动程序:
安装完成后重启,再次进入桌面后打开terminal,输入指令'nvidia-smi',以检查是否成功安装英伟达显示驱动。
Step3: 安装Anaconda,并配置conda
下载网址:
Anaconda | Individual Editionwww.anaconda.com一、安装anaconda:
由于是Ubuntu,选择Linux 64-bit x86版本。我下载好的文件名为Anaconda3-2020.02-Linux-x86_64.sh,使用指令'bash Anaconda3-2020.02-Linux-x86_64.sh' 进行安装。
一路enter下去,最后选择yes,在进行到下图这一步(添加进系统路径)时,选择yes或者no都没什么问题,官方推荐yes:
这里选择no,(若反悔,需要yes,在安装完成后,Terminal里输入指令'source /home/__usr_name_/anaconda3/bin/activate'+'conda init' 即可)
二、配置conda:
配置conda需要vim,安装vim指令:'sudo apt-get install vim',需要输入系统密码:
配置conda环境变量,cd到系统根目录输入指令'sudo vim .bashrc',在.bashrc文件末尾添加如下几行:
# distinguish anaconda python with system built python
alias python3="/usr/bin/python3.6"
alias python2="/usr/bin/python2.7"
# add environmental variables
. /home/richardhu/anaconda3/etc/profile.d/conda.sh
编写完毕后,按esc+指令':wq!' 退出vim:
执行刚修改后的 .bashrc文档,输入指令'source .bashrc',再查看下创建的环境变量:'conda env list' :
由于是刚装的系统,目前只有base这个环境,下面会介绍如何创建虚拟环境。
三、更改conda下载源:
conda是非常强大的python包管理器,可以在命令行自动检测环境所需要的包,以及是否需要更新python包,conda默认是从境外网站获取数据,可以更改到国内网站,提高连接速度。以更改清华源为例,输入指令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
四、创建新的虚拟环境:
以需要使用到pytorch进行图像识别为例,建立一个名为pytorch的虚拟环境。输入指令:'conda create -n pytorch python=3.7'
经过conda的分析后,一般会提示以下包需要安装,同意安装即可。
需要注意的是,base与pytorch这两个环境里的python version可以是不一样的,见下图。
这就体现了虚拟环境的好处,我们可以根据自己的需要,安装特定版本的包以实现不同的项目需求。
需要注意,轻易不要使用指令'conda update --all',极易造成包与系统兼容性问题。
Step4: 安装cuda以及cuDNN。
安装时需要注意以下几点:
- pytorch目前只发布了支持到cuda-10.2的stable版本,而Nvidia官方已经更新到cuda-11.0.3,为了稳定性以及兼容性,建议不要安装高于10.2的版本。
- 安装cuda有严格的Gcc版本需求,见下图。系统的Gcc版本不得低于表中所列。
3. cuDNN与cuda版本有对应,下载时需注意。
一、查看gcc version:
输入指令 'gcc --version'
二、安装cuda:
获取cuda包并安装,官方有说明:
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocaldeveloper.nvidia.com由于官网指令推荐安装cuda-11.0,不采用之,需自己寻找相应的cuda-10.x包,这里以我自己下的cuda-10.1.run文件为例。
在存储cuda的文件夹里打开Terminal,输入指令'sudo sh cuda_10.1.105_418.39_linux.run'
输入密码后等待片刻,便可进入安装界面如下:
输入accept后便来到安装组件选择,由于之前已经安装过Nvidia Driver,这里取消勾选:
安装成功后的界面如下:
cd到根目录,输入指令'sudo vim ~/.bashrc',为cuda配置环境变量
在 .bashrc 里输入如下指令:
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
输入完毕后,esc + ':wq!' 退出vim
关机重启后,打开terminal,输入指令'nvcc -V' 以检查cuda是否安装成功。
三、安装cuDNN:
下载地址:
https://developer.nvidia.com/cudnndeveloper.nvidia.com这里以cuDNN-8.3版本为例,下载好的文件类型为.tgz。
在存放cuDNN的文件夹打开terminal,输入指令'tar xzvf cudnn-10.1-linux-x64-v8.0.3.33.tgz' 以解压文件。
解压完成后,继续输入指令如下:
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h /usr/local/cuda-10.1/lib64/libcudnn*
目的是将cudnn的include和lib64文件夹复制到cuda中。
Step5: 搭建Pytorch-GPU框架
输入指令'conda install pytorch=1.5 torchvision cudatoolkit=10.1 -c pytorch'
需要注意的是,你极有可能从清华源或者其他源获得的版本是Pytorch build for CPU,
一定要检查pytorch build for GPU,检查方法如下:
- 确保指令'nvidia-smi' 与'nvcc -V' 有正确结果输出。
- 进入你建立的虚拟环境,输入指令'python'
3. 输入代码:
import
如果输出的结果为false,则表示pytorch无法使用GPU资源进行运算,需要自寻方法解决。
如果输出的结果为true,则表示pytorch build for GPU搭建成功。
Step6: 安装Pycharm开发环境
Pycharm是一款来自JetBrains公司的强大的Python IDE,它可以为每个创建的project调用指定的conda虚拟环境(如上文创建的名为pytorch虚拟环境)python解释器。下载地址如下:
Download PyCharm: Python IDE for Professional Developers by JetBrainswww.jetbrains.com由于已事先准备好pycharm安装包,以此为例,在存储路径打开terminal,输入指令'tar xzvf pycharm-community-2020.1.4.tar.gz'
解压完成后,继续输入指令'cd pycharm-community-2020.1.4/bin/' +'sh pycharm.sh' 即可打开pycharm。
在经过一些初始化设定后,进入settings -> project ____ -> Python Interpreter
点击右边的小齿轮⚙,进入add Python Interpreter -> conda environment -> existing environment,选择你创建好的conda 虚拟环境。
至此,所有必要步骤已全部结束。
总结:
在Ubuntu 18.04版本上搭建基于Pytorch框架的深度学习环境,需要经历以下步骤:
- 禁用主板secure boot选项
- 安装英伟达驱动
- 安装Anaconda,并配置conda
- 安装cuda以及cuDNN
- 搭建Pytorch-GPU框架
- 安装Pycharm开发环境
本文参考了众多网络教程,也算是踩了n多坑,记下此文以待后日需要。