脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - yolov5训练时参数workers与batch-size的深入理解

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

2022-11-13 10:34flamebox Python

最近再学习YOLOv3与YOLOv5训练数据集的具体步骤,几经波折终于实现了很好的效果,这篇文章主要给大家介绍了关于yolov5训练时参数workers与batch-size的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

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

延伸 · 阅读

精彩推荐
  • PythonPython中的字典到底是有序的吗

    Python中的字典到底是有序的吗

    很多人会问Python中的字典到底是有序的吗,本文就详细的来介绍一下,感兴趣的可以了解一下...

    小博测试成长之路5102022-01-13
  • PythonPython利用ElementTree模块处理XML的方法详解

    Python利用ElementTree模块处理XML的方法详解

    ElementTree是python的XML处理模块,它提供了一个轻量级的对象模,下面这篇文章就来给大家介绍了关于Python利用ElementTree模块处理XML的方法,文中通过示例代码...

    haozlee2022020-12-05
  • Pythonpython读取TXT每行,并存到LIST中的方法

    python读取TXT每行,并存到LIST中的方法

    今天小编就为大家分享一篇python读取TXT每行,并存到LIST中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    宁不凡17172021-04-13
  • Pythonpython redis存入字典序列化存储教程

    python redis存入字典序列化存储教程

    这篇文章主要介绍了python redis存入字典序列化存储教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    chengd7432020-07-16
  • PythonPython中的enum的使用方法

    Python中的enum的使用方法

    这篇文章主要介绍了Python中的enum的使用方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所...

    phac123532022-08-13
  • Pythonpycharm-professional-2020.1下载与激活的教程

    pycharm-professional-2020.1下载与激活的教程

    这篇文章主要介绍了pycharm-professional-2020.1下载与激活的教程,本文分为安装和永久激活两部分内容,需要的朋友可以参考下 ...

    yblackd10962020-09-16
  • Pythonpython 插入Null值数据到Postgresql的操作

    python 插入Null值数据到Postgresql的操作

    这篇文章主要介绍了python 插入Null值数据到Postgresql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    MichaelZhu5732021-09-16
  • Pythonpython实战小游戏之考验记忆力

    python实战小游戏之考验记忆力

    本篇文章介绍了用python编写的曾经风靡的考验记忆力的小游戏,详细介绍了整个思路和过程以及代码,通读本篇对大家的学习或工作具有一定的价值,需要...

    顾木子吖10532022-01-17