当前位置: 首页 > wzjs >正文

网站怎么做微信支付宝支付网站建设皖icp

网站怎么做微信支付宝支付,网站建设皖icp,网线制作图解,wordpress评论回复250408_解决加载Cifar10等大量数据集速度过慢,耗时过长的问题(加载数据时多线程的坑) 在做Cifar10图像分类任务时,发现每个step时间过长,且在资源管理器中查看显卡资源调用异常,主要表现为,显卡…

250408_解决加载Cifar10等大量数据集速度过慢,耗时过长的问题(加载数据时多线程的坑)

在做Cifar10图像分类任务时,发现每个step时间过长,且在资源管理器中查看显卡资源调用异常,主要表现为,显卡周期性调用,呈现隔一会儿动一下的情况(间隔时间过大导致不能同时截到两个峰值)。

image-20250408224446220

通过检测每步耗费时间发现,载入数据集的时间远远大于前向处理的时间。

在以下参数情况下

batch_size=16
num_workers=20 # 线程数

载入Cifai10数据集的时间为60s左右,前向计算时间仅为0.002s,浪费了大量的时间用于载入及传输数据。

image-20250408230936264

image-20250408225808623

先说结论,是多线程的问题,线程过多导致多线程冲突,修改num_workers=0即可解决问题

解决过程

修改过程中查阅很多资料和大佬博客,尝试了重新定义自己的dataset方法,将transform定义到初始化方法中,避免每获取一次数据就执行一遍transform,而是改为在把数据载入内存时一次全部处理完(详见解决pytorch中Dataloader读取数据太慢的问题_dataloader数据读取慢-CSDN博客)

然后重新定义自己加载数据的方法,大佬文中没给加载的方法,我这里补充

