一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%

这篇具有很好参考价值的文章主要介绍了一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%

作者|BBuf

很高兴为大家带来One-YOLOv5的最新进展,在《一个更快的YOLOv5问世,附送全面中文解析教程》发布后收到了很多算法工程师朋友的关注,十分感谢。

不过,可能你也在思考一个问题:虽然OneFlow的兼容性做得很好,可以很方便地移植YOLOv5并使用OneFlow后端来进行训练,但为什么要用OneFlow?能缩短模型开发周期吗?解决了任何痛点吗?本篇文章将尝试回答这几个问题。

我曾经也是一名算法工程师,开发机器也只有两张RTX 3090消费级显卡而已,但实际上大多数由我上线的检测产品也就是靠这1张或者2张RTX 3090完成的。

由于成本问题,很多中小公司没有组一个A100集群或者直接上数十张卡来训练检测模型的实力,所以这个时候在单卡或者2卡上将目标检测模型做快显得尤为重要。模型训练速度提升之后可以降本增效,提高模型生产率。

所以,近期我和实习生小伙伴一起凭借对YOLOv5的性能分析以及几个简单的优化,将单RTX 3090 FP32 YOLOv5s的训练速度提升了近20%对于需要迭代300个Epoch的COCO数据集来说,One-YOLOv5相比Ultralytics/YOLOv5缩短了11.35个小时的训练时间。

本文将分享我们的所有优化技术,如果你是一名PyTorch和OneFlow的使用者,尤其日常和检测模型打交道但资源相对受限,那么本文的优化方法将对你有所帮助。

One-YOLOv5链接:
https://github.com/Oneflow-Inc/one-yolov5

欢迎你给我们在GitHub上点个Star,我们会用更多高质量技术分享来回馈社区。对 One-YOLOv5 感兴趣的小伙伴可以添加bbuf23333进入One-YOLOv5微信交流群。

1

结果展示

我们展示一下分别使用One-YOLOv5以及Ultralytics/YOLOv5在RTX 3090单卡上使用YOLOv5s FP32模型训练COCO数据集的一个Epoch所需的耗时:

一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%

可以看到,在单卡模式下,经过优化后的One-YOLOv5相比Ultralytics/YOLOv5的训练速度提升了20%左右。

然后我们再展示一下2卡DDP模式YOLOv5s FP32模型训练COCO数据集一个Epoch所需的耗时:

一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%

在DDP模式下,One-YOLOv5的性能依然领先,但还需要进一步,猜测可能是通信部分的开销比较大,后续我们会再研究一下。

2

 优化手段

我们深度分析了PyTorch的YOLOv5的执行序列,发现当前YOLOv5主要存在3个优化点。

第一,对于Upsample算子的改进,由于YOLOv5使用上采样是规整的最近邻2倍插值,所以我们可以实现一个特殊Kernel降低计算量并提升带宽。

第二,在YOLOv5中存在一个滑动更新模型参数的操作,这个操作启动了很多碎的CUDA Kernel,而每个CUDA Kernel的执行时间都非常短,所以启动开销不能忽略。我们使用水平并行CUDA Kernel的方式(MultiTensor)对其完成了优化,基于这个优化,One-YOLOv5获得了9%的加速。

第三,通过对YOLOv5nsys执行序列的观察发现,在ComputeLoss部分出现的bbox_iou是整个Loss计算部分的比较大的瓶颈,我们在bbox_iou函数部分完成了多个垂直的KernelFuse,使得它的开销从最初的3.xms降低到了几百个us。接下来将分别详细阐述文章来源地址https://www.toymoban.com/news/detail-451400.html

