1. batch_size,
batch_szie决定了GPU的内存占用率,太大会cuda out of memory,太小GPU利用率很低。而且GPU的内存使用率受模型大小的影响很大,因此不同的模型对应的batch_size,会有很大差别。
(16G,faster-RCNN :256,cycle-GAN:6)
2. num_works
num_works 的大小取决于cpu的核心数和内存大小,num_work 会在GPU运算(cpu空闲)时,取读取磁盘的数据到内存,提高读取效率。但是设置太大会 out of share memory。内存占用 = num_works * batch_size。并且随着训练次数的增加内存占用率会逐渐提升,这意味着可能在训练 n 轮之后,才会报错。可以考虑保证最大的batch_size情况下,调小num_works。或者两者之间折中选择(cpu较弱的情况下),通过num_works * batch_size进行判断。
参考: