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。
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 time import multiprocessing as mp import torch import torchvision from 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):passend = time()print("Finish with:{} second, num_workers={}".format(end - start, num_workers))
可以看到,这个服务器24个CPU, 最合适的num_workers值是14
Pytorch dataloader中的num_workers (选择最合适的num_workers值)相关推荐
- pytorch中Dataloader()中的num_workers设置问题
pytorch中Dataloader()中的num_workers设置问题: 如果num_workers的值大于0,要在运行的部分放进__main__()函数里,才不会有错: import numpy ...
- PyTorch训练中Dataset多线程加载数据,比Dataloader里设置多个workers还要快
PyTorch训练中Dataset多线程加载数据,而不是在DataLoader 背景与需求 现在做深度学习的越来越多人都有用PyTorch,他容易上手,而且API相对TF友好的不要太多.今天就给大家带 ...
- 【PyTorch训练中Dataset多线程加载数据,比Dataloader里设置多个workers还要快】
文章目录 一.引言 二.背景与需求 三.方法的实现 四.代码与数据测试 五.测试结果 5.1.Max elapse 5.2.Multi Load Max elapse 5.3.Min elapse 5 ...
- [PyTorch]——DataLoader Num_workers
前段时间,我在调整yolo系列代码的时候,运行代码后,会提示 win页面太小问题,这种问题的解决办法之一就是通过调整 DataLoader的num_workers值的大小来解决,为了进一步了解num_ ...
- torch Dataloader中的num_workers
参考 torch Dataloader中的num_workers - 云+社区 - 腾讯云 考虑这么一个场景,有海量txt文件,一个个batch读进来,测试一下torch DataLoader的效率如 ...
- 在实际项目中,如何选择合适的机器学习模型?
https://blog.csdn.net/gitchat/article/details/78913235 本文来自作者 chen_h 在 GitChat 上分享 「在实际项目中,如何选择合适的机器 ...
- Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略
Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代).六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类).安装.使用方法(实际问题中如何选择最合适的机器学 ...
- mysql中辅导方式选择_MYSQL中如何选择合适的数据类型
数值,典型代表为 tinyint,int,bigint 浮点/定点,典型代表为 float,double,decimal 以及相关的同义词 字符串,典型代表为 char,varchar 时间日期,典型 ...
- Pytorch.Dataloader 详细深度解读和微修改源代码心得
关于pytorch 的dataloader库,使用pytorch 基本都会用到的一个库 今天遇到了一个问题,我在训练的时候,采用batch_size =2 去训练,最终的loss抖动太大了,看得出来应 ...
最新文章
- 在任天堂Switch上倒贴30块钱“加班”,我一个程序员还觉得很刺激
- 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )
- Python小游戏(消消乐)
- 京东AI研究院何晓冬:将先进的技术和模型落地到产业
- sublime text3 使用SVN插件
- 输入一字符串,统计其中有多少个单词(单词之间用空格分隔)(java)
- 【Flask模板】include标签
- MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法
- Oracle静态数据字典
- 利用 Web Share API 将网页分享到 App(下)
- Kali Linux 安装网易云音乐打不开的解决方法
- mysql 5.6 msvcr100_mysql 5.6.46 安装到winserver2012(x64) 遇到 MSVCR100.dll is missing
- errors potentially fixable with the `--fix` option报错的解决
- Java 高并发之魂
- icepdf 将pdf转换为图片
- 计算机网络口诀,网线水晶头接法顺序图解分享,这个简单口诀记好了(超实用)...
- 手写简易java消息队列
- HTML+CSS大作业:购物商城网页设计与实现——手机主题网站
- 设备管理器的蓝牙设备卸载了,找不到蓝牙
- OBS美颜滤镜插件,美白、瘦脸....
热门文章
- dbpedia知识图谱java_一种基于DBpedia的水务领域概念知识图谱构建方法与流程
- Android开发之那些好用的数据结构与API(二)
- 现代计算机体系结构发明人,cpu的发明人是谁啊?
- 宁波大学计算机非全,宁波大学考研:全日制和非全日制的6大区别,很多人不知道...
- JavaScript Dom编程艺术学习笔记(第4章)
- PT_基本概率公式(减法/加法/乘法/除法(条件概率)/全概率/贝叶斯)@条件概率链式法则@乘法法则
- springframework(九)AOP的advices,中规中矩的使用方式
- 服装店铺装修有哪些窍门?做好这3点,顾客主动上门
- 我的人生就是一次次世界杯串起来的
- [附源码]计算机毕业设计JAVA中学学生学籍管理