在模型训练中,有时会发现,即使使用了GPU,GPU利用率也不高,训练速度还是不够快。
所以,简单记录一下提高思路
GPU利用率低的可能原因
- CPU数据读取更不上:
CPU作为中央控制器,它有时钟概念,也有多线程,它的多任务同时运作机制 与 GPU
这样只负责计算的元件不同,CPU可能同时有其他任务,导致速度变慢 - 显存没有充分利用,
Batch_size不够大
提高 GPU 占用率的几个思路:
- 提高 Batch Size(直到显存爆掉);
- 提高单层计算量(如增大 channels、kernel_size,减小 stride、group);
- 使用 cuDNN;
- 算法运算优化:
优化网络图,优化单位batchsize的显存占用量,这样就可以装下更多的batchsize,来更充分的利用GPU core等 - 减少CPU其他任务的占用:减少其他读写任务等