位置: IT常识 - 正文

Pytorch DataLoader中的num_workers (选择最合适的num_workers值)

编辑:rootadmin
Pytorch DataLoader中的num_workers (选择最合适的num_workers值) 一、概念

推荐整理分享Pytorch DataLoader中的num_workers (选择最合适的num_workers值),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

num_workers是Dataloader的概念,默认值是0。是告诉DataLoader实例要使用多少个子进程进行数据加载(和CPU有关,和GPU无关) 如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度慢。

当num_worker不为0时,每轮到dataloader加载数据时,dataloader一次性创建num_worker个worker,并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。

Pytorch DataLoader中的num_workers (选择最合适的num_workers值)

num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮…迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。

num_worker小了的情况,主进程采集完最后一个worker的batch。此时需要回去采集第一个worker产生的第二个batch。如果该worker此时没有采集完,主线程会卡在这里等。(这种情况出现在,num_works数量少或者batchsize 比较小,显卡很快就计算完了,CPU对GPU供不应求。)

即,num_workers的值和模型训练快慢有关,和训练出的模型的performance无关

Detectron2的num_workers默认是4

二、选择最合适的num_workers值

最合适的num_works值与数据集有关 最好是跑代码之前先用这段script跑一下,选择最合适的num_workers值

from time import timeimport multiprocessing as mpimport torchimport torchvisionfrom torchvision import transformstransform = transforms.Compose([ torchvision.transforms.ToTensor(), torchvision.transforms.Normalize((0.1307,), (0.3081,))])trainset = torchvision.datasets.MNIST( root='dataset/', train=True, #如果为True,从 training.pt 创建数据,否则从 test.pt 创建数据。 download=True, #如果为true,则从 Internet 下载数据集并将其放在根目录中。 如果已下载数据集,则不会再次下载。 transform=transform)print(f"num of CPU: {mp.cpu_count()}")for num_workers in range(2, mp.cpu_count(), 2): train_loader = torch.utils.data.DataLoader(trainset, shuffle=True, num_workers=num_workers, batch_size=64, pin_memory=True) start = time() for epoch in range(1, 3): for i, data in enumerate(train_loader, 0): pass end = time() print("Finish with:{} second, num_workers={}".format(end - start, num_workers))

可以看到,这个服务器24个CPU, 最合适的num_workers值是14

三、可能出现的问题

linux系统中可以使用多个子进程加载数据,windows系统里是不可以的,可以发现报错时产生在DataLoader文件中的。我们找到自己调用DataLoader的文件中num_workers的设置,设置为0或者采用默认为0的设置。

本文链接地址:https://www.jiuchutong.com/zhishi/289634.html 转载请保留说明!

上一篇:苏格兰高地上的欧亚红松鼠,苏格兰 (© Scotland: The Big Picture/Minden Pictures)(苏格兰高地什么意思)

下一篇:威尼斯海滩滑板公园鸟瞰图,洛杉矶 (© Ingus Kruklitis/Getty Images)(威尼斯海滩滑板场)

  • 微信怎么看附近的人(微信怎么看附近的小程序)

    微信怎么看附近的人(微信怎么看附近的小程序)

  • 亚马逊开店如何操作(亚马逊开店如何注销)

    亚马逊开店如何操作(亚马逊开店如何注销)

  • hdmimhl是什么意思(hdmi表示什么意思)

    hdmimhl是什么意思(hdmi表示什么意思)

  • 微信读书属于阅文集团吗(微信读书是谁开发的)

    微信读书属于阅文集团吗(微信读书是谁开发的)

  • 快手作品怎样弄仅好友观看(快手作品怎样弄到自己微信上)

    快手作品怎样弄仅好友观看(快手作品怎样弄到自己微信上)

  • 2015052是什么型号(20150501是什么星座)

    2015052是什么型号(20150501是什么星座)

  • 亲情守护的功能是什么(亲情守护功能关了网后还能用吗)

    亲情守护的功能是什么(亲情守护功能关了网后还能用吗)

  • 手机时不时的震动一下怎么回事(手机时不时的震动是怎么回事)

    手机时不时的震动一下怎么回事(手机时不时的震动是怎么回事)

  • qq礼物墙有浏览记录吗(qq礼物墙的礼物怎么不见了)

    qq礼物墙有浏览记录吗(qq礼物墙的礼物怎么不见了)

  • 惠普3630打印机加墨了为什么还是显示没墨(惠普3630打印机故障灯大全图解)

    惠普3630打印机加墨了为什么还是显示没墨(惠普3630打印机故障灯大全图解)

  • 为什么抖音没美颜效果(抖音为什么没有美颜了)

    为什么抖音没美颜效果(抖音为什么没有美颜了)

  • promax是双卡吗(12promax是双卡吗)

    promax是双卡吗(12promax是双卡吗)

  • 手机掉厕所了怎么去除异味

    手机掉厕所了怎么去除异味

  • 手机上出现电话hd是什么意思(手机上出现电话加叉号小米手机能用吗)

    手机上出现电话hd是什么意思(手机上出现电话加叉号小米手机能用吗)

  • 苹果手机除尘模式在哪里(苹果手机除尘模式怎么开)

    苹果手机除尘模式在哪里(苹果手机除尘模式怎么开)

  • 微信设置延迟到账怎么把钱撤回来(微信设置延迟到账扫码也延迟到账吗)

    微信设置延迟到账怎么把钱撤回来(微信设置延迟到账扫码也延迟到账吗)

  • 抖音评论别人怎么看不见(抖音评论别人怎么删除掉)

    抖音评论别人怎么看不见(抖音评论别人怎么删除掉)

  • vivoz3i支不支持快充(vivoz3i手机支持5g吗)

    vivoz3i支不支持快充(vivoz3i手机支持5g吗)

  • 苹果xr是屏幕指纹吗(苹果xr是屏幕指纹锁吗)

    苹果xr是屏幕指纹吗(苹果xr是屏幕指纹锁吗)

  • 怎么解除qq防沉迷

    怎么解除qq防沉迷

  • 怎样设置黑名单号码(怎样设置黑名单来电是关机)

    怎样设置黑名单号码(怎样设置黑名单来电是关机)

  • Pytorch1.7复现PointNet++点云分割(含Open3D可视化)(文末有一个自己做的书缝识别项目代码)(pytorch复制模型)

    Pytorch1.7复现PointNet++点云分割(含Open3D可视化)(文末有一个自己做的书缝识别项目代码)(pytorch复制模型)

  • vue中的render函数(通俗、易懂)(vue render ref)

    vue中的render函数(通俗、易懂)(vue render ref)

  • 详解vue 路由跳转四种方式 (带参数)[转载](vue路由跳转的三种方法)

    详解vue 路由跳转四种方式 (带参数)[转载](vue路由跳转的三种方法)

  • dedecms织梦dede:channel标签里面调用文章列表(织梦百科)

    dedecms织梦dede:channel标签里面调用文章列表(织梦百科)

  • 关联企业间借款利息扣除规定
  • 滑准税是指关税的税率
  • 税收保全措施适用于
  • 企业新成立,何种情况下需要开始记账报税
  • 专票上不小心印上字了,怎么去除
  • 金税四期有什么优势
  • 年末为什么要结转应付现金股利
  • 讲师讲课费标准2019
  • 土地政策补贴
  • 工程预收款如何处理
  • 材料加工计入什么科目
  • 医院的重要性
  • 营改增 贷款服务
  • 土地增值税纳税地点
  • 农产品收购发票上的买价含税吗
  • 收据大写要写整吗
  • 办公低值易耗品的账务处理
  • 投资收益年底结转怎么算
  • 未确认收入的增值税怎么记账
  • 工业企业销售管理制度
  • 专利技术使用权转让属于特许权使用费
  • 收到境外公司服务费
  • 卫生许可证为什么需要两个健康证
  • 基金预算收入核算的内容包括
  • 办理出口退税的流程
  • 对外捐赠的账务处理
  • 免费样品费计入什么科目
  • 自来水公司的水压力是多少
  • deepin如何设置网络
  • macOSCatalina10.15.5正式版值得升级吗 macOSCatalina10.15.5更新了什么
  • php防止网站被攻击怎么办
  • 上个月做无票收入这个月开票,怎么做分录
  • 彻底清理缓存
  • 企业发生的间接费用应先在
  • 所得税减免与纳税的关系
  • 超期未认证的发票怎么处理
  • 政府收购企业的补偿款要交税吗
  • cloa框架
  • 公司投资资金
  • 无票收入怎么计算1%税率
  • css 自定义变量
  • 个人独资企业如何做账
  • php多进程处理大数据
  • 贪吃蛇python小白
  • 多计提费用可以不用以前年度损益调整吗
  • 付报刊费计入什么科目
  • 电信收款收据可以入账吗
  • 蔬菜开票税率是多少
  • 银行托管账户的规定有哪些
  • 小规模当月开普票作废流程
  • 什么叫一般
  • 车辆保险费印花税计税金额含进项税吗
  • 工程预付款入账
  • 发票未到货已入库会计分录 原材料
  • 退差价后退货
  • 搬迁所得
  • 备抵法核算坏账损失
  • win8正版系统
  • Windows Server 2003下DHCP服务器的安装与简单配置图文教程
  • Apple Watch怎么解绑ID
  • windows7字体安装方法
  • win7系统怎么查看
  • win7系统开启vt
  • mac图形界面
  • win8右侧栏设置
  • windows7的显示设置在哪里
  • win10预览版bug
  • linux网络设备有哪些
  • datatable.load
  • unity 移动应用开发
  • textview可以点击吗
  • 遍历目录文件
  • jquery对象可以直接使用dom吗
  • node搭建博客
  • node基础知识
  • android注入so
  • 广东增值税电子普通发票图片
  • 甘肃省税务申报系统
  • 个体工商户地税没有注销有影响吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设