【QA】pytorch中的worker如何工作的
目录
- 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
每每轮到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。num_worker
设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮...迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers
的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。如果
num_worker
设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。
参考资料
- https://stackoverflow.com/questions/53998282/how-does-the-number-of-workers-parameter-in-pytorch-dataloader-actually-work
- 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如何工作的相关推荐
- pytorch中DataLoader的num_workers参数详解与设置大小建议
Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的? train_loader = torch.utils.data.Data ...
- Pytorch中Dataloader踩坑:RuntimeError: DataLoader worker (pid(s) 6700, 10620) exited unexpectedly
Pytorch中Dataloader踩坑 环境: 问题背景: 观察报错信息进行分析 根据分析进行修改尝试 总结 环境: 系统:windows10 Pytorch版本:1.5.1+cu101 问题背景: ...
- gpu处理信号_在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练
先进的深度学习模型参数正以指数级速度增长:去年的GPT-2有大约7.5亿个参数,今年的GPT-3有1750亿个参数.虽然GPT是一个比较极端的例子但是各种SOTA模型正在推动越来越大的模型进入生产应用 ...
- 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型
作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...
- 实践指南 | 用PyTea检测 PyTorch 中的张量形状错误
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨陈萍.泽南 来源丨机器之心 编辑丨极市平台 导读 韩国首尔大学 ...
- 如何利用PyTorch中的Moco-V2减少计算约束
介绍 SimCLR论文(http://cse.iitkgp.ac.in/~arastogi/papers/simclr.pdf)解释了这个框架如何从更大的模型和更大的批处理中获益,并且如果有足够的计算 ...
- PyTorch中的数据输入和预处理
文章目录 PyTorch中的数据输入和预处理 数据载入类 映射类型的数据集 torchvision工具包的使用 可迭代类型的数据集 总结 PyTorch中的数据输入和预处理 数据载入类 在使用PyTo ...
- python中tolist_高效的张量操作 Pytorch中就占5种
PyTorch是一个基于Python的科学包,用于使用一种称为张量的特殊数据类型执行高级操作. 虽然也有其他方式可以实现相同的效果,但今天分享的这5个操作更加方便高效,值得一试. 什么是张量? 张量是 ...
- 【深度学习】在PyTorch中构建高效的自定义数据集
文章来源于磐创AI,作者磐创AI 学习Dataset类的来龙去脉,使用干净的代码结构,同时最大限度地减少在训练期间管理大量数据的麻烦. 神经网络训练在数据管理上可能很难做到"大规模" ...
最新文章
- 高质量C++/C编程指南(林锐)
- 小米空调来了,意外的是还一起来了一个马桶盖
- Leetcode贪心 验证回文字符串
- 热血街头Java,下载_我爱法语 V3.01 多国语言版_6z6z下载站
- 图像模糊处理(信息学奥赛一本通-T1128)
- java程序中单方法接口通常是,Android面试题1--Java基础之线程(持续更新)
- 这位程序员就这样被征服了......
- 每日学习之 2016.07.27
- matlab循环取出矩阵的某一行并标示上A1 A2 A3
- 【svn】svn分支(branch)如何同步主干(trunk)的代码?
- 第三届泰迪杯全国大学生数据挖掘竞赛通知
- linux设置ipsan_linux挂载ipsan服务器
- Altium20版本快速批量修改Comment使之与Value相同
- 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
- 滴滴章文嵩分享大数据在城市智慧交通领域探索实践
- 应届毕业生年薪50W,你敢相信吗?
- 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)
- 换电脑后如何快速同步原先设备上vscode的插件
- XiaoHu日志 6/29~7/30
- 去除WinRAR 5.01(32位) NAG窗口
热门文章
- java反射的优化_请问Java反射的性能为什么比直接调用慢一个数量级左右?
- 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...
- C++书籍笔记目录汇总【目前1本读书笔记(持续更新中……)】
- Oracle buffer状态深入剖析
- spring boot参数为日期的查询
- Spring Boot实现简单的用户权限管理(超详细版)
- 中科大量子计算机重大突破,中国科大在量子计算研究中获重大突破
- acer p245 linux换win7,宏碁Acer笔记本预装Win8改Win7设置教程
- go语言用html桌面,Go语言实现简单的一个静态WEB服务器
- [实验教程]网工都要会的IPv6 基础配置