1011 字
5 分钟
YOLO入门 3 CUDA加速(GPU环境配置)

前言#

很遗憾的是我的笔记本上没有 NV 的独显,所以不得不在 Windows 的台式机上配置相关环境,但过程并没有太大区别,可以作为参考。

我准备把一块老的机械硬盘,拿去做 Linux 的系统盘!


Window 下的数据集信息配置#

YOLO入门 2 标注数据集并训练检测 中写过关于数据集的配置方法。

其中需要对数据集信息配置 (.yaml),由于 Window 和 Linux 的路径写法不同,需要进行重新配置:

path: D:\YOLO\DataSet\UA-DETRAC\SampleTest
train:
- Train\MVI_20011
val:
- Val\MVI_20062
test:
- Test\MVI_39311
nc: 1
names: ['car']

环境测试#

如果对环境不清楚的可以运行以下代码进行测试:

# 导入 torch 库
import torch
# 查看版本
print(torch.__version__)
# 查看 GPU 是否可用
print(torch.cuda.is_available())
# 查看 GPU 设备数量
print(torch.cuda.device_count())

如果 PyTorch 配置正确,并且支持 CUDA:

Terminal window
1.10.1+cu113
True
1

如果环境配置错误或不支持 CUDA:

Terminal window
1.10.1+cpu
False
0

配置 CUDA 环境#

NVIDIA 获取软件的安装包和安装脚本:

不多说明,Nvidia 给的教程很详细,但需要注意,有部分老显卡,例如 XM150 是不支持最新的驱动,需要安装老版本,最好是从最新的驱动一个个试过去。


配置 Pytorch-CUDA#

如果是通过如下指令安装的 Pytorch,只能用 CPU 计算:

Terminal window
pip3 install pytorch

输入如下指令,安装 Pytorch 的 CUDA 版本:

Terminal window
pip3 install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio===0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

安装指令和安装的 CUDA 版本有关Pytorch 官网会根据系统、CUDA版本等自动生成安装指令。

关于 CUDA 的版本,不要看安装的版本号,例如我获得的 CUDA 安装包的版本是 11.5.1,但 torch 官网根本没有这个版本号,需要看大版本号或者直接安装和 torch 对应的 CUDA 。


最终测试#

如果配置没有没有错误,输入如下执行,使用 CUDA 加速:

python3 train.py --weights yolov5s.pt --epoch 100 --data DataSet\UA-DETRAC\SampleTest\SampleTest.yaml --img 320 --nosave --device 0
  • device DEVICE : cuda device, i.e. 0 or 0,1,2,3 or cpu

如果只有1个 GPU,将 device 参数从 cpu 修改为 0 即可。


报错合集#

UserWarning: Distutils was imported before Setuptools.#

D:\Python\lib\site-packages\setuptools\distutils_patch.py:25: UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may exhibit undesirable behaviors or errors. Please use Setuptools’ objects directly or at least import Setuptools first. warnings.warn(

这个错误是比较常见的包导入顺序导致的错误,YOLOv5 中 Distuils 比 Setuptools 先导入了。

解决方法是在所有文件中加入 import Setuptools ,但这样过于繁琐,所以参考了网友给的意见1,安装 49.2 以下版本的 setuptools:

But that code must run before importing django in every manage.py file, so it is not easy to disable in my test suite. Another workaround is to install “setuptools<49.2”.

Terminal window
pip3 install "setuptools<49.2"

[WinError 1455] 页面文件太小,无法完成操作#

参考 Star星屹程序设计2 给出的方案:

方法1:修改虚拟内存

控制面板 >> 所有控制面板项 >> 系统 >> 高级系统设置 >> 高级 >> 性能 >> 高级 >> 更改 >> 自定义大小,修改初始大小和最大值。

只要比当前盘符的剩余空间小就行,如果空间足够可以直接将大小调整为 100GB 都可以。

修改完成并保存后,重启电脑,开始训练。

方法2:修改模型参数

修改 YOLOv5 模型的参数,需要修改的文件在 yolov5-master\utils\datasets.py,需要修改参数 num_workers 为 0 。

如果 num_worker 设为0,意味着每一轮迭代时,dataloader 不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。3

修改这个参数只是会减慢训练性能,并不影响最终模型的性能。

方法3:减小 Batch-Size

如果设置过虚拟内存并修改过参数,到这就是训练集单张非常庞大或 Batch-Size 过大,建议是直接修改 yolo 训练时的 batch-size 参数(YOLOv5 默认是16):

Terminal window
python train.py --batch-size 8

Footnotes#

  1. UserWarning: Distutils was imported before Setuptools.

  2. YOLO系列——[WinError 1455] 页面文件太小,无法完成操作

  3. Pytorch中num_workers详解

YOLO入门 3 CUDA加速(GPU环境配置)
https://fuwari.vercel.app/posts/人工智能/计算机视觉/yolo入门-3-cuda加速gpu环境配置/
作者
Asuwee
发布于
2022-01-09
许可协议
CC BY-NC-SA 4.0