Windows源码编译Pytorch和Detectron2记录

        想在实验室电脑上搭建Detectron2环境以方便改代码,cpu版的倒是好搭建,但是由于实验电脑过于老旧(GT730  (ㄒoㄒ)),在安装CUDA版的pytorch后,发现pytorch在1.3版本后不在支持算力低的显卡,而detectron2又不支持版本低的pytorch,无奈只能从source from安装pytorch,下面给出我安装CUDA版时的方法和我踩过的坑:

   1.安装CUDA和cudnn:

cuda安装教程+cudnn安装教程_sinat_23619409的博客-CSDN博客_cuda安装

按照此博客中的方法安装cuda和cudnn,我安装的是CUDA11.1版本。

2.源码编译Pytorch

确保电脑上安装了Visual Studio 2019和gcc & g++ ≥ 5.4。

查看gcc & g++命令:

g++ --version

或者:

gcc -V

安装Visual Studio 2019时要把这两个选上:

 Windows源码编译Pytorch和Detectron2记录_第1张图片 

Windows源码编译Pytorch和Detectron2记录_第2张图片

按照官方GitHub给出的方法,在anaconda的python环境中安装前置:

conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions

如果网速慢就换下载源。

使用git克隆源码:

git clone https://github.com/pytorch/pytorch

这行命令要求电脑上安装了git才能用:git官方地址

这里没有用官方给的方法:

git clone --recursive https://github.com/pytorch/pytorch

因为pytorch源码中的子模块很多,如果有加速器的话可以直接用官方给的方法克隆,否则就给github.com后面添加.cnpmjs.org,这样速度会变快,子模块的URL在生成的pytorch目录下的 .gitmodules.txt中,修改完后输入:

git submodule sync
git submodule update --init --recursive --jobs 0

加载完所有子模块后cd到pytorch目录下输入:

python setup.py install

就可以开始编译了(记得python环境要先激活好)。

如果中途卡死或者报错的话,要先输入:

python setup.py clean

清理之后再次安装。

如果报错:

Linker fatal error: LNK1102: out of memory

就把电脑的虚拟内存设置的大一点。

编译过程很慢,而且会生成快30G的文件夹,所以要确保磁盘空间足够,等待大功告成。

编译完成之后因为没有torchvision,所以还不能运行pytorch,输入:

pip install torchvision

安装完毕后测试一下:

import torch
flag = torch.cuda.is_available()
print(flag)
ngpu= 1
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())

3.安装Detectron2:

按照官方给的方法:

python -m pip install git+https://github.com/facebookresearch/detectron2.git

PS. WIN10中使用git命令的时候后面的网址不能加引号 (‘ ’)

安装完成后测试下demo,在detectron2\demo 目录下终端输入:

python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml   --input input1.jpg --opts MODEL.DEVICE cpu MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

.pkl文件会自己下载,input1.jpg是自己在网上随便找的街道图,放在detectron2\demo目录下。

如果报错:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized

在 .py文件中添加代码:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

如果报错:

ImportError: DLL load failed while importing win32file: 找不到指定的程序。

就卸载原来的pywin32:

pip uninstall pywin32

pip install pywin32==225

你可能感兴趣的:(python,pytorch)