我编写了一个带有张量流的RNN,用于训练一些时间序列数据。我在移动窗口上训练模型,接受2个时间切片并预测第三个切片。
我批量输入和标签,并在30个时期内运行整批批次。该模型作为单个TF应用程序运行良好。
我现在正在寻求成熟我的方法并分配计算。我有这个工作使用DataSet进行批处理和MonitoredTrainingSession。我的集群由一个ps和两个worker组成。
我注意到分布式培训比单台机器慢了很多。我将其归结为网络(没有任何科学测量)但是我也担心我可能误解了设置 - 我的分布式模型的行为与单个自包含过程的行为不同。
我已经为每个工作人员提供了输入数据的本地副本,并且每个工作人员的输出(绘图)都不同。我觉得数据应该由ps加载并分发给工人?这样它会在工人之间平均分配数据?这是正确的方法吗?然而,当每个工人没有看到整个图片时,这是否会破坏RNN训练顺序数据的能力?
修改
仔细观察后,ps会收集每个工作人员的个别渐变,并在彼此的进度上更新所有渐变,以便他们彼此都知道吗?