我的tensorflow默认使用GPU而不是CPU,这大约慢了10倍.如何修复此问题并使其使用CPU



我有一台带有离散GPU和专用GPU的游戏笔记本电脑(NVIDIA GeForce RTX 3070(。

我在tensorflow上训练神经网络的速度非常慢。比另一台CPU和GPU规格极低的笔记本电脑慢很多倍。

我认为速度慢的原因是tensorflow可能在专用GPU上运行,因为当我禁用专用GPU时,训练时间会加快,大约快10倍。这些都是巨大的差异,一个数量级。

我知道默认情况下内核在专用GPU上运行,因为当我在会话中间禁用专用GPU时,内核会死亡。

因此,我认为禁用专用GPU迫使它在CPU(AMD Ryzen 9 5900HX(上运行,这应该会更好。

我用Jupyter笔记本在Anaconda上运行这个。

我如何强制它由CPU而不是我的GPU使用。

编辑:这似乎是一个复杂的问题。更多信息。

  • 在禁用专用GPU的情况下,根据任务管理器的说法,训练时GPU使用率为0%(如预期(,CPU使用率为40%。

  • 但在启用专用GPU的情况下,训练时,GPU使用率约为10%,CPU使用率约20%。这比上面的慢10倍。为什么它同时使用两者,但CPU更少?

  • 根据任务管理器的说法,在启用专用GPU的情况下(即正常情况下(,scikit learn使用CPU而不是GPU。所以这个问题是张量流特有的。

  • 在会话中间杀死专用GPU不仅会导致内核崩溃,还会导致打开Jupyter笔记本电脑。

  • 强制Anaconda和Jupyter Notebook在Windows设置中使用集成GPU而不是专用GPU并不能解决问题。它仍在使用专用GPU。

只需告诉tensorflow这样做:

with tf.device("/CPU:0"): #name might vary
model.fit(...)

最新更新