Fluxo tensor distribuído: a diferença entre replicação no gráfico e replicação entre gráficos

Fiquei confuso sobre os dois conceitos:In-graph replication eBetween-graph replication ao ler oTreinamento replicado no tutorial oficial do tensorflow.

Dizem no link acima que

Replicação no gráfico. Nessa abordagem, o cliente cria um único tf.Graph que contém um conjunto de parâmetros (em tf.Nós variáveis fixados em / job: ps); ...

Isso significa que existemmúltiplo tf.GraphpecadoBetween-graph replication aproximação? Se sim, onde estão os códigos correspondentes nos exemplos fornecidos?

Embora já exista umBetween-graph replication exemplo no link acima, alguém poderia fornecer umaIn-graph replication implementação (pseudo-código é bom) e destaca suas principais diferençasBetween-graph replication?

Desde já, obrigado!

Edit_1: mais perguntas

Muito obrigado pelas explicações detalhadas e código de essência @mrry @YaroslavBulatov! Depois de analisar suas respostas, tenho as duas perguntas a seguir:

Há a seguinte declaração emTreinamento replicado:

Replicação entre gráficos. Nessa abordagem, há um cliente separado para cada tarefa / job: worker, normalmente no mesmo processo que a tarefa do worker. Cada cliente cria umgráfico semelhante contendo os parâmetros (fixados em / job: ps como antes de usar tf.train.replica_device_setter () para mapeá-los deterministicamente para as mesmas tarefas); e umcópia única da parte intensiva em computação do modelo, fixada na tarefa local em / job: worker.

Tenho duas sub-perguntas relacionadas às palavras acima em negrito.

(A) Por que dizemos que cada cliente criagráfico semelhante, mas nãomesmo gráfico? Gostaria de saber o gráfico construído em cada cliente no exemplo deTreinamento replicado deve ser o mesmo porque os códigos de construção do gráfico abaixo são compartilhados em todosworkers .:

# Build model...

loss = ...

global_step = tf.Variable(0)

(B) Não deveria servárias cópias de parte intensiva em computação do modelo, já que temos váriosworkers?

O exemplo emTreinamento replicado oferece suporte ao treinamento em várias máquinas, cada uma com várias GPUs? Caso contrário, podemos usar simultaneamente os doisIn-graph replication para dar suporte ao treinamento em várias GPUs em cada máquina eBetween-graph replication para treinamento entre máquinas? Eu faço essa pergunta porque @mrry indicou que oIn-graph replication é essencialmente o mesmo da maneira usada emModelo de exemplo CIFAR-10 para várias GPUs.

questionAnswers(1)

yourAnswerToTheQuestion