OpenMMLab实战部署:从环境配置到避坑指南
1. 为什么需要这份OpenMMLab实战部署指南第一次接触OpenMMLab的朋友可能会觉得这不就是个普通的深度学习框架安装吗但真正操作过的开发者都知道从环境配置到成功运行第一个demo中间要踩的坑可能比想象中多得多。我见过不少新手在PyTorch和CUDA版本匹配上就折腾好几天也遇到过因为mmcv版本不兼容导致整个项目无法启动的情况。OpenMMLab作为计算机视觉领域的瑞士军刀包含了MMDetection、MMSegmentation、MMRotate等多个子项目。虽然官方文档提供了基础安装指南但在实际部署时你会发现不同子项目对依赖库的版本要求可能互相冲突。更不用说在国内网络环境下动辄几个小时的下载过程简直让人崩溃。这份指南会带你避开我踩过的所有坑。从硬件环境检查到国内镜像加速从版本兼容性测试到常见报错解决我会把五年来的实战经验全部浓缩在这里。无论你是在个人工作站搭建开发环境还是在服务器集群部署生产系统都能找到对应的解决方案。2. 环境准备从硬件检查到基础依赖2.1 硬件环境自查清单在开始安装前请先打开终端执行这个命令nvidia-smi这个简单的命令能告诉你三件关键事显卡型号、驱动版本和最高支持的CUDA版本。我遇到过不少开发者直接照搬教程安装CUDA 10.2结果因为驱动太新导致不兼容。比如输出显示CUDA Version: 11.4那么安装CUDA 10.2大概率会出问题。另一个容易忽视的是显存容量。MMDetection训练目标检测模型时batch_size2的情况下至少需要6GB显存。如果你的显卡只有4GB可能连demo都跑不起来。这时候要么换显卡要么得调整模型配置。2.2 Conda环境配置技巧官方推荐使用Python 3.8但实测3.7-3.9都可以正常工作。我建议专门为OpenMMLab创建独立环境conda create -n openmmlab python3.8 -y conda activate openmmlab有个小技巧是在创建环境时直接安装基础依赖conda create -n openmmlab python3.8 numpy matplotlib tqdm -y这样可以避免后续单独安装这些常用库。3. PyTorch与CUDA的版本迷宫3.1 如何选择正确的组合官方文档可能推荐PyTorch 1.8 CUDA 10.2但这不是唯一选择。经过大量测试我整理出这个兼容性表格PyTorch版本推荐CUDA版本适用显卡架构1.8.x10.2/11.1Turing及更早1.12.x11.6Ampere2.0.x11.7/11.8最新架构对于RTX 30/40系列显卡建议直接用这个命令conda install pytorch1.12.0 torchvision0.13.0 torchaudio0.12.0 cudatoolkit11.6 -c pytorch -c conda-forge3.2 验证安装是否成功安装后不要急着往下走先运行这个测试脚本import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.version.cuda)如果输出显示CUDA不可用很可能是驱动不兼容。这时候需要检查nvidia-smi显示的CUDA版本是否与安装版本匹配。4. OpenMMLab核心组件安装4.1 使用MIM管理安装OpenMMLab官方推荐使用mim工具安装pip install -U openmim mim install mmcv-full但这里有个大坑不同子项目对mmcv的要求可能不同。比如MMDetection需要mmcv-full2.0.0而MMSegmentation要求2.0.0rc4。解决方法是为每个项目创建独立环境。4.2 国内镜像加速技巧在安装mmcv-full这种大文件时建议使用清华源mim install mmcv-full -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple如果下载中途失败可以尝试加上--default-timeout1000参数pip install --default-timeout1000 mmcv-full -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple5. 子项目特定安装指南5.1 MMDetection安装要点对于MMDetection 2.x版本需要注意mim install mmdet3.0.0Windows用户要特别注意斜杠问题mim install mmdet^3.0.05.2 MMSegmentation的特殊要求最新版MMSegmentation对mmcv的版本控制非常严格。安装后如果报版本不兼容可以这样解决mim uninstall mmcv mim install mmcv2.1.06. 验证安装与排错技巧6.1 运行demo测试每个子项目都提供了demo脚本。以MMDetection为例python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth如果报错缺少模块通常是依赖项没装全。这时候需要根据错误信息逐个安装。6.2 常见错误解决方案遇到CUDA out of memory怎么办先尝试减小batch_size如果还是不行torch.cuda.empty_cache()遇到版本冲突时可以使用pipdeptree检查依赖关系pip install pipdeptree pipdeptree | grep mmcv7. 生产环境部署建议对于服务器部署我推荐使用Docker容器。OpenMMLab官方提供了预构建镜像docker pull openmmlab/mmdetection:2.25.0在Kubernetes集群中部署时要注意GPU资源分配。这个yaml配置很实用resources: limits: nvidia.com/gpu: 1最后提醒一点所有安装步骤最好写在脚本里方便在其他机器上复现。我习惯把完整流程保存为setup.sh包含所有安装命令和版本号。这样下次换机器时一个脚本就能搞定所有环境配置。