首页 > 解决方案 > Tensorflow 有时无法在 GPU 上运行

问题描述

自己解决了这个问题。这是因为 celeba 数据集中的图像太多,而我的数据加载器效率很低。数据加载花费了太多时间并导致低速。

但是,这仍然无法解释为什么代码在 cpu 上运行而 gpu 内存也被占用。毕竟我只是转移到pytorch。


我的环境:windows10、cuda 9.0、cudnn 7.0.5、tensorflow-gpu 1.8.0。

我正在使用cyclegan模型。起初,它在我的玩具数据集上运行良好,并且可以在 gpu 上运行而没有主要问题(尽管前 10 次迭代花费了非常长的时间,这意味着它可能在 cpu 上运行)。

后来我尝试了celeba数据集,只是更改了文件夹名称来加载数据(我一次将数据全部加载到内存中,然后使用我自己的next_batch函数和feed_dict来训练模型)。那么问题来了:GPU显存还是按照GPU-Z占用的,但是GPU-load低(不到10%),而且训练速度很慢(比平时占用了10倍以上),也就是说代码在 CPU 上运行。

有人能给我一些建议吗?任何帮助表示赞赏,谢谢。

标签: tensorflowmachine-learningdeep-learningcomputer-visiongpu

解决方案


您尝试的批量大小是多少?如果对于小模型来说太低(比如 2-8),那么消耗的内存不会太多。这完全取决于您的批量大小、模型中的参数数量等。它还取决于模型架构以及模型中有多少可以并行运行的组件。也许尝试增加您的批量大小并重新运行它?


推荐阅读