2016-10-31 9 views
0

ノードを送信し、ノードをテンソルフローGraphDefに送信するか、python APIを使用することができますか?テンソルフローGraphDefのSendノードとReceiveノードを確認できますか?

私は、次のコード

import tensorflow as tf 

with tf.device("/gpu:0"): 
    x = tf.constant(1.0) 
with tf.device("/gpu:1"): 
    y = tf.constant(2.0) 
with tf.device("/cpu:0"): 
    sum = tf.add(x, y) 

graph_def = tf.get_default_graph().as_graph_def() 
print(graph_def) 

を試してみてください。しかしgraph_defには、送信/ recvのノードがありません。グラフに送信/受信ノードが追加されていますか?xycpu

答えて

1

tf.Session.run() ...の呼び出しで初めてグラフを実行しようとすると、sendノードとrecvノードがグラフに追加されます。実際に追加されるsendノードとrecvノードのセットは、あなたがその呼び出しでフィードしてフェッチする特定のテンソルに

次のようにあなたは、Session.run()コールにtf.RunOptions(output_partition_graphs=True)を渡すことによって、送信とrecvのノードを含む各デバイス上で実行正確なグラフを、見ることができます:

options = tf.RunOptions(output_partition_graphs=True) 
metadata = tf.RunMetadata() 

sess.run(..., options=options, metadata=metadata) 

for partition_graph_def in metadata.partition_graphs: 
    print partition_graph_def # Contains all the nodes that ran on a single device. 
+0

それはこれらの2つのノードがどのように行う設定を、分散型だ場合テンソルを渡す? gRPCによって? thx –

+1

はい、分散設定のマシン間のデフォルト転送ではgRPCを使用してテンソルの内容を転送します。ただし、MPIおよびRDMA動詞を含む他のトランスポートも利用できます。ここのアーキテクチャーのdocには、これがどのように動作するかについての概要があります。https://www.tensorflow.org/extend/architecture#worker_service – mrry

+0

私は今、ランタイムに配布されたTensorFlowがprotobuf情報をどのように渡すのかについて詳しく調べています。 'rendezvous_mgr'、' rpc_rendezvous_mgr'と 'base_rendezvous_mgr'の違いは何ですか? –

関連する問題