Краткая версия: Нельзя ли хранить переменные в одном из рабочих и не использовать серверы параметров?В чем причина использования сервера параметров в распределенном обучении с тензорным потоком?
Длинная версия: Я хочу реализовать синхронное распределенное обучение нейронной сети в тензорном потоке. Я хочу, чтобы у каждого работника была полная копия модели во время обучения.
Я читал distributed tensorflow tutorial и code of distributed training imagenet и не понял, зачем нам нужны серверы параметров.
Я вижу, что они используются для хранения значений переменных, а replica_device_setter заботится о равномерном распределении переменных между серверами параметров (возможно, это делает что-то еще, я не смог полностью понять код).
Вопрос в том, почему мы не используем одного из рабочих для хранения переменных? Смогу ли я добиться того, что если я использую
with tf.device('/job:worker/task:0/cpu:0'):
вместо
with tf.device(tf.train.replica_device_setter(cluster=cluster_spec)):
для Variaibles? Если это работает, это недостаток по сравнению с решением с серверами параметров?