Сервер параметров Tensorflow не запускается
Я пытаюсь распространить учебное задание, используя Оценщик Tensorflows и функцию train_and_evaluate. При настройке одного узла обучение и оценка уже работают, как и ожидалось.
(Детали к обучающему заданию и определение оценщиков не должны быть релевантными, но если кто-то заинтересован, я уже опубликовал детали для установки в предыдущем посте)
Однако в распределенном режиме я столкнулся с проблемой, заключающейся в том, что процесс, выполняющий задание сервера параметров, не запустится должным образом и станет безответственным после запуска. Это верно даже при минимальной настройке следующим образом
def main():
cluster = tf.train.ClusterSpec({"ps": ["localhost:2222"]})
server = tf.train.Server(cluster, job_name="ps", task_index=0)
server.join()
if __name__ == '__main__':
main()
Выполнение сценария не выдает ошибок, и в соответствии с журналом сервер должен быть запущен на localhost:2222
$ python custom_estimator.py
2018-07-26 18:38:15.347685: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:883] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-07-26 18:38:15.348352: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1392] Found device 0 with properties:
name: GeForce GTX 1060 major: 6 minor: 1 memoryClockRate(GHz): 1.6705
pciBusID: 0000:01:00.0
totalMemory: 5.93GiB freeMemory: 5.42GiB
2018-07-26 18:38:15.348382: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1471] Adding visible gpu devices: 0
2018-07-26 18:38:15.538124: I tensorflow/core/common_runtime/gpu/gpu_device.cc:952] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-07-26 18:38:15.538151: I tensorflow/core/common_runtime/gpu/gpu_device.cc:958] 0
2018-07-26 18:38:15.538175: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: N
2018-07-26 18:38:15.538373: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1084] Created TensorFlow device (/job:ps/replica:0/task:0/device:GPU:0 with 5193 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060, pci bus id: 0000:01:00.0, compute capability: 6.1)
2018-07-26 18:38:15.587481: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:2222}
2018-07-26 18:38:15.588413: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:369] Started server with target: grpc://localhost:2222
Однако ни один порт не связан с портом 2222, и процесс становится безответственным (то есть он не может быть остановлен с помощью KeyboardInterrupt
)
$ netstat | grep 2222
# empty result
Запуск рабочего или главного узла, как описано в моем предыдущем посте, привязывает порт и запускает KeyboardInterrupt
способный процесс.
$ netstat | grep 2222
tcp6 0 0 simon:2222 localhost:34216 ESTABLISHED
tcp6 0 0 localhost:34216 simon:2222 ESTABLISHED
Кто-нибудь имеет хорошее предположение, что здесь происходит не так? Так как я не получаю никаких ошибок, трудно дать больше информации.
Моя системная информация выглядит следующим образом
Tensorflow 1.8 (скомпилировано из исходного кода)
CUDA 9.0
CUDNN 7.1.3
GPU: GeForce GTX 1060
Python 3.5.2