1
tf.Session()
はがメモリにロードされている間にプロセスをフォークした後のシステムの動作は不明です。TensorFlowの読み込み後にPythonプロセスをフォークする
複数のプロセス間で複数のデバイスを(1台のマシン上で)共有するための回避策はありますか?
tf.Session()
はがメモリにロードされている間にプロセスをフォークした後のシステムの動作は不明です。TensorFlowの読み込み後にPythonプロセスをフォークする
複数のプロセス間で複数のデバイスを(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
オブジェクトを作成することができます。
回答ありがとうございます。これはまだすべてのプロセスが互いにフォークし、TF(すなわちcuda)コンテキストがそれらの間で共有されるため、これはPython組み込みの 'マルチプロセッシング'ライブラリではうまくいかないでしょうか?私はこれについて正しいですか? – MBZ
はい、CUDAドライバを初期化するため、サーバーを作成する前に*サブプロセスをforkするように注意する必要があります。 – mrry
もう一度ありがとう。 'tf.train.Server.create_local_server()'または単に 'import tensorflow'を使うとCUDAドライバが初期化されます。 – MBZ