我在大学里,所有文件系统都在远程系统中,无论我使用我的帐户登录哪里,都可以访问我的主目录。即使我通过SSH命令登录到GPU服务器。这就是我使用GPU服务器读取数据的条件。
当前,我使用PyTorch在ImageNet上从头训练ResNet,我的代码仅使用同一台计算机上的所有GPU,我发现“ torchvision.datasets.ImageFolder”将花费近两个小时。
请提供一些有关如何加速“ torchvision.datasets.ImageFolder”的经验吗?非常感谢。
答案 0 :(得分:1)
为什么要花这么长时间?
设置ImageFolder
可能需要很长时间,尤其是当图像存储在慢速的远程磁盘上时。此延迟的原因是数据集的__init__
函数遍历了图像文件夹中的所有文件,并检查该文件是否为图像文件。对于ImageNet而言,可能需要花费相当长的时间,因为要检查的文件超过100万个。
您能做什么?
-正如Kevin Sun所指出的那样,将数据集复制到本地(可能更快)可以显着加快处理速度。
-或者,您可以创建一个修改后的数据集类,该数据集类不读取所有文件,而是依赖文件的缓存列表-仅在其中准备一次 的缓存列表前进并用于所有运行。