RTX 20系显卡深度学习环境配置实战:从SOLO实例分割到避坑指南
当我在实验室第一次尝试用RTX 2080Ti跑SOLOv2时,本以为按官方文档就能轻松搞定,结果却在环境配置上折腾了整整三天。这种经历对于使用NVIDIA 20系显卡的研究者来说太常见了——网上大量教程都是基于30系显卡的现代环境,而20系显卡需要的特定版本组合却鲜少被系统性地整理。本文将分享一套在RTX 2080Ti/2060上实测可用的完整方案,涵盖从CUDA驱动选择到最终模型评估的全流程。
1. 硬件与基础环境配置
RTX 20系显卡(图灵架构)与30系(安培架构)在CUDA支持上存在关键差异。20系显卡最高支持CUDA 11.1,而PyTorch 1.4.0这个"古老"版本恰恰是SOLO系列最稳定的选择。以下是经过反复验证的黄金组合:
# 检查显卡驱动版本(需≥450.80.02)
nvidia-smi --query-gpu=driver_version --format=csv
驱动安装完成后,创建隔离的Python环境:
conda create -n solo python=3.7.3 -y
conda activate solo
关键组件版本对照表:
| 组件 | 20系推荐版本 | 30系常见版本 | 兼容性说明 |
|---|---|---|---|
| CUDA | 10.1/11.0 | 11.3+ | 30系卡强制要求CUDA≥11.1 |
| PyTorch | 1.4.0 | 1.9.0+ | 新版PyTorch在20系卡上可能触发kernel错误 |
| torchvision | 0.5.0 | 0.10.0+ | 必须与PyTorch主版本匹配 |
| mmcv | 0.2.15 | 1.3.0+ | 新版mmcv依赖PyTorch≥1.5 |
注意:切勿混用不同源的安装包,建议全部使用清华镜像源保持一致性:
-i https://pypi.tuna.tsinghua.edu.cn/simple
2. 依赖库精确安装指南
SOLO对环境的要求堪称苛刻,某个依赖项的微小版本差异就可能导致难以排查的段错误。以下是经过完整依赖关系验证的安装顺序:
# 必须按此顺序安装!
pip install torch==1.4.0 torchvision==0.5.0
pip install cython numpy==1.18.5
pip install mmcv==0.2.15 # 核心依赖
常见问题解决方案:
- 报错"GLIBCXX_3.4.26 not found" :降级gcc到8.x版本
- "CUDA kernel failed" :检查torch与CUDA版本匹配性
-
"undefined symbol"
:重新编译mmdetection前执行
pip uninstall mmcv
完整依赖清单(保存为requirements.txt):
albumentations==0.3.2
imagecorruptions
matplotlib
Pillow==6.2.2
terminaltables
pycocotools
kwarray
xdoctest==0.10.0
3. SOLO源码编译技巧
官方仓库的代码需要两阶段编译,这是大多数教程忽略的关键细节:
git clone -b v1.0.0 https://github.com/open-mmlab/mmdetection.git
cd mmdetection
python setup.py develop # 第一阶段编译
git clone https://github.com/WXinlong/SOLO.git
cd SOLO
pip install scipy # 必须在此阶段安装
python setup.py develop # 第二阶段编译
编译过程中的典型问题:
- 缺少pycocotools :手动编译安装而非通过pip
- OpenCV冲突 :使用conda安装的opencv需要先卸载
-
C++14标准要求
:通过
export CXX=g++-8指定编译器
重要提示:在mmdetection编译完成后,务必验证基础功能:
import mmcv from mmdet.apis import init_detector print(mmcv.__version__) # 应显示0.2.15
4. 模型训练与调优实战
使用自定义数据训练时,配置文件需要三项关键修改:
# 修改SOLO/configs/solo/solo_r50_fpn_8gpu_3x.py
model = dict(
bbox_head=dict(
num_classes=81, # 改为实际类别数+1
)
)
data = dict(
train=dict(
ann_file='data/coco/annotations/instances_train2017.json',
img_prefix='data/coco/train2017/'
)
)
训练启动命令需要显式指定GPU数量:
# 单卡训练(即使配置文件名为8gpu)
CUDA_VISIBLE_DEVICES=0 python tools/train.py configs/solo/solo_r50_fpn_8gpu_3x.py --validate
训练过程监控技巧:
-
使用
watch -n 1 nvidia-smi观察显存占用 -
修改
log_config中的interval值控制日志频率 - 出现NaN损失时尝试降低学习率到0.002
5. 性能评估与可视化
生成COCO格式的评价指标时,这个命令组合在20系显卡上最稳定:
python tools/test_ins.py \
configs/solo/solo_r50_fpn_8gpu_3x.py \
work_dirs/solo_release_r50_fpn_8gpu_3x/latest.pth \
--eval segm \
--show-dir results
可视化结果优化建议:
-
修改
mmdet/core/visualization.py中的颜色映射方案 -
调整
inference_demo.py中的score_threshold过滤低质量预测 - 使用albumentations库进行测试时数据增强
当所有组件版本正确匹配时,RTX 2080Ti在COCO val2017上应达到约33.1%的mask AP。如果结果偏差超过2%,建议检查:
- 是否漏装了某些依赖项
- CUDA是否运行在正确版本
- 数据预处理管道是否与训练时一致
&spm=1001.2101.3001.5002&articleId=108160354&d=1&t=3&u=60b07c829eb2497d88944891b5c2adae)
3605

被折叠的 条评论
为什么被折叠?



