Как создать тензорную переменную на главном рабочем с хороводом тензорного потока?

Мне нужна скалярная переменная, чтобы что-то посчитать. В режиме сервера параметров я создал его на первом узле ps, и все рабочие могут запустить его для обновления. Он работает нормально.

      with tf.device('/job:ps/task:0/cpu:0'):
  var_for_count = tf.get_variable('count_variable', (), tf.int32, initializer=tf.zeros_initializer)
  add_op = var_for_count.assign_add(1, use_locking=True)

В режиме хоровода существуют только рабочие узлы. Итак, я создал скалярную переменную только для главного работника и ожидал, что все работники также смогут использоватьadd_opчтобы обновить его вот так.

      with tf.device('/job:worker/task:0/cpu:0'):
  var_for_count = tf.get_variable('count_variable', (), tf.int32, initializer=tf.zeros_initializer)
  add_op = var_for_count.assign_add(1, use_locking=True)

Однако это вызвало ошибку.

      tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation count_variable: node count_variable was explicitly assigned to /job:worker/task:0/device:CPU:0 but available devices are [ /job:localhost/replica:0/task:0/device:CPU:0, /job:localhost/replica:0/task:0/device:GPU:0]

0 ответов

Другие вопросы по тегам