关于yolov5训练大量数据存在的问题记录

2023-11-17

相关配置环境

拉取官方最新的镜像(docker pull ultralytics/yolov5)
以及代码(git clone https://github.com/ultralytics/yolov5)

torch 1.10.1+cu102 CUDA:0 (Tesla V100-PCIE-32GB, 32510MiB)


相关问题

我是自定义数据集一共多达4.5w张,图像大小大多为3M(4000*3000)甚至更高。因为使用的是V100 32G显卡,本着batch_size越大训练越快的原则直接把batch_size设置为最大。

python train.py --batch-size 320 --data data/test.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

1、batch_size设置最大后发现,训练特别慢,且显卡使用率长时间为0,偶尔会有使用率。结合打印日志发现,当完成一部分训练进行百分比展示时显卡使用率也会有。因此判断显卡未使用时是在进行io操作,在读取缓存数据,因为batch_size设置过大所以缓存特慢,当缓存完成才会进行训练,所以显存也会偶尔有使用率。(百度查询查到别人的分析:是exchange存取数据的问题,那个应该是个差不多网络存储的服务器,由于本身数据体积就比较大,程序在跑的时候数据读写速度跟不上,gpu就一直在等数据读进来)确定完原因开始在ylov5官方lssuse查找相关解决方法,作者提供了训练变快的方法

yolov5作者提供
自己也在网上找了一些训练加速的方法:

  • –workers 线程数量默认8(改成0或者增加)
  • –noval 每个epoch不进行评估
  • –cache 使用缓存训练
  • 使用DDP (python -m torch.distributed.launch --nproc_per_node 2 train.py)

2、最开始我一直在workers这个参数以及DDP进行测试,发现并没有提升太多,还是很慢。后面就把这四点进行结合,在DDP上进行缓存训练、不评估进行多线程。问题又来了,因为数据量过大,在DDP上进行RAM缓存时时间会超时NCCL设置的1800000(半个小时),保存本地disk缓存也是一样。自己排查觉得两部分解决这个问题:1.修改NCCL超时时间 2.加快缓存速度从而减少时间。因为需要快速训练所以并没有去解决

python -m torch.distributed.run --nproc_per_node 2 train.py --batch-size 320 --data data/test.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt --noval --workers 32 --cache

3、当DDP行不通,就想着使用最原始的python train.py的方式去使用缓存训练,没想到一试竟然成功了。RAM和disk都可以,ram缓存到内存需要有足够大的虚拟内存也就是启动docker镜像的时候加上–shm-size 256g这个参数,disk缓存本地本地有足够大的存储即可。

python train.py --batch-size -1 --data data/test.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt --workers 16 --cache disk
4.5w数据 309轮 训练时间:02:10

调试技巧

  1. 训练过程中发现batch-size并不是设置越大越快,测试发现batch-size=320和batch-size=128是一样的训练速度。 (来源网络:对于batch-size,有点玄学。理论是能尽量跑满显存为佳,但实际测试下来,发现当为8的倍数时效率更高一点。就是32时的训练效率会比34的高一点,这里就不太清楚原理是什么了,实际操作下来是这样。)
  2. workers也是一样,在镜像中workers不能设置过高会导致shm不够。我配置了–shm-size=256g能勉强最高使用32。测试发现使用32时算法并不进行卡着不执行,16会比8快三分之一左右
  3. 使用cache进行缓存训练是比一边加载一边训练快,所以不管数据多少都可以使用cache缓存循环会更快
  4. DDP分布式训练,在NCCL不超时的情况下理论上会更快(待测试)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于yolov5训练大量数据存在的问题记录 的相关文章

  • 如何恢复tensorflow inceptions检查点文件(ckpt)?

    I have inception resnet v2 2016 08 30 ckpt文件是预先训练的初始模型 我想使用恢复这个模型 saver restore sess ckpt filename 但为此 我将需要编写训练该模型时使用的变量
  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • 验证码图片实现

    使用验证码进行验证 自动生成验证码 后台实现 package common makeCertPic import java awt Color import java awt Font import java awt Graphics im
  • 第15课:生活中的命令模式——大闸蟹,走起

    用程序来模拟生活 从剧情中思考命令模式 命令模式 命令模式的模型抽象 代码框架 类图 模型说明 实战应用 应用场景 故事剧情 David 听说阿里开了一家实体店 盒马鲜生 特别火爆 明天就周末了 我们一起去吃大闸蟹吧 Tony 吃货 真是味
  • 前端三剑客---HTML&CSS&JavaScript

    HTML CSS JavaScript 1 HTML 1 1 介绍 1 2 快速入门 1 3 基础标签 1 3 1 标题标签 1 3 2 hr标签 1 3 3 字体标签 1 3 4 换行标签 1 3 5 段落标签 1 3 6 加粗 斜体 下
  • diagnose-tools 编译报错

    在 Ubuntu 20 04 4 LTS 环境中 编译diagnose tools 执行make deps时报错 checking whether gcc m32 makes executables we can run no config
  • ValueError: Buffer dtype mismatch, expected ‘unsigned char‘ but got ‘long‘

    在使用pydensecrf进行densecrf时出现ValueError def dense crf img probs n labels 2 h probs shape 0 w probs shape 1 probs np expand
  • NBA GLOSSARY

    NBA 全称 National Basketball Association 美国国家篮球协会 DRAFT draft dr ft n 选秀 R1 Round one 第一轮 St Vincent St Mary HS OH Saint V
  • electron-builder打包过程中报错——网络下载篇(转)

    在electron使用electron builder打包过程中需要用到几个github上的包 但是由于网络原因 会科学上网的同学基本不用看了 下载不下来 导致出错 一 electron v8 2 0 win32 x64 zip 如下图 导
  • MCP4725介绍和STM32模拟IC2驱动

    一 MCP4725 简单总结为下面几个特点 1路DAC输出 12位分辨率 I2C 接口 标准 快速 高速支持 供电电压2 7 5 5 内部EEPROM存储设置 I2C地址可配置 A0 A1 A2内置 默认为 00 二 硬件设计 MCP472
  • torch 测试GPU能否正常使用

    运行程序 import torch print torch cuda is available num gpu 1 Decide which device we want to run on device torch device cuda
  • 介绍D3DPOOL和Lock

    介绍D3DPOOL和Lock 分类 DirectX 2013 02 28 00 21 322人阅读 评论 0 收藏 举报 D3D RUTIME的内存类型 分为3种 VIDEO MEMORY VM AGP MEMORY AM 和SYSTEM
  • 最能感动女人的十大瞬间

    拉着手在街上闲逛 忽然之间 他将她拽停 伸手轻轻地将眼睑下的一根睫毛拨开 她顿感幸福 拨走睫毛不过是弹指之间的小事 却充分说明他对她的注意力100 集中 要不是他喜欢仔细地偷看她 怎能发现刚跌落的一根细小睫毛 没有一个女人 能够抵抗男人如此
  • Java爬虫框架WebMagic的使用总结

    最近 项目做一个公司新闻网站 分为PC 移动端 h5 数据来源是从HSZX与huanqiu2个网站爬取 主要使用Java编写的WebMagic作为爬虫框架 数据分为批量抓取 增量抓取 批量抓当前所有历史数据 增量需要每10分钟定时抓取一次
  • CSS3 弹性盒子(flex、flex-direction属性、flex-wrap属性、align-items属性、align-content属性)详解

    文章目录 flex flex direction 属性 flex wrap 属性 align items 属性 align content 属性的使用 flex 在 CSS3 中给 display 属性增加了新的属性值 flex 如果一个元
  • 关于MFC中使用ShellExecute出现的进程冲突问题

    目录 问题背景 问题分析 问题背景 现在有一个MFC写的界面程序 以及一个外部exe文件 用户通过界面选择文件a MFC将文件a的路径作为参数 调用exe文件生成一个解析文件b 然后MFC再读取这个文件b 为了完成这一目的 就需要在MFC中
  • Airtest IDE 使用方法

    1 assert exists 找到图片则返回图片坐标 否则报错 raise AssertionError 引发断言错误 2 assert not exists 没找到图片则返回None 否则报错 raise AssertionError
  • 项目实战——文档扫描OCR识别

    扫描全能王的实现 maybe 目录 一 文档扫描 1 引入所需要的库 2 图像的读取与预处理 读取图像 图像reszie 图像灰度化 滤波 边缘检测 3 轮廓检测 4 透视与二值变换 二 文字识别 一 文档扫描 文档扫描所实现的功能如下图所
  • 【转载】浅谈蓝牙 Mesh 组网技术

    本文转载自 Eren https www erenship com posts 63c7 html 蓝牙技术联盟官方网址 https www bluetooth com zh cn 蓝牙技术联盟公众号 BluetoothSIG 蓝牙技术联盟
  • BIO与NIO、AIO的区别

    IO的方式通常分为几种 同步阻塞的BIO 同步非阻塞的NIO 异步非阻塞的AIO 一 BIO 在JDK1 4出来之前 我们建立网络连接的时候采用BIO模式 需要先在服务端启动一个ServerSocket 然后在客户端启动Socket来对服务
  • 使用Nuget 安装指定版本package或者更新package到指定版本

    首先打开程序包管理器控制台 工具 Nuget程序包管理器 程序包管理器控制台 打开如下图所示的命令行界面 安装指定版本的Package 例如 EntityFramework 5 0 PM gt Install Package BenchMa
  • 关于yolov5训练大量数据存在的问题记录

    相关配置环境 拉取官方最新的镜像 docker pull ultralytics yolov5 以及代码 git clone https github com ultralytics yolov5 torch 1 10 1 cu102 CU