pytorch dataloader读取原理及加速方法
内容以后更
https://www.cnblogs.com/pprp/p/14199865.html#5-data-prefetch
https://zhuanlan.zhihu.com/p/66145913
https://yey.world/2020/12/10/Pytorch-06/
http://www.cxyzjd.com/article/rosefun96/87947590
https://www.zhihu.com/question/307282137
https://zhuanlan.zhihu.com/p/91521705
https://www.cnblogs.com/ranjiewen/p/10128046.html
https://cloud.tencent.com/developer/article/1090614
https://yichengsu.github.io/2019/08/pytorch-with-big-dataset/
pytorch dataloader 常年有一个多 worker 的问题,不知道楼主在用的时候有没有遇到。
如果没有的话,一方面可以尝试着开更多的 worker 来并发读取。同时也可以把一些 transformation、data augmentation 放到 GPU 上做,减少 cpu 的压力。另外,是不是也要看看读取数据本身的 I/O 够不够快,比如本地的化,是不是放在了 hdd 上,是不是小文件然后经常执行 ls 操作等。
线程数num_workers的选择其实是根据经验来的,网上的经验认为4比较合理。具体的参数选择最好是在训练中做下测试,找到最优性能的num_workers。另外克服GPU等待数据预处理的时间还有以下两种方式:
1、预加载数据,设置pin_memory为True
2、加快数据预处理逻辑,如果是CV领域,可以考虑使用NVIDIA DALI库将CPU操作转移到GPU上进行