1. 环境准备与前置条件检查
在开始安装MMDetection 3.x之前,我们需要确保基础环境配置正确。RTX 4090显卡需要特定的驱动和CUDA版本支持,这是整个安装过程中最关键的一环。
1.1 硬件与系统要求
对于RTX 4090显卡,官方推荐使用CUDA 12.x版本。我实测发现,CUDA 12.4在这个硬件组合下表现最为稳定。以下是详细的环境要求清单:
- 操作系统:Ubuntu 20.04/22.04 LTS(Windows也可行但Linux环境更稳定)
- GPU驱动:NVIDIA Driver 535及以上版本
- CUDA Toolkit:12.4(必须与驱动版本匹配)
- cuDNN:8.9.x(与CUDA 12.4兼容的版本)
- Python:3.8.x(建议使用3.8.10)
重要提示:安装前务必通过
nvidia-smi命令确认驱动版本和CUDA版本兼容性。我曾遇到过驱动版本不匹配导致CUDA无法识别显卡的问题。
1.2 Python环境配置
建议使用conda创建独立的Python环境,避免与其他项目产生冲突:
conda create -n mmdet python=3.8.10 -y conda activate mmdet安装基础依赖包:
pip install numpy opencv-python pillow matplotlib ipython2. CUDA与cuDNN安装详解
2.1 NVIDIA驱动安装
对于Ubuntu系统,推荐使用官方.run文件安装驱动:
# 先卸载旧驱动 sudo apt purge nvidia* sudo apt autoremove # 下载官方驱动(需根据显卡型号选择) wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.86.05/NVIDIA-Linux-x86_64-535.86.05.run sudo sh NVIDIA-Linux-x86_64-535.86.05.run安装完成后验证:
nvidia-smi应该能看到类似如下的输出,且CUDA Version显示为12.x:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.86.05 Driver Version: 535.86.05 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+2.2 CUDA 12.4安装
从NVIDIA官网下载对应版本的CUDA Toolkit:
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run sudo sh cuda_12.4.0_550.54.14_linux.run安装时注意:
- 取消勾选Driver安装(如果已经单独安装过驱动)
- 确保勾选cudart和cupti组件
安装完成后配置环境变量:
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc验证安装:
nvcc --version应显示:
nvcc: NVIDIA (R) Cuda compiler release 12.4, V12.4.1312.3 cuDNN安装
从NVIDIA开发者网站下载对应版本的cuDNN(需要注册账号):
# 解压后复制文件 sudo tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*3. PyTorch与MMDetection安装
3.1 PyTorch安装
对于CUDA 12.4,需要使用PyTorch 2.0+版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121验证PyTorch是否能识别GPU:
import torch print(torch.cuda.is_available()) # 应该返回True print(torch.cuda.get_device_name(0)) # 应该显示"RTX 4090"3.2 MMDetection完整安装
- 首先安装MMEngine和MMCV:
pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0"- 克隆MMDetection仓库:
git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection git checkout v3.0.0 # 使用3.x稳定版本- 安装依赖:
pip install -v -e .- 验证安装:
from mmdet.apis import init_detector print("MMDetection安装成功!")4. 常见问题与解决方案
4.1 CUDA版本不匹配问题
错误现象:
RuntimeError: CUDA error: no kernel image is available for execution on the device解决方案:
- 确认PyTorch版本与CUDA版本匹配
- 重新安装对应版本的PyTorch:
pip install torch==2.0.1+cu121 torchvision==0.15.2+cu121 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu1214.2 显卡驱动冲突
错误现象:
Existing package manager installation of the driver found解决方案:
- 完全卸载旧驱动:
sudo apt-get purge nvidia* sudo apt-get autoremove sudo apt-get install -f- 重新安装驱动(见2.1节)
4.3 MMDetection导入错误
错误现象:
ImportError: cannot import name 'xxx' from 'mmdet'解决方案:
- 确保安装了正确版本的MMCV:
mim uninstall mmcv mim install "mmcv>=2.0.0"- 重新编译安装:
pip uninstall mmdet pip install -v -e .5. 性能优化建议
5.1 启用Tensor Cores
在config文件中添加以下配置以充分利用RTX 4090的Tensor Core:
fp16 = dict(loss_scale=512.) # 混合精度训练5.2 调整batch size
RTX 4090的24GB显存允许使用更大的batch size。以Faster R-CNN为例,可以将默认的2调整为4-8:
data = dict( samples_per_gpu=4, # 根据模型复杂度调整 workers_per_gpu=4 # 建议与CPU核心数匹配 )5.3 使用最新CUDA特性
在编译自定义算子时,添加以下编译选项:
export CUDA_HOME=/usr/local/cuda-12.4 export FORCE_CUDA=1 export TORCH_CUDA_ARCH_LIST="8.9" # Ada架构代码生成我在实际使用中发现,完整编译安装后,RTX 4090在COCO数据集上的训练速度比RTX 3090快约40%。特别是在使用大batch size时,24GB显存可以显著减少梯度累积次数。