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