【发布时间】:2018-11-30 01:40:07
【问题描述】:
我已阅读distributed tensorflow documentation 和this answer。
根据this,在数据并行方法中:
- 该算法在各个内核之间分配数据。
- 每个核心独立地尝试估计相同的参数
- 然后,核心相互交换它们的估计值,以便为该步骤得出正确的估计值。
在模型并行方法中:
- 算法向所有内核发送相同的数据。
- 每个核心负责估计不同的参数
- 然后核心相互交换它们的估计值,以得出所有参数的正确估计值。
In-graph replication 和 Between-graph replication 与这些方法有何关联?
This article 说:
例如,网络中的不同层可以并行训练 在不同的 GPU 上。这种训练过程通常被称为“模型 并行”(或 TensorFlow 中的“图内复制” 文档)。
还有:
在“数据并行”(或“图间复制”)中 TensorFlow 文档),您对每个设备使用相同的模型, 但是使用不同的训练样本在每个设备中训练模型。
准确吗?
来自 tensorflow 文档页面中链接的 Tensorflow DevSummit video:
看起来数据被拆分并分发给每个工作人员。那么In-graph replication 不是遵循数据并行方法吗?
【问题讨论】:
-
在我的理解中,图内和图间的区别在于您在一台服务器或集群中的所有服务器上运行代码来构建依赖关系图(也就是您的模型)的位置。在大型集群中,图之间不会在单个服务器上出现瓶颈,并且是首选。这两种方法都允许您(用户)运行您定义的任何操作,无论是数据并行方法、分布式模型还是介于两者之间的东西。由于我没有对此进行编码,因此我会让其他人回答,以防我的理解有误。
标签: python tensorflow distributed