2016-06-17 7 views
1

tf.Session()은 이 메모리에로드되는 동안 프로세스를 포크 한 후 시스템의 동작을 알 수 없다는 것을 의미합니다.TensorFlow로드 후 파이썬 프로세스 포크

여러 프로세스간에 여러 장치 (단일 시스템)를 공유하는 데는 어떤 문제가 있습니까?

답변

1

여러 프로세스간에 TensorFlow 런타임을 공유하는 표준 방법은 단일 컴퓨터에서도 작동하는 distributed TensorFlow support을 사용하는 것입니다.

는 하나 개의 프로세스에서 다음 코드를 실행하여 서버를 시작할 수 있습니다

import tensorflow as tf 
server = tf.train.Server.create_local_server() 
print server.target # for other processes to connect 
server.join() 

이 프로세스는 기본적으로 시스템에있는 모든 장치를 소유합니다.

sess = tf.Session("grpc://localhost:...") # Use value of `server.target`. 

이 세션은 그냥 프로세스 세션처럼 사용할 수 있습니다 :

다른 프로세스에서는 서버에 연결 tf.Session 개체를 만들 수 있습니다.

+0

답변 해 주셔서 감사합니다. 한 쪽 질문 : 모든 프로세스가 서로의 포크가되고 TF (즉, 쿠다) 컨텍스트가 그들 사이에서 공유되기 때문에 이것은 여전히 ​​파이썬 내장 '다중 처리'라이브러리에서 작동하지 않을 것입니다. 내가 이것에 맞습니까? – MBZ

+0

예, CUDA 드라이버를 초기화하기 때문에 서버를 만들기 전에 * 하위 프로세스 *를 포크하는 것이주의해야합니다. – mrry

+0

다시 한 번 감사드립니다. server_를 작성함으로써'tf.train.Server.create_local_server()'를 의미하거나 단순히'import tensorflow'는 CUDA 드라이버를 초기화합니까? – MBZ