为什么当我分配多个 GPU 时,我的 Tensorflow 代码只使用一个 GPU

数据挖掘 张量流 显卡
2022-03-15 02:59:30

我正在尝试在具有 8 gpus 的超级计算机上运行我的代码。虽然,我分配了 8 个 gpus,但其中一个刚刚被占用。我在网站上阅读了一些注释,如果适用,Tensorflow 似乎会自动使用 gpu,但我仍然不知道如何使用所有 gpu。代码只是一个深度网络,使用 model.fit() 进行训练,然后使用 model.predict() 预测测试数据

1个回答

如果 TensorFlow 操作同时具有 CPU 和 GPU 实现,TensorFlow 会自动将操作首先在 GPU 设备上运行。如果您有多个 GPU,则默认选择 ID 最低的 GPU。

TensorFlow 2.0 现在具有tf.distribute跨多个 GPU、多台机器或 TPU 分布训练的模块。它建立在“分销策略”的概念之上。您可以使用tf.distribute.MirroredStrategy()作为范围,例如

strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
    #DO WHATEVER YOU WANT TO DO HERE

请查看此使用 TensorFlow 进行分布式训练指南,了解实施细节和其他策略。