2017-02-22 14 views
1

Я следую примеру here, чтобы создать распределенную модель тензорного потока с сервером параметров и n рабочими. У меня нет никакого GPU, все работы распространяется на CPUРаспределенное сохранение Tensorflow не удаляет устройство

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

Cannot assign a device to node 'save_1/RestoreV2_21': 
Could not satisfy explicit device specification 
'/job:ps/task:0/device:CPU:0' because no devices matching that 
specification are registered in this process; available devices: 
/job:localhost/replica:0/task:0/cpu:0 

[[Node: save_1/RestoreV2_21 = RestoreV2[dtypes=[DT_INT32], 
_device="/job:ps/task:0/device:CPU:0"](save_1/Const, 
save_1/RestoreV2_21/tensor_names, save_1/RestoreV2_21/shape_and_slices)]] 

I пробовал:

server = tf.train.Server(cluster, 
         job_name=self.calib.params['job_name'], 
         task_index=self.calib.params['task_index'], 
         config=tf.ConfigProto(allow_soft_placement=True) 

Я использую супервизора:

sv = tf.train.Supervisor(
         is_chief=is_chief, 
         ...) 

и создание мой Sesion следующим образом:

sess = sv.prepare_or_wait_for_session(server.target) 

, но я все еще имею точно такую ​​же ошибку

ответ

3

Эта строка в сообщении об ошибке:

available devices: /job:localhost/replica:0/task:0/cpu:0 

... говорит о том, что ваш tf.Session не подключен к созданный вами tf.train.Server. В частности, представляется локальным (или «прямым») сеансом, который может обращаться только к устройствам в локальном процессе.

Чтобы устранить эту проблему, при создании сеанса перейдите в инициализатор server.target. Например, в зависимости от того, какой API вы используете для создания сеанса, вы можете использовать один из следующих вариантов:

# Creating a session explicitly. 
with tf.Session(server.target) as sess: 
    # ... 

# Using a `tf.train.Supervisor` called `sv`. 
with sv.managed_session(server.target): 
    # ... 

# Using a `tf.train.MonitoredTrainingSession`. 
with tf.train.MonitoredTrainingSession(server.target): 
    # ... 
+0

спасибо. Я создаю сессию, как вы говорите. Я добавляю его в вопрос – volatile

+0

Я обновил вопрос, чтобы понять, что я уже делаю это при создании сеанса – volatile

 Смежные вопросы

  • Нет связанных вопросов^_^