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

3 篇文章 0 订阅
2 篇文章 0 订阅

来帕多瓦联培已经一个多月了,最近调代码跑实验又发现了这个问题。这里提供另外一个解决思路。一个原因还是 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梯度再优化来解决。

总结

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值