分布式TensorFlow:在低级别,工作人员和ps在培训期间如何相互作用?

时间:2018-03-08 09:37:35

标签: python tensorflow distributed

我正在研究分布式TensorFlow如何处理其分布式计算以复制其架构。我需要在低级别了解工作人员完成的操作以及PS完成的操作,我不能仅仅依赖python API的正确性。 Here my previous question on SO

  

PS(参数服务器)在内存中保存权重(即   参数)并接收渐变,运行我写的更新步骤   上面的代码。它每次从a接收渐变时都会这样做   工人。

     另一方面,一名工人查看当前的价值   PS中的权重,在本地复制它,运行前进和a   在一批数据上向后传递网络并获得新的数据   渐变,然后发送回PS。

所以看起来工人计算梯度然后将梯度发送到PS,应用它们来更新权重。但是,如果我查看我在Distributed TensorFlow Doc中找到的代码,我看到在工作代码中有一个调用方法minim()

if FLAGS.job_name == "ps":
    server.join()
elif FLAGS.job_name == "worker":

    # Assigns ops to the local worker by default.
    with tf.device(tf.train.replica_device_setter(
        worker_device="/job:worker/task:%d" % FLAGS.task_index,
        cluster=cluster)):

      # Build model...
      loss = ...
      global_step = tf.contrib.framework.get_or_create_global_step()

      train_op = tf.train.AdagradOptimizer(0.01).minimize(
          loss, global_step=global_step) # < - - - - - - - - - HERE 

如果我们在Python API中查看方法的源代码最小化,我们看到它调用了compute_gradients()和apply_gradients()。

def minimize(self, loss, global_step=None, var_list=None,
               gate_gradients=GATE_OP, aggregation_method=None,
               colocate_gradients_with_ops=False, name=None,
               grad_loss=None):

    grads_and_vars = self.compute_gradients(
        loss, var_list=var_list, gate_gradients=gate_gradients,
        aggregation_method=aggregation_method,
        colocate_gradients_with_ops=colocate_gradients_with_ops,
        grad_loss=grad_loss)

    vars_with_grad = [v for g, v in grads_and_vars if g is not None]
    if not vars_with_grad:
      raise ValueError(
          "No gradients provided for any variable, check your graph for ops"
          " that do not support gradients, between variables %s and loss %s." %
          ([str(v) for _, v in grads_and_vars], loss))

    return self.apply_gradients(grads_and_vars, global_step=global_step,
                                name=name)

似乎工作人员执行计算和应用操作。那么工人发送给PS的信息是什么?他们可能通过应用渐变来发送已更新的权重?如果PS收到所有权重,它如何合并它们?

0 个答案:

没有答案