前言
本文记录一下自己在windows环境下编译pytorch源码所经过程和踩过的坑。
系统环境
Windows10家庭中文版
PyTorch-v1.12.1
Conda-v22.9.0
Python-3.9.13
CUDA-v11.8
Visual Studio 2019
1.Conda创建虚拟环境
打开Anaconda Prompt,输入命令创建环境,这里直接指定python版本。
conda create -n debugpytorch python=3.9
conda activate debugpytorch
进入debugpytorch虚拟环境:
2.Conda下载依赖
在Conda环境中安装编译所需依赖
conda install astunparse numpy ninja pyyaml setuptools cmake cffi typing_extensions future six requests dataclasses
3.下载PyTorch源码
方法一:
git命令行方式克隆项目。
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive --jobs 0
这里我采用的方法二。
方法二:
下载PyTorch源码:
PyTorch的github网址:https://github.com/pytorch/pytorch,进入后选择对应版本
最下端选择第一个下载。
注意
在windows下解压时,会出现can not create symbolic link的错误。这时采用管理员下的命令行解压。
首先安装7z,并将7z目录放到环境变量中。
管理员方式打开命令行,执行以下命令。
7z x pytorch1.12.1.tar1
解压完成。
4.Conda环境下编译源码
在Anaconda Prompt窗口下进入之前创建的debugpytorch环境下,进入源码文件夹。
执行命令开始编译(编译选项设置DEBUG):
set "DEBUG=1 USE_DISTRIBUTED=0 USE_MKLDNN=0 USE_CUDA=0 BUILD_TEST=0 USE_FBGEMM=0 USE_NNPACK=0 USE_QNNPACK=0 USE_XNNPACK=0"
&& python setup.py develop
编译过程较慢,编译完成后显示
提示编译成功后,可以打开torch/init.py文件,在文件最后加上以下两行代码:
print("FileName: " + __file__ + '\n')
print("Welcome To PyTorch Source Code World\n')
之后在Anaconda Prompt中输入python进入:
输入import torch导入torch包:
编译成功!
注意
编译过程失败有以下几个原因:
1.内存不够,可以增加内存或者swap空间
2.各种依赖或者编译器版本不对,Visual Studio务必是2019版的,本人在2022版中编译失败,而且编译速度比2019慢的多。
参考博客
[1]: PyTorch源码学习系列 - 1.初识https://zhuanlan.zhihu.com/p/567978232