【问题标题】:Can I use TensorFlow distribute training with heterogeneous machines?我可以使用 TensorFlow 对异构机器进行分布式训练吗?
【发布时间】:2020-03-18 03:32:16
【问题描述】:

我有两台机器,机器 1 有 GPU,机器 2 只有一个 CPU。 我想知道两台机器是否可以在TensorFlow中使用Multi-worker training,即分布式训练时,machine1使用GPU,machine2使用CPU。

Tensorflow 的版本是 2.1.0

【问题讨论】:

    标签: tensorflow deep-learning distributed-computing tensorflow2.x


    【解决方案1】:

    您可以使用 Multi-worker 通过 TensorFlow 在多台机器上训练模型。默认情况下,TensorFlow 在您的系统 CPU 上训练模型,但如果您有 Nvidia GPU,则可以安装 CUDA,它允许您在 GPU 上训练模型。

    【讨论】:

    • 我想用两台机器做分布式学习。 machine1 有 GPU 并安装了 CUDA/Cudnn,但是 machine2 只有 CPU。两台机器都安装了Tensorflow2.1.0,可以用machine1的GPU和machine2的CPU做分布式学习吗?
    • 就个人而言,我从来没有在多台机器上训练过模型,但从我所读到的,应该可以在不同的机器上训练模型,但只要你使用的是 Multi-worker。如果您在带有 GPU 的计算机上安装了 CUDA,那么当您开始在该计算机上训练模型时,它应该会自动转到您的 GPU。
    • 谢谢你的回答,我会针对这种情况做一些实验,当我得到一些结果时我会更新这个问题。
    【解决方案2】:

    答案是否定的。 当我分发深度学习时,请遵循本教程:

    https://www.tensorflow.org/tutorials/distribute/multi_worker_with_keras

    发生了一些错误:

    tensorflow.python.framework.errors_impl.InternalError: Collective Op CollectiveBcastSend: Broadcast(1) is assigned to device /job:worker/replica:0/task:0/device:GPU:0 with type GPU and group_key 1 但是该组的 CPU 类型为 [Op:CollectiveBcastSend]

    在我通过代码设置 machine1 使用 CPU 后:

    os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
    

    训练将使用两台机器的 CPU 成功运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2020-06-17
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多