def data_loader(batch_size=4,num_workers=2):""":param batch_size: 批次大小:param num_workers: 线程数:return:train_loader:训练数据加载器test_loader:测试数据加载器class:分类类别"""root_dir="./data"transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5)),])train_dataset = CUDACIFAR10(root=root_dir,train=True,to_cuda=True,  # 使用XPU(或GPU)half=False,  # 不使用半精度浮点数download=True,  # 如果数据集尚未下载,则下载pre_transform=transform)trainloader = DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True,num_workers=num_workers)test_dataset = CUDACIFAR10(root=root_dir,train=False,to_cuda=True,  # 使用XPU(或GPU)half=False,  # 不使用半精度浮点数download=True,  # 如果数据集尚未下载,则下载pre_transform=transform)testloader = DataLoader(dataset=test_dataset,batch_size=batch_size,shuffle=True,num_workers=num_workers)classes=('plane','car','bird','cat','deer','dog','frog','horse','ship','truck')return trainloader,testloader,classes

然后加载数据集发现报错:

RuntimeError: _share_filename_: only available on CPU

多线程加载仅支持在cpu上进行,我们这样的处理方法已经提前将数据载入到gpu或xpu上,无法使用多线程,遂将num_workers修改为0,发现问题解决了。数据载入速度变得很快。遂准备复现并记录问题,发现把大佬数据类代码注释后,使用官方cifar10数据类代码,加载速度仍较快,核实发现应该是多线程的问题。

尝试多组参数

batch_size=16
num_workers=0

每个step执行时间为11-12s左右

image-20250408231515083

调整参数

batch_size=32
num_workers=1

此时显卡调用情况为长矩形,持续调用,但占用率并不高,在33-34左右波动

image-20250408231417767

此时显卡占用情况呈现连续峰谷,占用波峰为50左右,每个step执行时间缩短为6-8秒

image-20250408231738784

image-20250408231815123

因显卡调用仍有间隙,尝试增大batchsize

batch_size=64
num_workers=1

显卡占用情况仍呈现连续峰谷,占用波峰为30左右,每个step执行时间缩短为6-7秒

image-20250408232021771

image-20250408232055250

batch_size进一步放大到128,显卡占用波峰继续缩小为20左右,但每个step的时间未明显降低

尝试64与2的搭配,仍与32与1的搭配执行时间及显卡占用大致相同,执行时间误差1s,占用误差50%。

尝试128与2的搭配,结果与64,1的搭配情况大致相同,得结论,与比值有关。

batch_sizenum_workers每个step执行时间(秒)显卡占用情况描述显卡占用率波峰(%)性能优化效果(与初始参数对比)
162070显卡周期性调用,间隔时间过长,不能充分利用显卡资源,大部分时间在等待数据加载-数据载入时间过长,显卡资源浪费严重
16011-12显卡调用情况为长矩形,持续调用,但占用率不高,波动在33-34%左右33-34数据载入速度显著提高,显卡资源利用率有所提升,但仍有提升空间
3216-8显卡调用情况呈现连续峰谷,占用波峰约为50%50数据载入速度进一步提高,显卡资源利用率提升,step执行时间缩短
6416-7显卡调用情况仍呈现连续峰谷,占用波峰约为30%30数据载入速度进一步提高,显卡资源利用率提升,step执行时间进一步缩短
1281未明显降低显卡占用波峰继续缩小为20%左右20数据载入速度未明显提升,显卡资源利用率降低,step执行时间未明显缩短
642与32,1搭配大致相同与32,1搭配大致相同-与32,1搭配大致相同,执行时间误差1秒,占用误差5%
1282与64,1搭配大致相同与64,1搭配大致相同-

batch_sizenum_workers 的比值对性能影响较大,需要根据具体情况进行调整。在测试中,batch_size=32, num_workers=1batch_size=64, num_workers=1 的搭配效果较好,能够在数据载入速度和显卡资源利用率之间取得较好的平衡

进一步思考

发现若如所测数据,

image-20250408233454914

仍有大量时间浪费在cpu与gpu的通信及其他步骤上

使用前文所提到的大佬的数据类初始化方法(避免多次transform),在batch_size=16num_workers=0的参数基础上,测得单次step时间可压缩到7-8s,即节省3-4s。其余参数大家自行尝试。

image-20250408233928137

本人初学小白,如有错误劳烦大佬指正


文章转载自:

http://ruVP4Xlb.zkxbm.cn
http://GSmRdzzY.zkxbm.cn
http://Qhst8Rqo.zkxbm.cn
http://gt6lFEu2.zkxbm.cn
http://nLTaj64y.zkxbm.cn
http://XaWETFYL.zkxbm.cn
http://L8uC9EMk.zkxbm.cn
http://xLpuUiqh.zkxbm.cn
http://fXd1qI3S.zkxbm.cn
http://yVOD9sQm.zkxbm.cn
http://gDlsmKwo.zkxbm.cn
http://B85voh7w.zkxbm.cn
http://TSpBpXDn.zkxbm.cn
http://vt0bhrS9.zkxbm.cn
http://evPAzazn.zkxbm.cn
http://iwsJKaOl.zkxbm.cn
http://xeIbcS7U.zkxbm.cn
http://OOMyjmGE.zkxbm.cn
http://Q5RSMJ5P.zkxbm.cn
http://dJmhGNrL.zkxbm.cn
http://T68j64jE.zkxbm.cn
http://gNpVWVeC.zkxbm.cn
http://hUo5Ah0j.zkxbm.cn
http://2WSDJei8.zkxbm.cn
http://89oDdPh9.zkxbm.cn
http://SnP2y41C.zkxbm.cn
http://rCLN0uxn.zkxbm.cn
http://GmiXM6XE.zkxbm.cn
http://hmHEKl2h.zkxbm.cn
http://zX7jbL6u.zkxbm.cn
http://www.dtcms.com/wzjs/658953.html

相关文章:

  • 高米店网站建设西宁啥时候恢复正常
  • 哪个公司做企业网站好wap网站和app的区别
  • 怎样做直播网站app北京公司注册虚拟地址
  • 家庭电影网站建设flash型网站
  • 做网站好还是做安卓app好新北方app下载
  • 网站哪家做的比较好现在装宽带要多少钱
  • 网站建设详细流wordpress hook机制
  • 做网站需要的技术扬中网站建设开发
  • 投资建设网站wordpress redis 加速
  • 建立个人博客网站的流程利用php做网站
  • 网站建设选哪个微信公众号调用WordPress
  • 大兴网站建设优化seo广西城乡和建设厅网站
  • 绿色电器公司网站psd模板怎么看一个网站是否被k
  • 乐都网站建设多少钱北京代理网站备案电话
  • 鞍山网站哪家好公司网站制作设计报价
  • 网站设计与建设第一章广东网站设计品牌设计
  • 网站维护一般多少钱c2c模式是什么意思
  • 网站跳出的广告是怎么做的网站开发大全
  • 做一个回收网站怎么做个人备案的网站内容
  • 通城做网站公司wordpress目录在哪里
  • 凡客诚品官方网站首页北京广告制作公司
  • 做网站哪个编辑器好用门户网站群建设
  • 扬州门户网站开发公司成都房产网签查询
  • 中国站长素材网wordpress的点商
  • 天津和平做网站哪家好搞定设计在线制作
  • 做网站卖货苏州建设工程检测协会网站
  • 懒人免费建站模板大宗商品交易平台推荐
  • 网站网络推广策略和电子商务js页面下载wordpress
  • 网站可以免费做吗dede小说网站模板
  • 汨罗做网站价格创建企业需要什么条件