到了这里,关于一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • yolov5s模型剪枝详细过程(v6.0)

    本文参考github上大神的开源剪枝项目进行学习与分享,具体链接放在文后,希望与大家多多交流! 在官方源码上训练yolov5模型,支持v6.0分支的n/s/m/l模型,我这里使用的是v5s,得到后将项目clone到本机上 cd进入文件夹后,新建runs文件夹,将训练好的模型放入runs/your_train/weigh

    2024年02月03日
    浏览(36)
  • yolov5s-6.0网络模型结构图

    因为在6.0上做的了一些东西,所以将6.0得网络模型画了出来,之前也画过5.0的网络模型,有兴趣的小伙伴可以看下。 yolov5s-5.0网络模型结构图_zhangdaoliang1的博客-CSDN博客_yolov5s模型结构 看了很多yolov5方面的东西,最近需要yolov5得模型结构图,但是网上的最多的是大白老师的,

    2023年04月09日
    浏览(32)
  • 第Y3周:yolov5s.yaml文件解读

    🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊|接辅导、项目定制 ✅本周任务: 将yolov5s网络模型中第4层的C3*2修改为C3*1,第6层的C3*3修改为C3*2。 简单介绍: YOLOv5配置了4种不同大小的网络模型,分别是 YOLOv5s 、 YOLOv5m 、 YOLOv5l 、 YOLOv5x ,其中 YO

    2024年02月08日
    浏览(31)
  • YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

    在YOLOv5中网络结构采用 yaml 作为配置文件,之前我们也介绍过,YOLOv5配置了4种不同大小的网络模型,分别是 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x ,这几个模型的结构基本一样, 不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数 。 就和我们买衣服的尺码大小排序一样,

    2023年04月16日
    浏览(43)
  • YOLOv5源码中的参数超详细解析(2)— 配置文件yolov5s.yaml(包括源码+网络结构图)

    前言: Hello大家好,我是小哥谈。 配置文件yolov5s.yaml在YOLOv5模型训练过程中发挥着至关重要的作用,属于初学者必知必会的文件!在YOLOv5-6.0版本源码中,配置了5种不同大小的网络模型,分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中YOLOv5n是网络深度和宽度最小但检测速度

    2024年02月08日
    浏览(41)
  • 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

    官方YOLOv7 项目地址:https://github.com/WongKinYiu/yolov7 如果想设置早停机制,可以参考这个链接:yolov7自动停止(设置patience)且输出最优模型时的PR图(test best.py) 学习 train.py 中的参数含义,可参考手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二) 学习 detect.py 中的参数含

    2023年04月18日
    浏览(41)
  • 成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统

    梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为Just A Rather Very Intelligent System(只是一个相当聪明的人工智能系统),它可以帮助钢铁侠托尼斯塔克完成各种任务和挑战,包括控制和管理托尼的机甲装备,提供实时情报和

    2024年02月02日
    浏览(38)
  • yolov5训练加速--一个可能忽视的细节(mmdetection也一样),为什么显卡使用率老是为0?

    本文仅讨论节省图片加载时间问题,这里面可能有一些容易忽视的细节。yolov5的训练参数里面有一个--cache,默认是ram,就是把解码后的图片保存在内存中。也可以是disk,就会把解码后的图片保存在硬盘上。  解码后的图片就是numpy数组啦,保存为.npy文件  这里可能有一个问

    2024年02月04日
    浏览(71)
  • NVIDIA GeForce RTX 3090 GPU系列

    NVIDIA GeForce RTX™ 3090 Ti 和 3090 采用第 2 代 NVIDIA RTX 架构 – NVIDIA Ampere 架构。该系列产品搭载专用的第 2 代 RT Core ,第 3代 Tensor Core、全新的 SM 多单元流处理器以及令人惊叹的 24GB G6X 显存,所有特性都旨在全力为游戏玩家和创作者提供震撼的体验。 GeForce RTX 3090 Ti和GeForce RTX

    2024年01月19日
    浏览(44)
  • RTX3090 ubuntu20.04 多版本cuda共存

    背景:已安装cuda10.1;代码在安装的nvidia-tensorflow1.15上运行报错。 目标:安装cuda10.0并可与cuda10.1切换使用。 结果:cuda可以共存多个版本,修改环境变量指向欲使用版本cuda的相关路径即可;使用cuda10.0代码还是跑不了,原因在于30显卡要安装cuda11或以上;还是跑不了,原因在

    2023年04月24日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包