镜像策略和中央存储策略之间的区别

时间:2019-12-11 11:46:49

标签: python tensorflow2.0

我阅读了CentralStorageStrategyMirroredStrategy的文档,但无法理解它们之间本质的区别。

MirroredStrategy中:

  

模型中的每个变量都在所有副本之间镜像。

CentralStorageStrategy中:

  

变量没有被镜像,而是被放置在CPU上,并且操作在所有本地GPU之间复制。

来源:https://www.tensorflow.org/guide/distributed_training

在实践中是什么意思? CentralStorageStrategy的用例是什么?如果以这种策略将变量放在CPU上,培训将如何进行?

1 个答案:

答案 0 :(得分:4)

在您通常的单GPU非分布式用例(例如卷积层的权重矩阵)中考虑一个特定变量(称为“ my_var”)。

如果使用4个GPU,则MirroredStrategy将创建4个变量而不是“ my_var”变量,每个GPU上一个。但是,每个变量将具有相同的值,因为它们总是以相同的方式进行更新。因此,变量更新会在所有GPU上同步发生。

对于CentralStorageStrategy,仅在主机(CPU)内存中为“ my_var”创建一个变量。更新仅发生在一个地方。

哪个更好取决于计算机的拓扑以及将CPU-GPU通信与GPU-GPU进行比较的速度。如果GPU之间可以快速通信,则MirroredStrategy可能会更高效。但是我确定要对其进行基准测试。