欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Win11、PyTorch和MMDetection的GPU配置:一次令人难忘的踩坑经历

最编程 2024-08-07 09:36:21
...

一 anaconda 安装和配置

1. 下载

软件下载地址 下载地址 Index of /anaconda/archive/

按照date排序,选择最新的版本,如下图。 image.png

2. 安装

记得在安装中勾选此选项。 image.png

3. 验证

一路安装完成以后,就可以打开cmd测试一下安装结果。 分别输入python、ipython、conda、jupyter notebook等命令,会看到相应的结果,说明安装成功。(python是进入python交互命令行;ipython是进入ipython交互命令行,很强大;conda是Anaconda的配置命令;jupyter notebook则会启动Web端的ipython notebook)

image.png

4. 换源

Anaconda安装成功之后,我们需要修改其包管理镜像为国内源

Tsinghua Open Source Mirror

按照指引更换清华源。

5. 基本语句

  • 创建新虚拟环境
    • conda create -n py37 python=3.7
    • 意思是创建名为 py37 的环境, python版本3.7
  • 进入环境
    • conda activate py37
    • 接下来的操作都需要在虚拟环境中进行
  • 退出环境
    • conda deactivate
  • 安装包
    • conda install xxx
  • 删除环境
    • conda remove -n py37 --all

二 pytorch 安装和配置

1. 总述

pytorch 部分安装需要 cuda、cudnn、torch版本匹配。

mmdetection 部分安装需要 mmcv、mmdt版本匹配。

我们先去 mmcv 文档检查支持的版本。网址为欢迎来到 MMCV 的中文文档! — mmcv 1.7.0 文档,在介绍与安装 - 安装 MMCV - 使用 pip 安装一节中,提到了对应版本匹配情况。

image.png

所以我们选择 cuda=11.6 torch=1.12 mmcv=1.62。

cuda版本一定要选择 11.6。

这是一个大坑,千万不要选错版本。

2. pytorch 安装

实际上,nvidia 显卡笔记本都内置cuda,只不过版本各异。我们需要在虚拟环境中安装特定版本 cuda。

首先创建新环境,python选择3.8。进入该环境。

Start Locally | PyTorch是 pytorch 安装 start。可以看到需要选择对应的版本,直接按照如图选择。

image.png

会到国外的镜像去下载一些包,亲测清华源似乎有点包不兼容,所以就等吧。

3. pytorch 检查

安装好, 我们需要去检查 pytorch 是否安装成功,是否是 GPU 版本。

输入python进入 python 环境。

import torch

a = torch.ones((3, 1))

a = a.cuda(0)

如果运行没有报错,恭喜完成了 GPU 版本 pytorch 的安装。

三 mmdetection 安装

1. mmcv 安装

有两个版本 mmcv-full 和 mmcv, 做科研推荐 mmcv-full。

运行

pip install -U openmim
mim install mmcv-full

“如果发现上述的安装命令没有使用预编译包(以 .whl 结尾)而是使用源码包(以 .tar.gz 结尾)安装,则有可能是我们没有提供和当前环境的 PyTorch 版本、CUDA 版本相匹配的 mmcv-full 预编译包,此时,你可以[源码安装 mmcv-full]”

之前踩过坑,选择了没有预编译包的cuda和torch版本,结果拉下来就是 tar.gz 的包,需要重新编译,然后一直提示 g++ return 0, 尝试谷歌了很久都没有解决。

2. mmdetection 安装

运行

pip install openmim
mim install mmdet

其实如果这一步没有问题,可以直接省略 1中的mmcv-full 安装。

3. mmdet 验证

按照官网实例: 为了验证是否正确安装了 MMDetection 和所需的环境,我们可以运行示例的 Python 代码来初始化检测器并推理一个演示图像:

from mmdet.apis import init_detector, inference_detector

config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# 从 model zoo 下载 checkpoint 并放在 `checkpoints/` 文件下
# 网址为: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# 初始化检测器
model = init_detector(config_file, checkpoint_file, device=device)
# 推理演示图像
inference_detector(model, 'demo/demo.jpg')

四 总结

自此大功告成,最大的启发就是:按照各个模块的版本要求来,多看看文档。