【问题标题】:Should I run the training process serially or parallelly?我应该串行还是并行运行训练过程?
【发布时间】:2022-01-15 17:01:08
【问题描述】:

我有 21 个 ANN 训练过程要运行。

我手里有四台电脑。其中三个配备了 GPU(每个两个 GPU)。

在最短的时间内运行流程以激活培训的最佳方式是什么?

【问题讨论】:

    标签: python tensorflow keras neural-network gpu


    【解决方案1】:

    我建议您使用多 GPU 训练并一次训练一个模型。所以在每台计算机上用两个 GPU 训练一个模型。

    os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" # 使用两个 GPU 进行训练。

    这里是一个如何使用多个 gpus 的示例:

    strategy = tf.distribute.MirroredStrategy(devices=["/device:GPU:0","/device:GPU:1"])
    with strategy.scope():
        model = get_model()
        model.compile()
        model.fit()
    

    使用镜像策略,批量大小将被拆分。所以你可以使用更大的批量大小。

    【讨论】:

    • 这是正确的,TF 绝对可以轻松地在多个 GPU 上进行训练,就像它们是单个逻辑 GPU 一样。我认为困难的部分是知道如何利用该硬件。你必须增加批量大小,提高学习率,可能选择不同的优化器,调整它,调整你的权重衰减,调整你的批量规范的两个 beta 值......你的训练超参数和算法必须改变以利用更多硬件。
    【解决方案2】:

    要明确回答这个问题是不可能的。在方向上,您需要考虑的一些事情是:

    您是否已将模型调整为受 GPU 而不是 CPU 的瓶颈?这是深度学习训练的最佳实践。

    您是否有一组经过良好调整的训练超参数?通过适当的调整,您可以显着降低训练速度 - 就像数量级一样。 (在 V100 上训练 34 秒即可在 CIFAR10 上获得 SOTA 性能。如果您自己花几天时间,可能需要 30 分钟的训练才能获得 SOTA 准确性)。

    您有能力调整批量大小吗? “在 76 分钟内训练 Bert”论文介绍了几种技术,从热身到基本上是 LARS + Adam 的新优化器。

    您是否有在单台机器上扩展到多个 GPU 的经验?通常在 TF2/Keras 中并不难。你有扩展到多台机器的经验吗?我还没有这样做,但假设它有点难。

    如果您对以上所有内容都没有足够的信心,那么 TLDR 最好并行运行 7 个模型。

    如果您对以上内容很有信心,可以尝试扩展到所有 7 个 GPU。

    如果您介于两者之间,您可以尝试并行运行 4 个训练作业,每台机器一个,其中三个,使用双 GPU。

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 2015-09-14
      相关资源
      最近更新 更多