用tensorflow-gpu跑SSD-Mobilenet模型GPU使用率很低这是为什么

这是GPU运行情况
这是GPU运行情况
这是训练过程
这是训练过程

batch size太小,导致模型的并行化程度太低。还有你的cpu、内存/显存带宽性能不足。

试试legacy/train.py而非model main.py

GPU利用率低可能有多方面的原因,首先要知道在训练过程中,不是所有的操作都是在GPU中进行,有一些前处理、后处理、日志记录等是在CPU上进行的,这就导致GPU并不是一直处于工作状态,可以通过运行 watch -n 1 nvidia-smi 来观察 GPU 的周期变化,可以看到是时高时低的,解决方法可以参考这篇博客https://blog.csdn.net/m0_38064529/article/details/103168172

出现类似原因一般都会数据处理读取成为模型训练的瓶颈。通俗的理解就是训练中对数据处理耗时较多,使得gpu无法大规模并行运算。解决可以从以下几个方面着手:

  • 将从硬盘数据读取到内存中,减少读取耗时
  • 开启多线程加速数据处理
  • 减少batch-size,缩短每次训练的数据处理时间

感谢 @ZONG_XP 和@小宋是呢 的认真回答,楼主是否尝试过此方法呢?欢迎回来反馈结果~