pytorch 配置deformabledetr和referformer工程环境踩坑

前言

随着以后要学习的项目越来越多,不同的工程用不同的环境是早晚面对的事。

之前做的少,一直都是许多项目都用这一个envs,很难管理。今天花了一天时间,就想做一件事,重新弄一下referformer和deformdetr的这两个项目的环境,给他们分开。

正题

拿到一个项目,第一件事是根据install.md里的要求,安装对应的版本环境。一般的步骤都是

1先 using Anaconda to create the conda environment.

2conda install pytorch and torchvision and ! cudatoolkit

3install other necessary packages

4compiling CUDA operators

首先我分别按照两个项目各自要求的torch torchvision 版本安装各自的环境,服务器系统的cuda 运行版本是10.2 (通过运行 nvcc -V 来看当前运行版本)

需要注意的第一个坑是,

在执行一个新的工程的时候,按照它的md要求安装对应版本的pytorch torch vision时,,一定要把cudatoolkit也加上,而且是改成nvcc -V指定的版本。

比如我nvcc -V是10.2,那我安装deformable detr环境的时候需要输入下面的指令(从pytorch官网找conda指令的对应的pytorch、torchvision、cudatoolkit版本的指令

原md是

conda install pytorch=1.5.1 torchvision=0.6.1 cudatoolkit=9.2 -c pytorch

需要将cudatoolkit改成10.2

所以是

conda install pytorch=1.5.1 torchvision=0.6.1 cudatoolkit=10.2 -c pytorch

否则在Compiling CUDA operators(比如执行sh ./make.sh python setup.py build install 时候),将会报第一个错:

The detected CUDA version (10.2) mismatches the version that was used to compile

PyTorch (11.5). Please make sure to use the same CUDA versions.

因为nvcc是我当前系统运行时的cuda版本,是10.2。如果我在下载pytorch、torch vision的时候没有指定下载cudatoolkit的话,会出现下面这样,cuda会乱?而这个文件貌似是编译pytorch时对应的cuda版本,所以可能会出现上面这种报错。

pytorch pytorch::pytorch-1.11.0-py3.9_cuda11.~ --> conda-forge::pytorch-1.11.0-cuda112py39ha0cca9b_202 None

torchvision pytorch::torchvision-0.12.0-py39_cu115 --> conda-forge::torchvision-0.13.0-cuda112py39hd2c45b6_0 None

所以!一定先根据nvcc -V的cuda版本,从pytorch官网找对应的torch版本的指令!

************************************************华丽分割线**********************************************

跳过这个坑之后,继续尝试Compiling CUDA operators时还会有错,一直面临与ninja -v有关的报错,在cpp_extension。(看到好多说改这个文件里的ninja --version 但是对我来说不管用)

subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

因为每次这个报错都会丢出超级长的内容,不知道到底要从哪里找源头,所以这个问题困扰了我快要一天,偶然间,耐心再看看这个报错,终于意外找到了切入点,搜索了下面这句话

build.ninja... Compiling objects... Allowing ninja to set a default number of workers... 

(因为不管我按照md里的要求,安装多少遍我的环境里的torch torchvision cudatoolkit,只要Compiling CUDA operators就会报与ninja相关的错,所以意外找到了上面搜索的关键词源头)

所以,第二个坑是执行Compiling CUDA operators里 的相关文件时候,总是报上面的错。最终在下面的链接里找到了解决方案。

make.sh · Issue #10 · fundamentalvision/Deformable-DETR · GitHub

即,在执行类似 sh ./make.sh操作前,加绿线这句话!

 我当前的cuda是10.2,执行完这句话以后貌似cuda变成了11.0?(因为紧接着我配置referformer的环境时,在执行python setup.py build install之前,也加了这句话,就会又报错 坑一 的问题),所以这句话的作用是什么??(在referformer里,我在执行 python setup.py build install 之前,也加了这句export CUDA_HOME=/usr/local/cuda-10.2,不过需要把11.0变成我nvcc对应的10.2的,然后就好了!也同样能编译了!)

最后

我也不知道为什么,我第一次安装referformer的环境的时候,好像是有加export这句话去修改cuda环境变量。但当时没记录,可能比较幸运的成功了,但这次就因为忘记这个关键步骤了所以一直困在第二个坑里,差点没爬出来。以后在安装配置东西的时候,还是保持记录吧,如果你知道export CUDA_HOME这句话的作用,欢迎告诉我,谢谢!

痛,实在太痛了,我淋过雨所以。。。。。orz 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值