ubuntu18.04 配置cuda10.1+cudnn7.6+anaconda+pytorch跑通maskrcnn_benchmark
最近在用anaconda配置ubuntu系统下的深度学习环境,终于跑通了maskrcnn_benchmark,真的是踩了很多坑。。把配置过程记录下来,欢迎交流探讨。
装好显卡驱动,本人显卡驱动版本430.26
方法参考网址:https://www.linuxidc.com/Linux/2019-02/157170.htm
就不仔细说了。
1)在清华镜像源网站下载anaconda并安装。https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
记得更改环境变量。安装完成后重新打开终端,命令行前面会出现(base),即在anaconda环境下。可通过conda deactivate退出。
2)输入以下指令添加清华源。
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 --set show_channel_urls yes
3)可以运用conda指令安装python等包。也可以通过pip安装opencv-python等包。(此pip是conda中的,可通过pip --ersion查看版本)
4)根据pytorch官网提示选择合适的版本,复制粘贴官网给的终端命令进行安装。
1)根据显卡驱动版本,在nvidia官网下载对应的cuda版本,在http://developer.nvidia.com/cuda-downloads上下载安装包。
2)根据官网提示的信息输入sudo sh cuda版本.run
3)输入accept
4)在cuda installer界面不勾选driver,其他都选中。回车进行安装。
5)安装完成后添加环境变量
输入sudo gedit ~/.bashrc
在文件末尾添加
export CUDA_HOME=/usr/local/cuda
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda/lib64"
保存后 输入source ~/.bashrc使其生效
6)在终端输入
cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
验证安装是否成功 出现Result = PASS则表示安装成功通过
也可通过输入nvcc --version查看cuda版本
1)在官网注册登陆后下载对应的cudnn版本。
网址:https://developer.nvidia.com/rdp/cudnn-download
本人下载版本为:libcudnn7_7.6.2.24-1+cuda10.1_amd64.deb
libcudnn7-dev_7.6.2.24-1+cuda10.1_amd64.deb
2)在终端中进入安装包所在目录,用指令sudo dpkg -i libcudnn7_7.6.2.24-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.2.24-1+cuda10.1_amd64.deb
3)安装成功后在终端进入python命令行,用以下代码测试cudnn安装成功。(通过查找cuda文件夹下的cudnn文件是找不到的,因为我们用的是deb的安装方法,不是原来的解压并挪位置的方法。)
import torch
#测试cuda能否使用,能使用则返回True
print(torch.cuda.is_available())
True
#测试cuDNN是否正常,正常返回True
from torch.backends import cudnn
a = torch.tensor(1.)
cudnn.is_acceptable(a.cuda())
根据maskrcnn_benchmark的github官方安装教程稍作修改。https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL.md
终端指令步骤:
conda create --name maskrcnn_benchmark python=3.6 #python得设置为3.6版本,否则pip安装opencv会失败。
conda activate maskrcnn_benchmark #conda中激活新的虚拟环境maskrcnn_benchmark
conda install ipython
pip install ninja yacs cython matplotlib tqdm opencv-python
# follow PyTorch installation in https://pytorch.org/get-started/locally/
# 在官网版本选择中,虽然我们装的cuda是10.1,但此处cuda没有10.1,我们选择10.0即可,不会有问题。根据官网指令在终端输入,记得去掉 -c,才能用清华源,否则很慢。
conda install pytorch cudatoolkit=10.0 pytorch-nightly
# 此处指令还缺少我们需要的pytorchvision,故使用以下指令安装pytorchvision
conda pytorchvision
# 可以用python命令行import pytorchvision验证安装情况。
# 接下来要编译一些依赖包,可在home下新建一个文件夹用于存储。我创建了文件夹github。
# install pycocotools
cd ~/github
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install
# install apex
cd $INSTALL_DIR
git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cuda_ext --cpp_ext
#此步骤可能会编译错误,由于我们cuda版本10.1高于cuda10.0。解决办法如下:
打开setup.py文件,注释以下部分:
if (bare_metal_major != torch_binary_major) or (bare_metal_minor != torch_binary_minor):
raise RuntimeError("Cuda extensions are being compiled with a version of Cuda that does " +
"not match the version used to compile Pytorch binaries. " +
"Pytorch binaries were compiled with Cuda {}.\n".format(torch.version.cuda) +
"In some cases, a minor-version mismatch will not cause later errors: " +
"https://github.com/NVIDIA/apex/pull/323#discussion_r287021798. "
"You can try commenting out this check (at your own risk).")
再次编译即可。
# install PyTorch Detection
cd $INSTALL_DIR
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
cd maskrcnn-benchmark
python setup.py build develop #若对上面的文件有所修改,要重新build此步骤。
#接下来就可以跑demo了。
cd demo
#by default, it runs on the GPU
#for best results, use min-image-size 800
python webcam.py --min-image-size 800
#会自动下载一个文件后打开摄像头进行实时检测。
1、直接create新的conda环境,python是3.7版本的,此时pip install opencv-python失败。我也不知道为啥。用python3.6就可以。
2、建议安装的时候装最新版本的cuda,cudnn,只要系统环境的cuda版本等于或高于conda下的,就可以用!不要去降级cuda,gcc啥的。当然是建立在和系统版本匹配的基础上。
3、虽然conda环境下有装cudatoolkit和cudnn,不代表系统里不需要装!不然功能会不全容易出错。