• 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 

  • 相关阅读:
    持续集成交付CICD:安装Gitlab Runner(从节点)
    Go语言开发环境搭建
    耳机不怕丢,Belkin最新降噪耳机支持苹果 Find My
    93. 复原 IP 地址
    uni-app 之 获取网络列表数据
    【UCIe】UCIe 软件配置
    将数组和减半的最少操作【贪心2】
    最新AI创作系统/AI绘画系统/ChatGPT系统+H5源码+微信公众号版+支持Prompt应用
    Qt QSS QSlider样式
    设计模式之观察者(Observer)
  • 原文地址:https://blog.csdn.net/weixin_41469023/article/details/127605771