Ubuntu20.04配置Pytorch+OpenMMLab环境过程步骤札记
确保电脑已连接网络后,点击打开Ubuntu自带的软件更新Software Updater后,点击左下角的Settings进入设置界面,在弹出的对话框中点击选择Additional Drivers选项卡,一般情况下联网后会自动搜索更新可用的NVDIA驱动,选择一个点击右下角Apply Changes等一会儿就OK了。
PS.我选的是Using NVIDIA driver metapackage from nvidia-driver-525(proprietary),我电脑配的显卡是NVIDIA RTX A5000。
此时遇到了configurling secure boot 的弹窗。根据提示新设置一个验证密码:12345678(并非系统的登陆密码),之后终端输入指令reboot 重启电脑。
在未完全开机时会显示出:Continue boot、Enroll MDK、Enroll key from disk、Enroll hash from disk选项,这时需要选择第二个选项Enroll MDK后,输入刚才新设置的密码(输入的密码不会显示出来),然后在新出现的选项中选择Continue boot继续开机即可完成安装。
安装完之后在终端输入nvidia-smi后,如果安装成功则会输出类似下图的显卡信息:
其中,CUDA Version:12.0表示当前显卡所能支持的CUDA最高版本为12.0。由于后续要安装的Pytorch目前官网发布的版本所能支持的CUDA版本是11.8,因此下一步CUDA选择的就是11.8的版本进行安装。
1、在安装CUDA之前,先在终端输入如下命令安装一些常见的依赖库:
sudo apt install git gcc g++ ffmpeg cmake make python3-dev python3-numpy libavcodec-dev libavformat-dev libswscale-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgtk-3-dev libpng-dev libjpeg-dev libopenexr-dev libtiff-dev libwebp-dev
2、登陆NVIDIA官网:https://developer.nvidia.com/cuda-downloads
此时需要先点击页面右下方的Archive of Previous CUDA Releases按钮进入低版本CUDA下载界面,在弹出页面中点击CUDA 11.8.0选项后,在出现的相应界面中根据自己的平台情况进行相应选择后,页面下方会自动给出对应的安装文件的下载的终端操作命令(我选择的是runfile local形式下载),如下图所示。
因此需要打开终端依次输入如下命令:
下载安装文件命令:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
执行安装文件进行安装命令:
sudo sh cuda_11.8.0_520.61.05_linux.run
之后就会进入CUDA的安装界面,依次选择continue、输入accept、敲回车取消第一项Driver的选择(即中括号里没有X)后选择install即可开始安装。
3、安装完毕后,则需配置CUDA环境变量,在终端输入gedit ~/.bashrc后,在弹出的系统环境变量配置文件的末尾添加输入如下语句:
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
标红部分为我安装的CUDA相应的bin和lib64所在的路径,其他部分都不需要变化。保存刚才的输入之后,终端再输入source ~/.bashrc更新环境变量。
4、验证CUDA是否安装成功,终端输入nvcc -V后若得到类似如下输出,则说明安装成功。
首先进入Nvidia官网选择对应安装好的CUDA版本的CuDNN安装包(在此之前一般还要走一个CuDNN账号的注册手续才会让你下载)。我选择的是Local Installer for Linux x86_64 (Tar)。
下载完成后,依次输入下列命令进行压缩包解压。
tar -zxvf cudnn-linux-x86_64-8.8.1.3_cuda11-archive.tar.xz
进入解压得到的文件夹后再输入如下命令, 将其中的include和lib64文件夹及其所包含文件复制到cuda相应的安装路径下,并修改读写权限即可。
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
最后输入nvcc -V命令,若返回如下结果,则说明CuDNN安装成功。
PS.安装完显卡相关的软件工具包后,千万不要手贱去点击Soft Updater给你推送的系统自动更新,其中如果有更新到系统内核相关的部分,将可能会导致与已安装的显卡相关的软件依赖发生冲突,从而导致重启后无法正常进入Ubuntu系统。当然如果确实出了问题,网上也有相关博主写过相关解决的帖子。但是可能不一定能针对所有人的电脑都普适,所以还是尽量别去主动创造问题了。(我就手抖点了更新,重启之后进入系统之前就一直黑屏,左上角一个小短划线在不停闪烁。并且试了很多网上的方法,很多细节都对不上也处理不了。还好再重启了一次就神奇地恢复了。但是很明显进入系统的时间比原来长了......)
我安装的是轻量级的miniconda版本,在终端依次输入如下命令即可:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh #执行安装文件
sudo rm Miniconda3-latest-Linux-x86_64.sh #删除安装文件
conda update -n base -c defaults conda
安装完成后终端输入export PATH=/home/zyj/miniconda3/bin:$PATH,标红部分为miniconda3中bin文件夹的路径,保存退出之后终端输入source ~/.bashrc更新环境变量即可。
首先更新软件源,主要是看网上说有些安装包、依赖库的默认源是国外的,下载速度会巨慢,所以更新设置了采用清华镜像的软件源,具体需在终端依次输入如下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
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/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
之后终端会有如下输出,说明添加清华镜像软件源成功。
在Anaconda下创建虚拟环境安装Pytorch,主用户环境下安装的依赖库可以为虚拟环境所用。但在虚拟环境中安装的依赖则无法为主用户环境所用。但好处是一旦安装出现错误无法挽回,可以直接删除创建的虚拟环境重头再来(别问我是怎么知道的,说多了都是泪),而不会影响主用户环境。再就是可以创建多个虚拟环境,安装不同版本的依赖库和软件包以迎合不同算法对版本的要求。
这里我主要为了安装pytorch,创建了一个python3.7的虚拟环境,以pytorch命名。具体调用Anaconda的命令为:
conda create -n pytorch python=3.7
此时就创建了一个名为pytorch的虚拟环境,接下来需要激活该环境并在此环境下安装pytorch,具体终端命令为:
conda activate pytorch
此时命令行最前端就会出现(pytorch)字样,说明此时已进入所创建的pytorch虚拟环境中。
如果想推出虚拟环境回到主用户环境,则可以调用如下命令:
conda deactivate或者conda activate root
此时命令行最前端就会出现(base)字样,说明此时已进入主用户环境。
如果想要删除所创建的虚拟环境从头再来,则可以输入以下命令:
conda remove -n pytorch --all
标红部分为待删除的虚拟环境名。
下面开始安装pytorch,首先进入pytorch主页https://pytorch.org/,根据平台以及所安装的CUDA版本等进行相应的选择,主页会自动给你生成相应要安装的pytorch版本的终端命令行代码。
照理我应该选择CUDA11.8的版本,但是试了很多办法,也还只是能安装cpu版的pytorch,网上说原因是软件源用的是清华镜像,而清华镜像可能还没有对应CUDA11.8的pytorch GPU版本。后面也试过使用默认软件源安装,但是下载速度巨慢,并且就算等到最后还是无法检测到GPU版本的pytorch。网上大神也分析了其他原因,但是看着太复杂了。已然超出我的大脑负荷和耐心极限。
因此退而求其次,试着安装对应低版本CUDA11.7的pytorch,通过查询pytorch主页https://pytorch.org/get-started/previous-versions/,相应给出的安装命令为:
conda方式安装:conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7
pip方式安装: pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
使用pip安装时请确保环境中已安装pip,如果安装后pip报错不行,还可以更新下软件源,即输入sudo apt update、sudo apt upgrade再pip试试,再不行可以安装更新pip3再试试,安装pip3的命令为(sudo apt-get install python3-pip)。我反正就是这么折腾过来之后成功的哈哈哈。
另外,原始pytorch主页给出的conda安装命令其实后面还带有-c pytorch -c nvidia字样,但是网上说由于我们用的清华镜像,所以这几个字样要删去。否则就还是按照默认源龟速下载。不过反正我用的是pip下载,不存在这个问题哈哈哈。
之后就是耐心等待安装完成了。之后进入python,输入以下代码:
import torch
torch.cuda.is_available()
如果返回结果为True,则说明GPU版本的pytorch安装成功了!
输入torch.__version__(注意 version左右两边是两根短下划线)之后回车也可看到对应安装的pytorch版本信息的输出:
进入主页https://openmmlab.com/codebase,可以看到有很多开源智能感知算法库,几乎涵盖了目前绝大多数智能感知任务以及主流的算法模型实现。可以选择感兴趣的算法软件包进行对应安装。点击相应的选项卡(那个像书签一样的小图标)即可进入对于算法软件的主页,基本上根据其中关于使用安装的指引即可。这里以MMSelfSup(自监督学习算法库)为例,对安装过程步骤进行记录。
进入MMSelfSup最新主页https://mmselfsup.readthedocs.io/en/dev-1.x/get_started.html,先看其前置的环境依赖版本要求如下:
MMSelfSup works on Linux (Windows and macOS are not officially supported). It requires Python 3.7+, CUDA 9.2+ and PyTorch 1.6+.
还好,我电脑安装的相关软件环境都符合要求。因此可以激活虚拟环境直接开始相关安装:
conda activate pytorch
pip install -U openmim(安装算法软件库的专门下载工具MIM)
mim install mmengine
mim install 'mmcv>=2.0.0rc1'(安装基础环境MMCV、MMEngine)
之后就可以输入如下命令进行MMSelfSup软件包的完全安装:
git clone https://github.com/open-mmlab/mmselfsup.git
cd mmselfsup
pip install -v -e .(注意这里e的后面还有一个点!)
等待安装完成,进入python环境输入如下代码:
import mmselfsup
print(mmselfsup.__version__)(注意 version左右两边是两根短下划线)
如果终端能够正常输出相应的版本信息,则说明安装成功。
我在安装的过程中出现的问题,主要是来源于更加基础的依赖库安装不全,主要包括opencv-python、scikit-learn、matplotlib、protobuf等,通过conda、pip或pip3的安装,输入如下命令后再重复MMSelfSup的安装过程,就OK了。这里注意,不要用sudo安装,因此这样一来会把依赖库安装到主用户环境,虚拟环境中无法找到,从而会不起作用!
pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple
pip install scikit-learn
conda install protobuf
pip install matplotlib
pip install matplotlib --upgrade(有可能会需要调用安装更新版本的命令)
OpenMMLab的其他软件包的安装也大同小异,提醒一下的要注意用最新版本的说明文档进行安装,有时候点进去的可能是老版本的documentation。一般在主页靠上的地方会有最新版本的跳转链接。
整个安装配置过程相对漫长,中间出了不少问题也参考了很多大神的相关部分博客,多到记不过来,所以没有一一在最后给出引用,还请大神们多多包涵(狗头保命.jpg),感谢大神们的帖子帮我解决了各种疑难杂症,让我少走弯路,谢谢×10086!