在分布式张量流学习中使用参数服务器的原因是什么?

kol*_*v93 10 distributed tensorflow

简短版本:我们不能将变量存储在其中一个worker中而不能使用参数服务器吗?

长版: 我想在tensorflow中实现神经网络的同步分布式学习.我希望每个工人在培训期间都能获得完整的模型副本.

我已经阅读了分布式tensorflow教程分布式培训imagenet的代码,但我们不知道为什么我们需要参数服务器.

我看到它们用于存储变量的值,replica_device_setter注意变量在参数服务器之间均匀分布(可能它做了更多的事情,我无法完全理解代码).

问题是:为什么我们不使用其中一个工人来存储变量?如果我使用,我会实现吗?

with tf.device('/job:worker/task:0/cpu:0'):
Run Code Online (Sandbox Code Playgroud)

代替

with tf.device(tf.train.replica_device_setter(cluster=cluster_spec)):
Run Code Online (Sandbox Code Playgroud)

对于变量?如果与使用参数服务器的解决方案相比,这有效吗?

Yar*_*tov 21

使用参数服务器可以为您提供更好的网络利用率,并允许您将模型扩展到更多计算机.

一个具体的例子,假设你有250M参数,每个工人计算梯度需要1秒,并且有10个工人.这意味着每个工作人员必须每秒向9个其他工作人员发送/接收1 GB数据,这对每个工作人员需要72 Gbps全双工网络容量,这是不切实际的.

更现实的是,每个工作人员可以拥有10 Gbps的网络容量.通过使用分割8台计算机的参数服务器来防止网络瓶颈.每个工人机器与每个参数机器通信1/8参数.