pytorch中Dataloader读取数据太慢的问题

news2024/11/25 6:15:29

文章目录

  • pytorch中Dataloader读取数据太慢的问题
    • 1. 方法
    • 2. 方法
    • 3. 解决方法:提取加载数据

pytorch中Dataloader读取数据太慢的问题

数据读取的速度远远大于GPU训练的速度,导致整个训练流程中有大部分时间都在等待数据发送到GPU,在资源管理器中呈现出CUDA使用率周期性波动,且大部分时间都是在等待数据加载。
cuda使用率可能很低或者为0:

在这里插入图片描述

1. 方法

在dataset中,会将数据从磁盘读入内存中,如果启用了dataloader中的pin_memory,就会让数据常驻内存,同时设置num_workers还能实现多进程读取数据,但即使设置了这些,数据加载速度依然没有质的提升。

2. 方法

dataset中的transform是导致性能慢的一个原因,dataset中有个函数为__getitem__,每获取一个数据就会让这个数据过一次transform。

transform = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.4914, 0.4822, 0.4465], [0.5, 0.5, 0.5])
])

如果把__getitem__中的一些操作移到 __init__中。

这样__getitem__直接取索引即可。

3. 解决方法:提取加载数据

编写datast的__init__函数的时候
1)提前加载所有数据到cpu
2)或者提前加载所有数据 直接加载到GPU:这个要求显存够大
3)__get_item__项目尽量少,尽量再1,2步预处理数据中完成。
4)存大图降低存取次数

很好的博客:https://blog.csdn.net/Twilightzsj/article/details/123941780

https://www.cnblogs.com/pprp/p/14199865.html
https://blog.csdn.net/qq_42255269/article/details/127528662

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七年磨一剑!苹果王炸产品Vision Pro诞生,未来已来

这是第一款「不见却可透见」的苹果产品 等了整整七年!2023年6月5日,WWDC23大会上,苹果发布首款头显Vision Pro,Vision Pro 可以算是苹果公司自 2015 年 Apple Watch 首次亮相以来最大的硬件产品发布,或许它会彻底改变数…

【深度学习】BERT变种—百度ERNIE 1.0

ERNIE: Enhanced Representation through Knowledge Integration是百度在2019年4月的时候,基于BERT模型,做的进一步优化,在中文的NLP任务上得到了state-of-the-art的结果。 ERNIE 是百度开创性提出的基于知识增强的持续学习语义理解框架&…

苹果又一黑科技产品 Apple Vision Pro,正式问世!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 在电影《钢铁侠》中,托尼通过简单的手势动作,配合空间中的虚拟界面,成功将贾维斯创造出来。 当时片中的这个镜头,让无数科幻迷为之疯狂&…

pyspark数据输入

学习目标: 现在只需要知道PDD是一个数据集。 【运行实例(1)】: from pyspark import SparkConf, SparkContext # conf:创建对象;Sparkconf:创建入口;setMaster:运行方式&#xff1…

chatgpt赋能python:Python如何输出两个值

Python如何输出两个值 在Python编程中,经常需要输出多个值。下面我们来介绍几种常用的方法。 方法一:使用逗号分隔符 使用逗号分隔符可以在一行代码中输出多个值。例如: a, b 1, 2 print(a, b) # 输出 1 2在输出时,多个值之…

图解未成年人个人信息保护要求(附下载)

未成年人互联网普及率持续提升。据2023年中国互联网络信息中心发布的第51次《中国互联网络发展状况统计报告》数据,2021年我国未成年人互联网普及率达96.8%;截至2022年12月,使用过短视频的青少年群体占比65.6%,未成年人已成网络参…

【Linux:进程间信号】

文章目录 1 生活角度的信号2 技术应用角度的信号3 信号的产生3.1 由系统调用向进程发信号3.1.1 signal3.1.2 kill3.1.3 raise 3.2 由软件条件产生信号3.3 硬件异常产生信号3.4 通过终端按键产生信号3.5 总结思考一下 4 信号的保存4.1信号其他相关常见概念4.2在内核中的表示4.3 …

如何评价 Facebook 发布的数字货币 Libra?

一句话总结:Libra 最大的亮点,在于它是 Facebook 做的。 随着数字货币市场的迅速发展,各类加密货币层出不穷。然而,在这个领域中,Facebook 所推出的 Libra 显得尤为引人关注。那么,Libra 到底有何特点&…

专家助阵!IoTDB X EMQ 智慧工厂主题 Meetup 讲师曝光!

