其他分享
首页 > 其他分享> > DataLoader数据加载慢的解决办法

DataLoader数据加载慢的解决办法

作者:互联网

DataLoader数据加载慢的解决办法

问题描述

使用pytorch训练神经网络的过程中,DataLoader数据加载得很慢,首先考虑设定DataLoader中的num_workers参数,使用多线程并行加载数据,但后来发现即使设定num_workers=16,也并没有实质性的速度提升,并且发现每隔 batch_size × num_workers 个数据(假定一个epoch总共有M个训练数据),训练会卡顿一会儿,仿佛GPU在等待CPU从DataLoader中加载数据。

在训练过程中,使用 top 命令查看CPU工作状态,如下:

tpo-before

使用 watch -n 1 nvidia-smi 命令查看GPU工作状态,如下:

Screenshot from 2021-12-08 19-45-55

可以看出,此时虽然有多个CPU线程并行工作,但每个线程的利用率较低,并且虽然GPU有一定的显存占用(目前是单GPU运行),但利用率几乎为0。

解决办法

在上述训练过程中,并没有有效地实现CPU多线程并行加载数据,原因是我将训练数据、数据扩增数据以及程序代码放在同一块固态硬盘中,而将这三部分数据分别放在不同的硬盘中,问题得到解决,CPU和GPU工作状态如下:

top-after

Screenshot from 2021-12-08 19-41-05

标签:解决办法,训练,DataLoader,GPU,数据,CPU,加载
来源: https://www.cnblogs.com/mauss/p/15666297.html