GPU显存占满但利用率却很低

来帕多瓦联培已经一个多月了,最近调代码跑实验又发现了这个问题。这里提供另外一个解决思路。一个原因还是 cpu没跟上gpu节奏

通常我们都会用尽可能大的 batch 来占满显存。但是如果cpu的读取和传输跟不上的话就会导致gpu利用率时上时下,而且训练时间还会变长。

这里可以尝试减小batch,以减轻cpu工作负担,增加gpu利用率,同时还能加速训练。 举个例子。

训练 基于resnet101+deeplabv3的语义分割模型:
1. batch size为4:总训练时间一小时;
2. batch size为2:总训练时间半小时;

下图为batch size=4时的设备状态。
可以看到gpu中间是有很多次休息的。

同时训练时间也要一个多小时。

下图为batch size=2时的设备状态。
可以看到,仅仅降低了batch size,就把gpu利用率拉满了。

同时训练时间也缩短了不少。


最后小batch的问题可以通过累积几个batch梯度再优化来解决。

总结

说到底还是不够有钱,这样也好,多出来的内存还能再让我跑跑别的程序!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

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

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年6月13日
下一篇 2023年6月13日

相关推荐