pytorch源码编译

pytorch源码编译,第1张

下载源代码和依赖库

需要在内部隔离网络中从源码编译pytorch,但内部网络无法链接github。且pytorch依赖库众多,一个一个地下载依赖库不太现实。
我采用的方法是:在外部可联网的机器上git clone pytorch源码,切换到所需的branch或者tag上。使用命令git submodules update --init --recursive下载所有的依赖库。这一步非常耗时,也可能会失败,需要反复执行该命令,直到没有报错了,所有的依赖库才算都下载了。注意一定要加上 --recursive,因为pytorch依赖的第三方库可能还依赖其它的第三方库。pytorch依赖库均下载到third_parth目录中。

编译前的环境准备

已有的软硬件环境:T4显卡; *** 作系统centos_64
我需要编译出带GPU的可调试的pytorch V1.9.1。
现在需要决定以下几个环境:

1.python环境

根据需要决定python版本。pytorch要求python大版本必须是python3。
利用conda创建python环境:

conda create -n debugpytorch python=3.9

安装python依赖:

conda install -y numpy ninja pyyaml mkl mkl-include cffi cmake typing_extensions setuptools=58.0.4

setuptools库的版本号最好要指定。

2.编译器环境

我用的编译器是gcc7.3.0

3.cuda和cudnn环境

我用的是cuda11.4和cudnn8.2.2
选择cuda版本时要兼顾两个因素,一是pytorch官方推荐的cuda版本。不同版本pytorch推荐的cuda版本和cudnn版本也不一样;二是当前机器上显卡驱动支持的cuda版本。


从上图中可以看到,当前的显卡驱动仅支持cuda10.1以下的cuda版本。要想使用更高版本的cuda就需要更新显卡驱动。如何更新显卡驱动?

编译

我的编译命令是

DEBUG=1 USE_CUDA=1 USE_FBGEMM=0 python setup.py develop >./build.log 2>&1 &
tail -f ./build.log

该编译命令的前面是一些编译选项。这些编译选项的意义以及其他的可选项可查看setup.py文件开头的注释部分,写的很清楚。

python setup.py develop和python setup.py install是两种不同的安装方式。develop选项会将编译好的pytorch安装到当前的源码根目录下。这样更方便调试。install选项会将编译好的pytroch安装到python的site-package目录中。

如何解决编译错误

第一次从源码编译pytorch不可避免会有编译错误。
首先要检查编译日志。编译日志会总结本次编译所使用的编译选项、编译环境等信息。如果出现编译错误,首先要核对下编译选项是否正确,编译器版本是否正确、cuda版本和cudnn版本是否正确等。

遇到编译错误后注意查看编译日志的最后部分。pytorch的构建系统将编译错误的详细信息都打印到编译日志中了。简单的编译错误通过查看编译日志就能够解决。还可以到pytorch的github中,搜索相关的issue,可能也有其他人遇到过并给出了解决方法。

调试

我是直接通过gdb进行调试的

gdb --args python XXX.py

xxx.py就是调用pytorch的python程序

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/917884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存