2026/8/27 13:40:11

AViD多GPU环境部署指南:TORCH_CUDA_ARCH_LIST配置与ms_deform_attn CUDA算子编译避坑清单

AViD多GPU环境部署指南:TORCH_CUDA_ARCH_LIST配置与ms_deform_attn CUDA算子编译避坑清单 AViD多GPU环境部署指南TORCH_CUDA_ARCH_LIST配置与ms_deform_attn CUDA算子编译避坑清单【免费下载链接】AViDFramework that enables fine-tuning of vision-language grounding models on custom datasets项目地址: https://gitcode.com/gh_mirrors/avid1/AViDAViD 是一个基于 Grounding DINO LoRA 的开源视觉语言接地Vision-Language Grounding模型微调框架能让模型把 cat on the sofa 这类文本描述精确定位到图像区域。在多 GPU 环境下部署它90% 的坑集中在两处TORCH_CUDA_ARCH_LIST环境变量没配好、ms_deform_attnCUDA 算子没编译成功。本文按检查环境 → 配置编译 → 避坑清单 → 多卡注意事项 → 部署验证给出完整步骤。 AViD 是什么先搞懂部署要解决什么LoRA 参数高效微调只训练约 2% 的参数默认 rank 32大幅降低显存和存储需求EMA 平滑稳定微调时保留预训练知识防止灾难性遗忘自带评估体系mAP、Precision、Recall、F1 指标详见仓库根目录的EVALUATION.md关键背景训练入口train.py中模型默认固定在devicecuda而检测核心算子ms_deform_attn必须依赖编译后的 C 扩展groundingdino._C。编译一旦失败项目会直接降级为纯 CPU 模式groundingdino/models/GroundingDINO/ms_deform_attn.py中会打印Failed to load custom C ops. Running on CPU mode Only!训练速度会掉几个数量级。 第一步获取代码并检查 GPU 环境git clone https://gitcode.com/gh_mirrors/avid1/AViD cd AViD # 查看每张卡的型号与计算能力 nvidia-smi --query-gpugpu_name,compute_cap --formatcsv # 查看 CUDA 编译工具版本 nvcc --version常见显卡的TORCH_CUDA_ARCH_LIST取值对照GPU 型号计算能力对应 ARCH 值V100 / P1006.0 / 6.16.0 / 6.1RTX 30 系列3090 等8.68.6RTX 40 系列4090 等8.98.9A1008.08.0H1009.09.0 多卡机器请逐张卡查看计算能力而不是只看第一张。⚙️ 第二步正确配置 TORCH_CUDA_ARCH_LIST编译成败关键setup.py中决定是否走 CUDA 编译的核心判断约第 73 行if CUDA_HOME is not None and (torch.cuda.is_available() or TORCH_CUDA_ARCH_LIST in os.environ):满足条件才会用CUDAExtension编译 CUDA 算子否则打印Compiling without CUDA装出来的包无法跑 GPU。完整的一键部署命令pip install -r requirements.txt export CUDA_HOME/usr/local/cuda export TORCH_CUDA_ARCH_LIST8.6 export FORCE_CUDA1 pip install -e .配置要点多个架构必须用分号分隔如export TORCH_CUDA_ARCH_LIST7.5;8.0;8.6逗号写法无效无 GPU 驱动的服务器上只要显式设置了TORCH_CUDA_ARCH_LISTsetup.py也会强制走 CUDA 编译——这是为远程编译机准备的依赖中setuptools65.5.1、torch、torchvision已固定在requirements.txt请按顺序安装避免新版 setuptools 导致编译行为变化️ 第三步ms_deform_attn CUDA 算子编译避坑清单ms_deform_attn多尺度可变形注意力算子源码位于groundingdino/models/GroundingDINO/csrc/包含vision.cpp、ms_deform_attn_cpu.cpp与ms_deform_attn_cuda.cu。编译失败时对照下表逐项排查#现象根因解决方案1能 import 但提示 CPU mode Only编译时没设TORCH_CUDA_ARCH_LIST或机器无 GPU设置变量后重新pip install -e .2nvcc: fatal: Unknown compute_XXARCH 值超出 CUDA 工具包支持范围升级 nvcc或改回工具包支持的架构3CUDA_HOME not set报错未导出 CUDA 工具包路径export CUDA_HOME/usr/local/cuda4编译极慢或卡死枚举了过多无关架构只保留实际在用的架构5反复编译仍报旧错误build 缓存 / 旧.so未清理删除build/目录和groundingdino/_C*.so后重编⚠️ 编译完成后务必验证算子真正加载成功python -c from groundingdino import _C; print(CUDA ops OK)️ 第四步多 GPU 环境特殊注意事项训练默认单卡train.py硬编码devicecuda分布式训练在项目 Roadmap 中尚未实现。多卡机器请用CUDA_VISIBLE_DEVICES指定训练用卡CUDA_VISIBLE_DEVICES0 python train.py --config configs/train_config.yaml混卡场景编译时的 ARCH 列表必须覆盖你打算运行的所有GPU否则对应显卡运行时会报invalid device function编译与训练不要抢同一张卡nvcc 编译阶段会占用可观的显存和 CPU建议编译时训练任务停掉数据加载并发configs/train_config.yaml中num_workers: 8多卡机器若磁盘 IO 成为瓶颈可适当调小batch_size 从 4 起步参考配置configs/train_config.yamlSwin-T 底座显存占用不低OOM 时优先降 batch 而不是换卡✅ 第五步部署完成后的三步验证# 1. 验证 CUDA 算子加载 python -c from groundingdino import _C; print(CUDA ops OK) # 2. 单图推理测试 python demo/inference_on_a_image.py # 3. 标准评估流程 python test.py --config configs/test_config.yaml三步都通过后再启动交互式演示可选python demo/gradio_app.py --share以官方 fashion 示例数据集为例微调前后对比可参考仓库results/目录下的效果图微调前效果如下 常见问题速查问题先查哪里pip install -e .显示 Compiling without CUDACUDA_HOME、TORCH_CUDA_ARCH_LIST是否已 export运行时报invalid device functionARCH 值与当前 GPU 计算能力是否匹配依赖版本冲突是否严格按requirements.txt顺序安装训练启动后 GPU 利用率恒为 0CUDA_VISIBLE_DEVICES是否指到了被占用的卡配置好TORCH_CUDA_ARCH_LIST、编译通过ms_deform_attn算子你的 AViD 多 GPU 环境就可以直接开始 LoRA 微调了。【免费下载链接】AViDFramework that enables fine-tuning of vision-language grounding models on custom datasets项目地址: https://gitcode.com/gh_mirrors/avid1/AViD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考