GPU Memory-Usage拉满,Volatile GPU-Util却为0的问题

姬实
2023-12-01

使用PyTorch训练模型时竟然没有听见服务器的响声(震惊!)而且训练速度特别慢,所以查看了一下GPU的利用率,发现是0%!!!经过各种查之后终于找到了问题所在:
原来pytorch加载数据是要将数据从CPU中处理,然后送到GPU中,GPU拥有非常块的计算能力,但是受限于带宽,CPU送入的数据远远达不到GPU满载的需要。就像你给个一口能吃5个馒头的大胖子,一次只给吃指甲盖大小的馒头,根本感受不到好吧!所以为了解决这个问题,有两种办法:
1、几个人同时喂这个胖子。也就是把DataLoader中的num_works设置的大一点,eg.4,8,16…
2、把所有馒头都给胖子,让他自己吃。对应的就是把DataLoader中的pin_memory设为True,把数据映射到GPU中,这样就没有了搬运的过程,但是要求GPU有足够的空间。

 类似资料: