yolov5训练加速

推荐博客:https://blog.csdn.net/ogebgvictor/article/details/129784503,关于yolov5训练提前resize,打开cache,batch size的设置等做了很多对比实验。
在这里插入图片描述

问题记录及解决

1、使用ddp训练,生成标签的cache报错,等待时间过长。
方法:先使用dp训练,生成标签的cache,停掉再使用ddp方式训练。
2、

[E ProcessGroupNCC
L.cpp:828] [Rank 6] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=438621, OpType=BROADCAST, Timeout(ms)=1800000) ran for 1806330 milliseconds before timing out.
[E ProcessGroupNCCL.cpp:828] [Rank 4] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=438621, OpType=BROADCAST, Timeout(ms)=1800000) ran for 180633
7 milliseconds before timing out.

参考:https://stackoverflow.com/questions/69693950/error-some-nccl-operations-have-failed-or-timed-out
修改:

# dist.init_process_group(backend='nccl' if dist.is_nccl_available() else 'gloo')torch.distributed.init_process_group(backend='nccl', timeout=datetime.timedelta(seconds=36000))

速度优化

参考:https://blog.csdn.net/weixin_41012399/article/details/133307450?spm=1001.2014.3001.5501
300万张提前resize好的图片,训练11个小时/epoch
方法一:提前resize
参考:https://blog.csdn.net/ogebgvictor/article/details/129784503
https://blog.csdn.net/ogebgvictor/article/details/132529353
这里需要注意,如果你的训练图片都很大,比如分辨率高,或者压缩率低,你都可以根据训练用到的分辨率直接把原图resize一下,保存为jpg格式,直接保存到npy文件中(具体见续篇),比如你训练的分辨率用的是640(yolov5默认就是640),那你就把图片resize到640(保持宽高比例)就行了,这样你的图片就变小了,那读图时间自然就少了。并且有可能变小之后你的内存装的下了,那速度就起飞了!
此处修正:
1.保存为640jpg会对图片有一定损失,可以保存为640分辨率的npy,npy完全无损,但是速度较慢。经过测试,取折中方式,保存为640jpg选择质量100%(默认80%),图片损失对模型训练影响可接受,还可以提高训练速度。

方法二:开启图片缓存
参考:https://blog.csdn.net/ogebgvictor/article/details/129784503
(‘–cache’, type=str, nargs=‘?’, const=‘ram’, help=‘image --cache ram/disk’)
在这里插入图片描述图片的缓存文件是对应npy,占用的空间是原始图片的10倍以上。可以选择缓存到系统RAM空间,也可以缓存到硬盘。我这里数据量太大,系统RAM空间不够。可以选择缓存到disk。
开启缓存的适用情况:
如果训练图片总量不大,或者服务器内存超高,即完全可以把解码后的图片放内存里,那就充分利用,直接加上–cache参数完事。如果读图片的时间不长,它的耗时只占总时间的很少一部分,没什么优化意义那就不用管它。
参照上述博客的结论,如果resize之后再用缓存,那速度更是快的飞起。我这里系统内存不够,只能缓存到硬盘,但是我这里硬盘读取速度不快,需要测试一下效果。
在这里插入图片描述
在这里插入图片描述
方法二:查看内存和gpu使用情况。

htop
nvidia-smi

在这里插入图片描述
在这里插入图片描述

显存和cpu使用率都不高,参考:https://blog.csdn.net/flamebox/article/details/123011129
修改workers和batchsize,提高cpu和gpu使用率。
目前的workers是8,bs是32.
修改workers=16,bs=64。提高cpu和gpu使用率,但是会使用更多的内存,需要关注系统内存使用情况,目前是167G/252G。查看cpu使用情况,以及训练速度。

读图和训练是并行进行的,需要看一下瓶颈在cpu读图还是gpu训练,如果两个都不是瓶颈,可以增加gpu和cpu使用率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/130090.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react学习(三——实战项目)

创建 npm init vite小知识 "scripts": {"dev": "vite --host --port 3002 --open", //--host会在终端显示IP,--port 3002把显示端口改为3002,--open会在启动后打开链接"build": "tsc && vite bui…

大数据Doris(七):Doris安装与部署规划

文章目录 Doris安装与部署规划 一、软硬件需求 二、​​​​​​​资源规划

软件公司的项目管理软件选择指南

我们经常在项目推进中经常遇到各种各样的问题,最常见的是因团队工作效率低而无法在截止日期之前按时完成工作。但是如果能合理使用项目管理软件,可以有效监控项目进程,提高工作效率,从而保证按时完成任务。那么软件公司适合什么项…

猫头虎博主第六期赠书活动:《手机摄影短视频和后期从小白到高手》

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

LLaVa大模型关键技术及在线演示

LLaVA,一种新的大型多模态模型,称为“大型语言和视觉助手”,旨在开发一种通用视觉助手,可以遵循语言和图像指令来完成各种现实世界的任务。 这个想法是将 GPT-4 等大型语言模型 (LLM) 的强大功能与 CLIP 等视觉编码器相结合&#…

「新房家装经验」客厅电视高度标准尺寸及客厅电视机买多大尺寸合适?

客厅电视悬挂高度标准尺寸是多少? 客厅电视悬挂高度通常在90~120厘米之间,电视挂墙高度也可以根据个人的喜好和实际情况来调整,但通常不宜过高,以坐在沙发上观看时眼睛能够平视到电视中心点或者中心稍微往下一点的位置为适宜。 客…

springboot-配置文件优先级

官方文档 https://docs.spring.io/spring-boot/docs/2.7.16/reference/htmlsingle/#features.external-config Spring Boot允许外部化配置,这样就可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源,包括Java属性文件、YAML文件、环境…

【uniapp】自定义导航栏时,设置安全距离,适配不同机型

1、在pages.json中,给对应的页面设置自定义导航栏样式 {"path": "pages/index/index","style": {"navigationStyle": "custom","navigationBarTextStyle": "white","navigationBarTitl…

MySQL中的 增 删 查 改(CRUD)

目录 新增 insert into 表名 value(数据,数据),.......; insert into 表名(列1,列2.....) value(数据,数据),.......; datatime 类型的数据如何插入? 查询 select * from 表名…

深度学习笔记之优化算法(六)RMSprop算法的简单认识

深度学习笔记之优化算法——RMSProp算法的简单认识 引言回顾:AdaGrad算法AdaGrad算法与动量法的优化方式区别AdaGrad算法的缺陷 RMProp算法关于AdaGrad问题的优化方式RMSProp的算法过程描述 RMSProp示例代码 引言 上一节对 AdaGrad \text{AdaGrad} AdaGrad算法进行…

Avalonia环境搭建

1.开发文档 开发文档, GitHub项目地址 https://github.com/avaloniaui/avalonia 2.VS2022 及扩展安装 建议使用vs2022最新版本下载并安装扩展Avalonia for Visual Studio 2022 3.安装Avalonia UI模板 dotnet new install Avalonia.Templates 查看安装版本 dot…

增强现实抬头显示AR-HUD

增强现实抬头显示(AR-HUD)可以将当前车身状态、障碍物提醒等信息3D投影在前挡风玻璃上,并通过自研的AR-Creator算法,融合实际道路场景进行导航,使驾驶员无需低头即可了解车辆实时行驶状况。结合DMS系统,可以…