2016-11-29 10 views
0

Я следую примеру here, чтобы узнать распределенный TF на MNIST. Я изменил кластерную конфигурацию для:Распределенный тензор не работает с простым примером

parameter_servers = ["1.2.3.4:2222"] 
workers = [ "1.2.3.4:2222", "5.6.7.8:2222"] 

1.2.3.4 и 5.6.7.8 просто представление моих двух узлов. Они не являются реальным IP-адресом. Весь сценарий назван example.py

На 1.2.3.4, я побежал: python example.py --job_name=ps --task_index=0 .Затем на той же машине, я побежал python example --job_name=worker --task_index=0 в другом терминале. Похоже, это просто ждет.

5,6,7,8, я бежал python example.py --job_name=worker --taks_index=1. После этого я сразу получаю следующее сообщение об ошибке на 5.6.7.8:

tensorflow.python.framework.errors.UnavailableError: {"created":"@1480458325.580095889","description":"EOF","file":"external/grpc/src/core/lib/iomgr/tcp_posix.c","file_line":235,"grpc_status":14} 
I tensorflow/core/distributed_runtime/master_session.cc:845] DeregisterGraph error: Aborted: Graph handle is not found: . Possibly, this worker just restarted. 

И

tensorflow/core/distributed_runtime/graph_mgr.cc:55] 'unit.device' Must be non NULL 
Aborted (core dumped) 

на 1.2.3.4

Это потому, что я бегу как сервер параметров и рабочего на той же машине? У меня не более двух узлов, так как я могу это исправить?

+0

Вот самостоятельный пример запуска 2 рабочих на одном узле, можете ли вы увидеть, работает ли это для вас? https://gist.github.com/yaroslavvb/1124bb02a9fd4abce3d86caf2f950cb2 –

+0

@YaroslavBulatov: Он работает, но я получаю CUDA_ERROR_OUT_OF_MEMORY на сервере GPU (с 1 графическим процессором). – user3813674

+0

Вам нужно сделать «экспорт CUDA_VISIBLE_DEVICES =» для одного из процессов, по умолчанию он захватывает всю память GPU. С этим набором не должно быть проблем с запуском сервера параметров и рабочего на одном компьютере. –

ответ

0

Таким образом, после дня, когда я, наконец, получил исправление:

  1. делать, как Ярослав предложить для сервера пар, так что работник не работает из памяти GPU
  2. Пар сервера и работник не может работать на том же порту (как исходный пост), поэтому измените workers = [ "1.2.3.4:2222", "5.6.7.8:2222"] на workers = [ "1.2.3.4:2223", "5.6.7.8:2222"]. Обратите внимание на изменение номера порта.

Это все, что нужно сделать.