Tensorflow distribuido: la diferencia entre la replicación en gráfico y la replicación entre gráfico

Me confundí acerca de los dos conceptos:In-graph replication yBetween-graph replication al leer elEntrenamiento replicado en el How-to oficial de tensorflow.

Se dice en el enlace de arriba que

Replicación en el gráfico. En este enfoque, el cliente crea un tf.Graph único que contiene un conjunto de parámetros (en tf. Nodos variables anclados a / job: ps); ...

¿Esto significa que haymúltiple tf.GraphpecadoBetween-graph replication ¿acercarse a, aproximarse? En caso afirmativo, ¿dónde están los códigos correspondientes en los ejemplos proporcionados?

Si bien ya hay unBetween-graph replication ejemplo en el enlace anterior, ¿alguien podría proporcionar unIn-graph replication implementación (pseudocódigo está bien) y resaltar sus principales diferencias deBetween-graph replication?

¡Gracias por adelantado!

Edit_1: más preguntas

¡Muchas gracias por sus explicaciones detalladas y el código esencial @mrry @YaroslavBulatov! Después de buscar sus respuestas, tengo las siguientes dos preguntas:

Hay la siguiente declaración enEntrenamiento replicado:

Replicación entre gráficos. En este enfoque, hay un cliente separado para cada / trabajo: tarea del trabajador, típicamente en el mismo proceso que la tarea del trabajador. Cada cliente construye ungráfico similar que contiene los parámetros (anclados a / job: ps como antes de usar tf.train.replica_device_setter () para asignarlos determinísticamente a las mismas tareas); y uncopia única de la parte computacional intensiva del modelo, anclada a la tarea local en / trabajo: trabajador.

Tengo dos subpreguntas relacionadas con las palabras anteriores en negrita.

(A) ¿Por qué decimos que cada cliente construyegráfico similar, pero nomismo gráfico? Me pregunto el gráfico construido en cada cliente en el ejemplo deEntrenamiento replicado debería ser el mismo porque los códigos de construcción del gráfico a continuación se comparten en todosworkers .:

# Build model...

loss = ...

global_step = tf.Variable(0)

(B) ¿No debería sercopias múltiples de la parte computacional del modelo, ya que tenemos múltiplesworkers?

¿El ejemplo enEntrenamiento replicado ¿Admite capacitación en varias máquinas, cada una de las cuales tiene múltiples GPU? Si no, ¿podemos usar simultáneamente ambosIn-graph replication para apoyar la capacitación en múltiples GPU en cada máquina yBetween-graph replication para entrenamiento entre máquinas? Hago esta pregunta porque @mrry indicó que elIn-graph replication es esencialmente igual a la manera utilizada enModelo de ejemplo CIFAR-10 para múltiples GPU.

Respuestas a la pregunta(1)

Su respuesta a la pregunta