【问题标题】:How to run Keras on a CPU and a GPU simultaneously?如何同时在 CPU 和 GPU 上运行 Keras?
【发布时间】:2018-05-29 13:04:50
【问题描述】:

我正在训练一个模型,该模型由一个 CNN 和一个具有不同输入的 RNN 组成,其输出将被馈送到 FCN。现在的问题:

我可以在 CPU 上并行运行 CNN,在 GPU 上并行运行 RNN 吗?

在 TensorFlow 中:

with tf.device('/cpu:0'):
    CNN...
with tf.device('/gpu:0'):
    RNN...

【问题讨论】:

    标签: tensorflow parallel-processing keras recurrent-neural-network convolutional-neural-network


    【解决方案1】:

    您可以完全使用您发布的代码。

    选择设备,定义层,选择另一个设备,定义其他层:

    现在,最好的表现可能会使用相反的:

    with tf.device('/gpu:0'):
        CNNKerasLayers....
    with tf.device('/cpu:0'):
        RNNKerasLayers....
    

    现在,我不确定 keras 将如何处理这个问题(是否有效并行),但它很可能会让 tensorflow 解决它。

    【讨论】:

    • 我不知道 RNN 在 CPU 上的速度更快。我有一个相对简单的 RNN,有 500 个神经元和大约 2700 万个数据点。这需要很长时间才能在 GTX 1050 Ti 上运行 50 个 epoch。再说一次,CNN 也很重。
    • GPU 中的 RNN 非常糟糕。现在 GPU 上的 CNN 非常棒。您可以单独使用 CPU 和 GPU 测试 RNN 来确认。 (有更新版本的 RNN,例如 CuDNNGRUCuDNNLSTM,在 GPU 上可能更快)。
    • 嗯,很有趣。希望我在开始研究之前就知道这一点。不过谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2020-08-11
    • 2021-08-12
    • 1970-01-01
    • 2018-04-06
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多