admin管理员组文章数量:1026989
1. 背景
训练集全是16x16,32x32之类的小图,达到上千万张,训练时发现数据加载很慢很慢很慢!!!看了下CPU 内存 GPU使用情况,发现CPU使用率都跑到90%去了,GPU使用率却较低
2. 解决方法
2.1 预处理提速
- 尽量减少每次读取数据时的预处理操作,可以考虑把一些固定的操作,例如 resize ,事先处理好保存下来,训练的时候直接拿来用
- Linux上将预处理搬到GPU上加速:
NVIDIA/DALI :https://github/NVIDIA/DALI
2.2 IO提速
2.2.1 使用更快的图片处理
- opencv 一般要比 PIL 要快
- 对于 jpeg 读取,可以尝试 jpeg4py
- 存 bmp 图(降低解码时间)
2.2.2 小图拼起来存放(降低读取次数)
对于大规模的小文件读取,建议转成单独的文件,可以选择的格式可以考虑:TFRecord(Tensorflow)、recordIO(recordIO)、hdf5、 pth、n5、lmdb 等等
2.3 预读取数据
预读取下一次迭代需要的数据, 参考给pytorch 读取数据加速
2.4 借助内存
直接载到内存里面,或者把把内存映射成磁盘好了,参考如何给你PyTorch里的Dataloader打鸡血
2.5 借助固态
把读取速度慢的机械硬盘换成 NVME 固态吧~
3. 最后
1. 背景
训练集全是16x16,32x32之类的小图,达到上千万张,训练时发现数据加载很慢很慢很慢!!!看了下CPU 内存 GPU使用情况,发现CPU使用率都跑到90%去了,GPU使用率却较低
2. 解决方法
2.1 预处理提速
- 尽量减少每次读取数据时的预处理操作,可以考虑把一些固定的操作,例如 resize ,事先处理好保存下来,训练的时候直接拿来用
- Linux上将预处理搬到GPU上加速:
NVIDIA/DALI :https://github/NVIDIA/DALI
2.2 IO提速
2.2.1 使用更快的图片处理
- opencv 一般要比 PIL 要快
- 对于 jpeg 读取,可以尝试 jpeg4py
- 存 bmp 图(降低解码时间)
2.2.2 小图拼起来存放(降低读取次数)
对于大规模的小文件读取,建议转成单独的文件,可以选择的格式可以考虑:TFRecord(Tensorflow)、recordIO(recordIO)、hdf5、 pth、n5、lmdb 等等
2.3 预读取数据
预读取下一次迭代需要的数据, 参考给pytorch 读取数据加速
2.4 借助内存
直接载到内存里面,或者把把内存映射成磁盘好了,参考如何给你PyTorch里的Dataloader打鸡血
2.5 借助固态
把读取速度慢的机械硬盘换成 NVME 固态吧~
3. 最后
版权声明:本文标题:训练技巧之数据集太多,加载太慢怎么办? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1728413746a858634.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论