前言

最近在 AutoDL 云服务器上复现 DINO (DETR with Improved DeNoising Anchor Boxes) 模型,官方教程比较久远,在实际部署过程中踩了不少坑(内存溢出、网络超时、版本不兼容、CUDA 编译报错等)。

经过多次尝试,总结出了一套最稳、最快的安装流程。本教程基于 Python 3.7 + PyTorch 1.12.1 环境,完美解决所有兼容性问题。

0. 准备工作

  • 平台:AutoDL
  • 基础镜像:Miniconda / Python 3.8/CUDA 11.8 (我们后续会自己建环境)

1. 创建纯净环境

DINO 官方推荐 Python 3.7,实测这是坑最少的版本(避开了 NumPy 2.0 和新版 PyTorch API 变动的问题)。

# 1. 初始化 Conda (如果是新开的实例)
conda init bash
source ~/.bashrc

# 2. 创建 Python 3.7 环境
conda create -n A-DETR python=3.7 -y

# 3. 激活环境
conda activate A-DETR

小技巧:如果想每次打开终端自动进入该环境,可以执行:

echo "conda activate A-DETR" >> ~/.bashrc
source ~/.bashrc

2. 下载代码与网络加速

AutoDL 访问 GitHub 较慢,建议开启学术加速。

# 开启学术加速
source /etc/network_turbo

# 克隆项目
git clone https://github.com/IDEA-Research/DINO.git
cd DINO

3. 安装 PyTorch (核心避坑点)

坑点:AutoDL 无卡模式启动内存只有 2GB,直接 pip install 大文件(如 PyTorch)会导致内存溢出进程被杀(Killed)。
解决:要大内存,开机就行,不要无卡模式

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

4. 安装依赖包

这里有几个包需要特殊处理,直接运行 requirements.txt 会报错。

4.1 安装特殊包

  1. panopticapi:国内镜像源里没有,必须从 GitHub 源码安装。
  2. safetensors:新版本不支持 Python 3.7,必须指定旧版本。
# 保持加速开启状态
pip install git+https://github.com/cocodataset/panopticapi.git
pip install safetensors==0.4.5

4.2 安装剩余依赖

修改项目自带的 requirements.txt,防止版本冲突。
建议将 requirements.txt 内容清空,替换为以下纯净版

cython
pycocotools
submitit
# torch (已单独安装)
# torchvision (已单独安装)
# panopticapi (已单独安装)
scipy
termcolor
addict
yapf
timm

然后执行安装:

pip install -r requirements.txt

5. 编译 CUDA 加速算子 (MultiScaleDeformableAttention)

这是 DINO 的核心部分。

cd models/dino/ops
python setup.py build install

关于编译时的 Warning

如果你使用的是 PyTorch 1.12,编译过程中会看到很多红色的 Warning:

warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated...

不要慌! 这是因为 DINO 代码用了旧版 API value.type(),在 1.12 中只是警告,不影响编译和运行。

  • 只要最后显示 Finished processing dependencies for MultiScaleDeformableAttention==1.0,就是成功了
  • 注:如果你非要用 PyTorch 2.0+,则必须手动修改源码将 value.type() 改为 value.scalar_type(),否则会报错退出。

6. 验证环境

回到项目根目录,运行帮助命令:

cd ../../..
python main.py --help

如果输出了参数列表(usage: main.py …),说明环境搭建大功告成!


总结

  1. 环境:Python 3.7
  2. 内存
  3. 依赖panopticapi 需源码装,safetensors 要降级。
  4. 编译:PyTorch 1.12 可以忽略 API 弃用警告,直接编译通过。

希望这篇笔记能帮大家节省时间,One Run Success!
如有其他建议和意见,欢迎交流

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