yolov5训练时参数workers与batch-size的深入理解

作者:flamebox 时间:2021-08-01 04:50:20 

yolov5训练命令

python .\train.py --data my.yaml --workers 8 --batch-size 32 --epochs 100

yolov5的训练很简单,下载好仓库,装好依赖后,只需自定义一下data目录中的yaml文件就可以了。这里我使用自定义的my.yaml文件,里面就是定义数据集位置和训练种类数和名字。

workers和batch-size参数的理解

一般训练主要需要调整的参数是这两个:

workers

指数据装载时cpu所使用的线程数,默认为8。代码解释如下

parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)')

一般默使用8的话,会报错~~。原因是爆系统内存,除了物理内存外,需要调整系统的虚拟内存。训练时主要看已提交哪里的实际值是否会超过最大值,超过了不是强退程序就是报错。

yolov5训练时参数workers与batch-size的深入理解

所以需要根据实际情况分配系统虚拟内存(python执行程序所在的盘)的最大值

yolov5训练时参数workers与batch-size的深入理解

batch-size

就是一次往GPU哪里塞多少张图片了。决定了显存占用大小,默认是16。

parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch')

训练时显存占用越大当然效果越好,但如果爆显存,也是会无法训练的。我使用–batch-size 32时,显存差不多能利用完。

yolov5训练时参数workers与batch-size的深入理解

两个参数的调优

对于workers,并不是越大越好,太大时gpu其实处理不过来,训练速度一样,但虚拟内存(磁盘空间)会成倍占用。

yolov5训练时参数workers与batch-size的深入理解

workers为4时的内存占用

yolov5训练时参数workers与batch-size的深入理解

workers为8时的内存占用

我的显卡是rtx3050,实际使用中上到4以上就差别不大了,gpu完全吃满了。但是如果设置得太小,gpu会跑不满。比如当workers=1时,显卡功耗只得72W,速度慢了一半;workers=4时,显卡功耗能上到120+w,完全榨干了显卡的算力。所以需要根据你实际的算力调整这个参数。

yolov5训练时参数workers与batch-size的深入理解

2. 对于batch-size,有点玄学。理论是能尽量跑满显存为佳,但实际测试下来,发现当为8的倍数时效率更高一点。就是32时的训练效率会比34的高一点,这里就不太清楚原理是什么了,实际操作下来是这样。

来源:https://blog.csdn.net/flamebox/article/details/123011129

标签:yolov5,workers,batch-size
0
投稿

猜你喜欢

  • Python实现连点器的示例代码

    2023-04-17 00:11:29
  • InnoDB解决幻读的方法详解

    2024-01-15 13:50:53
  • 利用python在大量数据文件下删除某一行的例子

    2023-08-24 09:15:22
  • Python实现为图像添加下雪特效

    2021-07-10 11:28:45
  • Django小白教程之Django用户注册与登录

    2022-01-14 10:30:06
  • Python实现Tab自动补全和历史命令管理的方法

    2022-06-16 10:12:46
  • Javascript实现的鼠标经过时播放声音

    2010-05-18 20:03:00
  • python中numpy包使用教程之数组和相关操作详解

    2022-10-26 19:18:40
  • python中__slots__用法实例

    2022-05-29 17:49:22
  • Go语言正则表达式的使用详解

    2024-02-04 11:23:42
  • Python的matplotlib绘图如何修改背景颜色的实现

    2023-10-05 08:12:43
  • Python操作mongodb数据库的方法详解

    2024-01-16 03:08:39
  • 浅析JSON序列化与反序列化

    2024-03-22 12:50:05
  • MySQL 的模块不能安装的解决方法

    2024-01-29 13:15:36
  • SQLserver 实现分组统计查询(按月、小时分组)

    2024-01-24 12:52:15
  • Oracle数据库分析函数用法

    2024-01-27 15:36:46
  • Python标准库学习之psutil内存详解

    2023-09-14 21:33:35
  • PyQT5 QTableView显示绑定数据的实例详解

    2023-09-09 19:40:40
  • Python中函数的参数定义和可变参数用法实例分析

    2023-10-04 00:26:30
  • 关于select元素的两个小问题

    2008-12-25 13:41:00
  • asp之家 网络编程 m.aspxhome.com