在CPU和GPU上并行运行Python Tensorflow

时间:2017-10-25 09:46:25

标签: python tensorflow gpu cpu

我需要使用Tensorflow和Python训练大量的神经网络。我的神经网络(MLP)范围从非常小的(~2个隐藏层,每个约30个神经元)到大的(3-4个层,每个> 500个神经元)。

我可以在GPU上顺序运行所有这些,这很好。但我的CPU几乎是空转。另外我发现,对于我的小网来说,我的CPU比GPU更快(我假设因为GPU-Overhead等......)。这就是为什么我要同时使用我的CPU和我的GPU来训练我的网。 CPU应该将较小的网络处理为较大的网络,我的GPU应该从较大的网络处理到较小的网络,直到它们在中间的某个地方相遇...我想,这是一个好主意: - )

所以我只是在不同的过程中两次启动我的消费者。设备= CPU,另一个设备= GPU。两者都按照预期开始并消耗前两个网。但是,GPU消费者会抛出异常,他的张量被CPU上的另一个进程(!)访问/侵犯,我觉得很奇怪,因为它应该在GPU上运行......

任何人都可以帮助我,将我的流程完全隔离开来吗?

1 个答案:

答案 0 :(得分:1)

您的任何网络是否共享运营商? 例如。他们在同一个variable_scope中使用具有相同名称的变量,该变量设置为variable_scope(reuse=True)

然后多个网络将尝试重用相同的底层Tensor结构。

同时检查你的tf.Session中tf.ConfigProto.allow_soft_placement是否设置为True或False。如果为True,则无法保证设备放置将以您在代码中的预期方式实际执行。