期待已久的智慧工厂主题 Meetup 活动将在 4 天后线下线上同步举办! 天谋科技将联手 EMQ,通过数据基础设施平台的核心技术与实践经验分享,提供流程协同、运营提效、生产质量保障等智能制造目标的可行方案。快来在推文结尾预约直播,…

【大数据工具】Flink集群搭建

Flink 集群安装 1. 单机版 Flink 安装与使用 1、下载 Flink 安装包并上传至服务器 下载 flink-1.10.1-bin-scala_2.11.tgz 并上传至 Hadoop0 /software 下 2、解压 [roothadoop0 software]# tar -zxvf flink-1.10.1-bin-scala_2.11.tgz3、创建快捷方式 [roothadoop0 soft…

100天精通Python(可视化篇)——第90天:Pyecharts可视化神器基础入门

文章目录 专栏导读一、pyecharts 介绍1. 简介2. 版本说明 二、pyecharts 特点三、pyecharts 安装四、基本步骤五、快速开始1. 数据准备1)类别数据2)时间数据3)颜色数据4)地理数据5)世界人口数据6)选择数据7…

Netty核心源码剖析(三)

1.Pipeline,Handler和HandlerContext创建源码剖析 1.1.三者的关系 1>.每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是目标客户端; 2>.每一个新创建的Socket都将会分配一个全新的ChannelPipeline(以下简称pipeline); 3>.每一个ChannelPipeline内…

LKY_OfficeTools 一键优雅的安装并激活你的Office

何为优雅? 说到Office办公软件 相信都不陌生,一般包括Word、Excel、PowerPoint默认三件套,和Outlook、OneNote、Access。 几乎每台电脑都会配置的 但大多数的情况下 都是先去软件仓库下载 Office 然后使用激活工具去激活Office 这种操作听起…

国内首款医疗大语言模型MedGPT发布,专业医疗标注数据成关键

5月25日,国内互联网医院、慢病管理平台医联今日正式发布了自主研发的基于Transformer架构的国内首款医疗大语言模型——MedGPT。 与通用型的大语言模型产品不同,MedGPT主要致力于在真实医疗场景中发挥实际诊疗价值,实现从疾病预防、诊断、治疗…

机器学习 day14 ( 神经网络,计算机视觉中的引用:人脸识别和汽车识别)

神经网络的发展 最开始的动机:是通过构建软件来模拟大脑,但今天的神经网络几乎与大脑的学习方式无关 我们依据大脑中的神经网络,来构建人工神经网络模型。左图中:一个神经元可以看作一个处理单元,它有很多的输入/树突…

图论与算法(6)最小生成树

1. 带权图及实现 1.1 带全图概述 带权图是一种图形结构,其中图中的边具有权重或成本。每条边连接两个顶点,并且具有一个与之关联的权重值,表示了两个顶点之间的某种度量、距离或成本。 带权图可以用邻接矩阵或邻接表来表示。邻接矩阵是一个…

集成电路(芯片)中VCC、VDD、VSS、GND和AGND等概念

IC芯片 Integrated Circuit Chip 即集成电路芯片,是将大量的微电子元器件(晶体管、电阻、电容、二极管等) 形成的集成电路放在一块塑基上,做成一块芯片。目前几乎所有看到的芯片,都可以叫做 IC芯片 。 SOP与DIP SOP(Small Outline Package…

浅谈备考 系统架构师

这里写自定义目录标题 准备步骤考试形式考试内容学习考试内容训练考试内容其他觉得好的同类参考资料2023年度计算机技术与软件专业技术资格(水平)考试工作计划 第一次产生萌芽的时候三年前,当初备考没有想过要评职称或者成为什么人才&#xf…

antd3和dva-自定义组件初始化值的操作演示和自定义组件校验

前言 在antd3 (react)版和dva下,好像有的项目使用的是getFieldDecorator来获取表单的值的,现在就遇到了一个问题,getFieldDecorator针对antd自带的组件实现效果很好,除去一个form.item只能有一个getFieldDecorator的限制,其他都很好用,但是假如是自定义组件或者说在getFieldDec…

Linux内存管理7——深入理解 slab cache 内存分配全链路实现

1. slab cache 如何分配内存 当我们使用 fork() 系统调用创建进程的时候,内核需要为进程创建 task_struct 结构,struct task_struct 是内核中的核心数据结构,当然也会有专属的 slab cache 来进行管理,task_struct 专属的 slab cac…