TensorFlow学习- GPU显存占满而利用率(util)很低原因&提高方法

2080的显卡,跑YOLOv3,显存已经满了,显卡利用率却只有7%

百度了一圈,看到几篇比较靠谱的博客,直接贴链接

参考1:
TensorFlow如何提高GPU训练效率和利用率
分析显卡利用率低的原因是每个训练过程中有些进程是在CPU中执行的,像load下个batch、预处理batch、打印日志、后处理等,并且有的任务cpu和GPU是交替执行的,进一步降低了GPU利用率。
提出了四个方式提高利用率:
1、把代码都用tf的API重写;
2、使用Estimator把大部分代码写进计算图
3、使用th.data预处理数据集,并用tf.records存储
4、用prefetch、parallel mapping使样本并行处理,不让gpu闲着

由于是新手具体的操作过程哈没看懂,详细直接看原文。

参考2:
实验中GPU利用率低的可能的原因:
作者进行试验分析出来是日志的问题,把关于权重和偏差值记录的代码注释掉之后利用率提高了。原因和上一篇差不多。

参考3:
GPU Memory Usage占满而GPU-Util却为0的调试
作者的CPU全满,GPU却是0
通过阅读官方文档分析出原因是 GPU不能计算 float64,算的话就很慢
然后根据文档建议,使用config和warn_float64帮助找到float64的输入;之后试图设定一个cast_policy参数,自动把numpy产生的数组转换成float32失败;最后检查所有numpy调用,全部手动制定dtype=numpy.float32,执行一下某个命令,成功!

你可能感兴趣的:(Tensorflow,深度学习,问题解决)