【发布时间】:2022-01-15 17:01:08
【问题描述】:
我有 21 个 ANN 训练过程要运行。
我手里有四台电脑。其中三个配备了 GPU(每个两个 GPU)。
在最短的时间内运行流程以激活培训的最佳方式是什么?
【问题讨论】:
标签: python tensorflow keras neural-network gpu
我有 21 个 ANN 训练过程要运行。
我手里有四台电脑。其中三个配备了 GPU(每个两个 GPU)。
在最短的时间内运行流程以激活培训的最佳方式是什么?
【问题讨论】:
标签: python tensorflow keras neural-network gpu
我建议您使用多 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()
使用镜像策略,批量大小将被拆分。所以你可以使用更大的批量大小。
【讨论】:
要明确回答这个问题是不可能的。在方向上,您需要考虑的一些事情是:
您是否已将模型调整为受 GPU 而不是 CPU 的瓶颈?这是深度学习训练的最佳实践。
您是否有一组经过良好调整的训练超参数?通过适当的调整,您可以显着降低训练速度 - 就像数量级一样。 (在 V100 上训练 34 秒即可在 CIFAR10 上获得 SOTA 性能。如果您自己花几天时间,可能需要 30 分钟的训练才能获得 SOTA 准确性)。
您有能力调整批量大小吗? “在 76 分钟内训练 Bert”论文介绍了几种技术,从热身到基本上是 LARS + Adam 的新优化器。
您是否有在单台机器上扩展到多个 GPU 的经验?通常在 TF2/Keras 中并不难。你有扩展到多台机器的经验吗?我还没有这样做,但假设它有点难。
如果您对以上所有内容都没有足够的信心,那么 TLDR 最好并行运行 7 个模型。
如果您对以上内容很有信心,可以尝试扩展到所有 7 个 GPU。
如果您介于两者之间,您可以尝试并行运行 4 个训练作业,每台机器一个,其中三个,使用双 GPU。
【讨论】: