Я запутался в двух концепциях: In-graph replication
и Between-graph replication
при чтении реплицированного обучения в официальном How-to.
-
В приведенной выше ссылке сказано, что
Репликация в графе.. В этом подходе клиент строит один tf.Graph, содержащий один набор параметров (в tf.Variable node прикрепленный к /job: ps);...
Означает ли это, что существует multiple
tf.Graph
в подходеBetween-graph replication
? Если да, то где соответствующие коды в приведенные примеры? -
Хотя в приведенной выше ссылке уже есть пример
Between-graph replication
, может ли кто-нибудь предоставитьIn-graph replication
реализация (псевдокод в порядке) и выделить ее основные отличия отBetween-graph replication
?Спасибо заранее!
Edit_1: больше вопросов
Большое спасибо за подробные объяснения и gist-код @mrry @YaroslavBulatov! После просмотра ваши ответы, у меня есть следующие два вопроса:
-
Репликация между графами.. В этом подходе есть отдельный клиент для каждой задачи/работы: рабочий, обычно в том же процессе, что и работника. Каждый клиент создает похожий граф, содержащий параметры (привязанные к /job: ps, как и раньше) tf.train.replica_device_setter(), чтобы определить их детерминистически те же задачи); и одиночная копия вычислительно-интенсивной части модель, привязанная к локальной задаче в /job: worker.
У меня есть два дополнительных вопроса, связанных с вышеприведенными словами, выделенными жирным шрифтом.
(A) Почему мы говорим, что каждый клиент строит похожий граф, но не тот же граф? Интересно, что граф построен в каждом клиенте в примере Реплицированное обучение должны быть одинаковыми, потому что приведенные ниже схемы построения графика разделяются во всех
worker
s.:# Build model...
loss = ...
global_step = tf.Variable(0)
(B) Не должно быть нескольких копий вычислительно-интенсивной части модель, так как мы имеем несколько
workers
? -
Представлен ли пример в Replicated training обучение на нескольких машинах, каждый из которых имеет несколько графических процессоров? Если нет, можем ли мы используйте одновременно
In-graph replication
для поддержки обучения по нескольким GPU на каждой машине иBetween-graph replication
для кросс-машинное обучение? Я задаю этот вопрос, потому что @mrry указал, чтоIn-graph replication
по существу тот же путь используется в примерная модель CIFAR-10 для нескольких графических процессоров.