大训练数据+中等RAM+小GPU显存下提高RAM,GPU利用率的方法

当训练数据量很大,比如500G,而RAM一般,比如128G,GPU显存更小,比如12G,这时一般的代码都是一个一个batch的从硬盘中读取,预处理,训练,由于数据从硬盘IO读取耗时,结果导致CPU,RAM,GPU利用率都非常低,如何提高RAM和GPU利用率(持续大于90%),加快训练。思路如下:

(1)将总数据(先shuffle)分为x份

(2)对每一份数据,先shuffle,再多线程(from multiprocessing.dummy import Pool)load到内存RAM中,选择合适的x,尽量使RAM加满。

(3)对每一份数据,定义一个dataloader,设置合适的batch_size,尽量使GPU显存装满。

(4)遍历每一份数据,进行训练,即可持续保持GPU利用率(因为直接从RAM而不是硬盘获取数据),训练速度极大提高。

过程是:

split all_data into x data_blocks

for each data_block:

shuffle data_block

multiprocessing load data_block

create a dataloader(data_block,batchsize)  # keep RAM and GPU full

train(dataloader)

end

版权声明:本文为博主wrx93原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_41333775/article/details/123089303

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年2月24日 下午2:11
下一篇 2022年2月24日 下午2:24

相关推荐