Я запутался в двух концепциях: 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) Почему мы говорим, что каждый клиент строит похожий граф, но не тот же граф? Интересно, что граф построен в каждом клиенте в примере Реплицированное обучение должны быть одинаковыми, потому что приведенные ниже схемы построения графика разделяются во всех
workers.:# 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 для нескольких графических процессоров.