2016-06-17 1 views

答えて

1

複数のプロセス間でTensorFlowランタイムを共有する標準的な方法は、1台のマシンでも動作する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(すなわちcuda)コンテキストがそれらの間で共有されるため、これはPython組み込みの 'マルチプロセッシング'ライブラリではうまくいかないでしょうか?私はこれについて正しいですか? – MBZ

+0

はい、CUDAドライバを初期化するため、サーバーを作成する前に*サブプロセスをforkするように注意する必要があります。 – mrry

+0

もう一度ありがとう。 'tf.train.Server.create_local_server()'または単に 'import tensorflow'を使うとCUDAドライバが初期化されます。 – MBZ

関連する問題