博主在一台Linux系统服务器上安装DeformableDETR,过程报错很多,这里总结一下。服务器GPU:RTX 4090(Ampere架构),驱动支持:CUDA 12.2,我选择的PyTorch 为 CUDA 12.1 版本,以下是完整的安装流程,包含所有 10 个步骤:

  1. 创建并激活 Conda 环境

    这一步创建一个新的 Python 3.9 环境,确保隔离依赖。
    • 执行命令:conda create -n deformable_detr1 python=3.9 -y
    • 激活环境:conda activate deformable_detr1
  2. 安装 PyTorch 及相关组件(CUDA 12.1)

    确保 PyTorch 版本与指定 CUDA 版本兼容。
    • 执行命令:pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
  3. 降级 NumPy 以防止兼容性问题

    避免 NumPy 2.x 可能带来的版本冲突。
    • 执行命令:pip install "numpy<2"
  4. 安装基础编译工具和依赖

    安装所需依赖:ninja、cython 等,用于编译和运行时支持(包含官方requirement.txt中所需的依赖)。
    • 执行命令:pip install ninja cython scipy opencv-python pillow matplotlib tqdm pycocotools
  5. 安装 CUDA 运行时和 nvcc 工具

    注:这一步可能未包含所有头文件,需要额外安装。
    • 执行命令:conda install nvidia::cuda-nvcc nvidia::cudatoolkit -y
  6. 单独安装必需的头文件

    • 执行命令:
      conda install nvidia/label/cuda-12.1.0::libcusparse-dev
      conda install nvidia/label/cuda-12.1.0::libcublas-dev
      conda install nvidia/label/cuda-12.1.0::libcusolver-dev
      conda install libxcrypt
      conda install nvidia/label/cuda-12.1.0::cuda-cudart-dev
      

      这些解决常见编译错误,如头文件缺失。

  7. 安装 CCCL 头文件(关键步骤)

    • 下载和解压缩:
      wget https://codeload.github.com/NVIDIA/cccl/zip/refs/heads/main -O /tmp/cccl.zip
      unzip -q /tmp/cccl.zip -d /tmp/
      
    • 复制头文件:
      cp -r /tmp/cccl-main/libcudacxx/include/nv $CONDA_PREFIX/include/
      cp -r /tmp/cccl-main/thrust/thrust $CONDA_PREFIX/include/
      cp -r /tmp/cccl-main/cub/cub $CONDA_PREFIX/include/  # 可选,推荐
      cp -r /tmp/cccl-main/libcudacxx/include/cuda $CONDA_PREFIX/include/
      
    • 清理临时文件:rm -rf /tmp/cccl.zip /tmp/cccl-main
  8. 解决链接器找不到 -lcudart 问题

    注:如果驱动错误(如“CUDA driver version is insufficient”),检查 nvidia-smi 确保驱动版本 ≥ CUDA 版本(本例中驱动 535 支持 CUDA 12.2,但需匹配 PyTorch 自带的库)。
    • 执行命令,假设第一行指令找到的为libcudart-9335f6a2.so.12,否则对应替换第二行指令的操作对象:
      ls $CONDA_PREFIX/lib/python3.9/site-packages/torch/lib/libcudart*
      ln -sf $CONDA_PREFIX/lib/python3.9/site-packages/torch/lib/libcudart-9335f6a2.so.12 $CONDA_PREFIX/lib/libcudart.so
      
  9. 编译并安装 CUDA 扩展

    • 切换目录:cd ~/Deformable-DETR-main/models/ops
    • 执行编译脚本:sh ./make.sh
    • 验证:python test.py。期望输出全部 True,检查前向传播和梯度。若出错,复查 CUDA 库链接。
  10. 修复模型脚本导入错误

    • 修复 misc.py:编辑文件 ~/Deformable-DETR-main/util/misc.py,将指定导入“from torchvision.ops.misc import _NewEmptyTensorOp”替换为:
      try:
          from torchvision.ops.misc import _NewEmptyTensorOp
      except ImportError:
          # 兼容较新 torchvision 版本 (>=0.18)
          def _NewEmptyTensorOp(*args, **kwargs):
              return torch.empty(*args, **kwargs)
      

安装完成,建议使用 from models.ops.modules import MSDeformAttn,并将所有代码放在 ~/Deformable-DETR-main/ 目录下以符合规范。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