Почему трассировка временной шкалы распределенного тензорного потока помечает операцию QueueDequeue как операцию PS?

Я запускаю распределенную начальную модель tensorflow на кластере машин AWS ubuntu и вывожу трассировку временной шкалы через

# Track statistics of the run using Timeline
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()

# Run
loss_value, step = sess.run([train_op, global_step], options=run_options, run_metadata=run_metadata)

# Create timeline and write it to a json file
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline%d.json' % FLAGS.task_id, 'w') as f:
f.write(ctf)

Когда я просматриваю временную шкалу, сгенерированную рабочей машиной, я вижу следующее: Трассировка временной шкалы для рабочей машины

Обратите внимание на операцию QueueDequeue справа, которая, как указано на временной шкале, является частью /job:ps/replica:0/task:0/cpu:0, сервера параметров.

Поскольку ScatterUpdate находится сразу после QueueDequeue, как показано на изображении, я считаю, что эта операция соответствует операции оптимизатора реплик синхронизации, когда рабочий процесс пытается удалить токен из очереди и выполнить обновление разброса: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/training/sync_replicas_optimizer.py#L412

Но если это так, то эту операцию должен выполнять работник, а не сервер параметров. Почему временная шкала говорит, что сервер параметров выполняет это?

Я использую tensorflow 0.11, только процессор.


person user2454808    schedule 03.10.2016    source источник


Ответы (1)


Похоже, это правильно и что операция удаления из очереди выполняется на PS. Просто рабочий процесс зависит от этой операции, а это означает, что рабочий процесс, по сути, ожидает успешного удаления из очереди.

person user2454808    schedule 27.10.2016