目录

  • Question
  • Answer
  • 参考资料

博客地址:https://www.cnblogs.com/hesse-summer/,欢迎转载,转载请说明出处。

Question

一直很迷,
在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的?
如果将num_worker设为0(也是默认值),就没有worker了吗?

worker的使用场景:

from torch.utils.data import DataLoadertrain_loader = DataLoader(dataset=train_data, batch_size=train_bs, shuffle=True, num_worker=4)valid_loader = DataLoader(dataset=valid_data, batch_size=valid_bs, num_worker=4)

Answer

  1. 每每轮到dataloader加载数据时:

    for epoch in range(start_epoch, end_epoch):for i, data in enumerate(trainloader):

    dataloader一次性创建num_worker个worker,(也可以说dataloader一次性创建num_worker个工作进程,worker也是普通的工作进程),

    并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。

    然后,dataloader从RAM中找本轮迭代要用的batch,如果找到了,就使用。如果没找到,就要num_worker个worker继续加载batch到内存,直到dataloader在RAM中找到目标batch。一般情况下都是能找到的,因为batch_sampler指定batch时当然优先指定本轮要用的batch。

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

  3. 如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。

参考资料

  1. https://stackoverflow.com/questions/53998282/how-does-the-number-of-workers-parameter-in-pytorch-dataloader-actually-work
  2. https://discuss.pytorch.org/t/guidelines-for-assigning-num-workers-to-dataloader/813

转载于:https://www.cnblogs.com/hesse-summer/p/11343870.html

【QA】pytorch中的worker如何工作的相关推荐

  1. pytorch中DataLoader的num_workers参数详解与设置大小建议

    Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的? train_loader = torch.utils.data.Data ...

  2. Pytorch中Dataloader踩坑:RuntimeError: DataLoader worker (pid(s) 6700, 10620) exited unexpectedly

    Pytorch中Dataloader踩坑 环境: 问题背景: 观察报错信息进行分析 根据分析进行修改尝试 总结 环境: 系统:windows10 Pytorch版本:1.5.1+cu101 问题背景: ...

  3. gpu处理信号_在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练

    先进的深度学习模型参数正以指数级速度增长:去年的GPT-2有大约7.5亿个参数,今年的GPT-3有1750亿个参数.虽然GPT是一个比较极端的例子但是各种SOTA模型正在推动越来越大的模型进入生产应用 ...

  4. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  5. 实践指南 | 用PyTea检测 PyTorch 中的张量形状错误

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨陈萍.泽南 来源丨机器之心 编辑丨极市平台 导读 韩国首尔大学 ...

  6. 如何利用PyTorch中的Moco-V2减少计算约束

    介绍 SimCLR论文(http://cse.iitkgp.ac.in/~arastogi/papers/simclr.pdf)解释了这个框架如何从更大的模型和更大的批处理中获益,并且如果有足够的计算 ...

  7. PyTorch中的数据输入和预处理

    文章目录 PyTorch中的数据输入和预处理 数据载入类 映射类型的数据集 torchvision工具包的使用 可迭代类型的数据集 总结 PyTorch中的数据输入和预处理 数据载入类 在使用PyTo ...

  8. python中tolist_高效的张量操作 Pytorch中就占5种

    PyTorch是一个基于Python的科学包,用于使用一种称为张量的特殊数据类型执行高级操作. 虽然也有其他方式可以实现相同的效果,但今天分享的这5个操作更加方便高效,值得一试. 什么是张量? 张量是 ...

  9. 【深度学习】在PyTorch中构建高效的自定义数据集

    文章来源于磐创AI,作者磐创AI 学习Dataset类的来龙去脉,使用干净的代码结构,同时最大限度地减少在训练期间管理大量数据的麻烦. 神经网络训练在数据管理上可能很难做到"大规模" ...

最新文章

  1. 高质量C++/C编程指南(林锐)
  2. 小米空调来了,意外的是还一起来了一个马桶盖
  3. Leetcode贪心 验证回文字符串
  4. 热血街头Java,下载_我爱法语 V3.01 多国语言版_6z6z下载站
  5. 图像模糊处理(信息学奥赛一本通-T1128)
  6. java程序中单方法接口通常是,Android面试题1--Java基础之线程(持续更新)
  7. 这位程序员就这样被征服了......
  8. 每日学习之 2016.07.27
  9. matlab循环取出矩阵的某一行并标示上A1 A2 A3
  10. 【svn】svn分支(branch)如何同步主干(trunk)的代码?
  11. 第三届泰迪杯全国大学生数据挖掘竞赛通知
  12. linux设置ipsan_linux挂载ipsan服务器
  13. Altium20版本快速批量修改Comment使之与Value相同
  14. 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
  15. 滴滴章文嵩分享大数据在城市智慧交通领域探索实践
  16. 应届毕业生年薪50W,你敢相信吗?
  17. 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)
  18. 换电脑后如何快速同步原先设备上vscode的插件
  19. XiaoHu日志 6/29~7/30
  20. 去除WinRAR 5.01(32位) NAG窗口

热门文章

  1. java反射的优化_请问Java反射的性能为什么比直接调用慢一个数量级左右?
  2. 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...
  3. C++书籍笔记目录汇总【目前1本读书笔记(持续更新中……)】
  4. Oracle buffer状态深入剖析
  5. spring boot参数为日期的查询
  6. Spring Boot实现简单的用户权限管理(超详细版)
  7. 中科大量子计算机重大突破,中国科大在量子计算研究中获重大突破
  8. acer p245 linux换win7,宏碁Acer笔记本预装Win8改Win7设置教程
  9. go语言用html桌面,Go语言实现简单的一个静态WEB服务器
  10. [实验教程]网工都要会的IPv6 基础配置