由于刚开始接触多gup训练,按照网上的帖子改写代码后,发现训练程序依旧很慢(用的是4gpu),用nvidia-smi检查GPU运行情况,发现Memory-Usage占满而GPU-Util为0%。
上网一搜还真有不少人遇到同样的问题,还以为是自己哪里没设置好。画了一天左右时间在网上找解决方法,网上的方法都没用。
后来用watch nvidia-smi命令,实时观察gpu运行状况发现,大部分时间4个gpu的GPU-Util为0%,突然有一个时间4个gpu的GPU-Util为35%了。这时才注意到自己写的多gpu训练部分的程序已经成功运行了的。只是大部分时间在cpu上运行,极少部分时间在gpu上运行。于是仔细查看代码,发现大部分时间花在数据增强部分的程序上了。把数据增强部分代码去掉后,GPU-Util不再为0%了。
总结:
1.要用watch nvidia-smi命令查看GPU运行状况。
2.如果想要利用gpu提高训练效率就不要进行数据增强操作,直接拿大数据集来用。