WSL2 编译安装pytorch1.7.0

WSL2要使用多显卡分布式计算,只能安装NCCL 2.11.4及以上版本,因此需要通过源码编译安装pytorch1.7.0。本博客适用于连接github不畅的用户。主要参考了这篇文章,并有所改动

一、clone源码

1、git clone https://github.com.cnpmjs.org/pytorch/pytorch

这里注意两点:1是国内访问github速度堪忧而且时断时续,所以clone使用国内镜像站的地址,我使用的是cnpmjs.org/,当然也可以用别的。2是不要加--recursive,因为国内镜像站不支持。

2、cd pytorch

3、git checkout v1.7.0

4、修改第三方库的网址

因为第1步没有加--recursive,这里需要手动修改pytorch文件夹下的.gitmodules文件,将里面所有https://github.com的网址都替换成https://github.com.cnpmjs.org,以确保网络不会在clone过程中中断。除了pytorch根目录下的.gitmodules文件外,还有这些地方也存在.gitmodules文件,需要一并修改:pytorch/third_party/下的fbgemm、gloo、ideep、onnx、onnx-tensorrt、onnx-tensorrt\third_party\onnx、tensort\third_party\onnx\third_party\pyhind11、protobuf、pyhind11、tensorpipe\third_paty\pyhind11,这里面有的多级子目录下的.gitmodules文件会在下面第6步执行后才出现,处理方法就是出现后修改,然后重复执行第6步。

5、git submodule sync

6、git submodule update --init --recursive

二、编译安装

1、设置环境变量,因为我需要使用NCCL2.11.4,所以在系统内提前安装了NCCL2.11.4和CUDA11.0,然后设置环境变量如下:

export USE_SYSTEM_NCCL=1

export USE_MKLDNN=0 //MKLDNN是intel的CPU分布式计算工具,我用不到,所以设置此环境变量,如果需要使用也可不不设置

2、python3 setup.py bdist_wheel 

这里也可以使用python3 setup.py install,但我遇到了编译完成在安装时出现写入文件失败错误,所以建议先生成wheel文件,然后使用pip3 install命令安装,生成的wheel文件在../pytorch/dist文件夹下。另外,个人还遇到了编译过程中在50%左右出现很长时间没有反应的情况,经验就是只要不报错,就一直等,过几个小时就会继续编译,我的编译过程持续了12小时。

至此,就完成了pytorch1.7.0的源码编译安装,如果需要正常使用,还需要源码编译配套的torchvision0.8.0,命令如下:

git clone https://github.com.cnpmjs.org/pytorch/vision.git

cd vision

git checkout v0.8.0

python3 setup.py bdist_wheel

另外,经过个人尝试,以下各环境版本能够稳定运行多卡并行计算,其它版本可能会出现卡死、梯度爆炸等问题。

WINDOWS 11、WSL 5.10.60.1、NCCL 2.11.4、CUDA11.0、PyTorch1.7.0、显卡驱动版本496.49

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